Use g_listenv() and g_getenv() instead of looking at environ directly.
2006-06-12 Tor Lillqvist <tml@novell.com> * app/plug-in/gimpenvirontable.c (gimp_environ_table_populate): Use g_listenv() and g_getenv() instead of looking at environ directly. Fixes breakage on Win32 when any (!) environment variable has a non-ASCII value, as environ is in system codepage, while we want UTF-8.
This commit is contained in:

committed by
Tor Lillqvist

parent
373a3cd27e
commit
2e0f2b8dfc
@ -1,3 +1,11 @@
|
|||||||
|
2006-06-12 Tor Lillqvist <tml@novell.com>
|
||||||
|
|
||||||
|
* app/plug-in/gimpenvirontable.c (gimp_environ_table_populate):
|
||||||
|
Use g_listenv() and g_getenv() instead of looking at environ
|
||||||
|
directly. Fixes breakage on Win32 when any (!) environment
|
||||||
|
variable has a non-ASCII value, as environ is in system codepage,
|
||||||
|
while we want UTF-8.
|
||||||
|
|
||||||
2006-06-12 Sven Neumann <sven@gimp.org>
|
2006-06-12 Sven Neumann <sven@gimp.org>
|
||||||
|
|
||||||
* plug-ins/common/redeye.c (remove_redeye): cleanup, use
|
* plug-ins/common/redeye.c (remove_redeye): cleanup, use
|
||||||
|
@ -46,10 +46,6 @@ struct _GimpEnvironValue
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/* FIXME: check how portable this is */
|
|
||||||
extern char **environ;
|
|
||||||
|
|
||||||
|
|
||||||
static void gimp_environ_table_finalize (GObject *object);
|
static void gimp_environ_table_finalize (GObject *object);
|
||||||
|
|
||||||
static void gimp_environ_table_load_env_file (const GimpDatafileData *file_data,
|
static void gimp_environ_table_load_env_file (const GimpDatafileData *file_data,
|
||||||
@ -301,26 +297,20 @@ gimp_environ_table_legal_name (gchar *name)
|
|||||||
static void
|
static void
|
||||||
gimp_environ_table_populate (GimpEnvironTable *environ_table)
|
gimp_environ_table_populate (GimpEnvironTable *environ_table)
|
||||||
{
|
{
|
||||||
gchar **var = environ;
|
gchar **var = g_listenv ();
|
||||||
gchar *name, *p;
|
|
||||||
GPtrArray *env_array;
|
GPtrArray *env_array;
|
||||||
|
|
||||||
env_array = g_ptr_array_new ();
|
env_array = g_ptr_array_new ();
|
||||||
|
|
||||||
while (*var)
|
while (*var)
|
||||||
{
|
{
|
||||||
p = strchr (*var, '=');
|
/* g_listenv() only returns the names of environment variables
|
||||||
|
* that are correctly specified (name=value) in the environ
|
||||||
|
* array (Unix) or the process environment string table (Win32).
|
||||||
|
*/
|
||||||
|
|
||||||
/* shouldn't happen... but just to be safe... */
|
if (gimp_environ_table_pass_through (environ_table, *var))
|
||||||
if (p)
|
g_ptr_array_add (env_array, g_strconcat (*var, "=", g_getenv (*var), NULL));
|
||||||
{
|
|
||||||
name = g_strndup (*var, p - *var);
|
|
||||||
|
|
||||||
if (gimp_environ_table_pass_through (environ_table, name))
|
|
||||||
g_ptr_array_add (env_array, g_strdup (*var));
|
|
||||||
|
|
||||||
g_free (name);
|
|
||||||
}
|
|
||||||
|
|
||||||
var++;
|
var++;
|
||||||
}
|
}
|
||||||
@ -356,11 +346,12 @@ gimp_environ_table_populate_one (const gchar *name,
|
|||||||
GimpEnvironValue *val,
|
GimpEnvironValue *val,
|
||||||
GPtrArray *env_array)
|
GPtrArray *env_array)
|
||||||
{
|
{
|
||||||
gchar *old, *var = NULL;
|
const gchar *old;
|
||||||
|
gchar *var = NULL;
|
||||||
|
|
||||||
if (val->separator)
|
if (val->separator)
|
||||||
{
|
{
|
||||||
old = getenv (name);
|
old = g_getenv (name);
|
||||||
|
|
||||||
if (old)
|
if (old)
|
||||||
var = g_strconcat (name, "=", val->value, val->separator, old, NULL);
|
var = g_strconcat (name, "=", val->value, val->separator, old, NULL);
|
||||||
|
Reference in New Issue
Block a user