[Xfce4-commits] r29416 - libxfce4ui/trunk/libxfce4ui
Nick Schermer
nick at xfce.org
Sat Jan 31 17:55:05 CET 2009
Author: nick
Date: 2009-01-31 16:55:04 +0000 (Sat, 31 Jan 2009)
New Revision: 29416
Modified:
libxfce4ui/trunk/libxfce4ui/xfce-execute.c
Log:
Use g_listenv and g_getenv here too, to avoid problems
with environ on different platforms.
Modified: libxfce4ui/trunk/libxfce4ui/xfce-execute.c
===================================================================
--- libxfce4ui/trunk/libxfce4ui/xfce-execute.c 2009-01-31 14:00:20 UTC (rev 29415)
+++ libxfce4ui/trunk/libxfce4ui/xfce-execute.c 2009-01-31 16:55:04 UTC (rev 29416)
@@ -240,15 +240,30 @@
if (screen == NULL)
screen = xfce_gdk_screen_get_active (NULL);
- /* use environ when envp is null */
+ /* setup the child environment, without startup id and display */
if (G_LIKELY (envp == NULL))
- envp = environ;
+ {
+ /* use the portable g_listenv, but note that this function only returns the
+ * variable names, not with values, therefore the call to g_getenv */
+ envp = g_listenv ();
+ cenvp = g_new0 (gchar *, g_strv_length (envp) + 3);
+ for (n = n_cenvp = 0; envp[n] != NULL; n++)
+ if (strcmp (envp[n], "DESKTOP_STARTUP_ID") != 0
+ && strcmp (envp[n], "DISPLAY") != 0)
+ cenvp[n_cenvp++] = g_strconcat (envp[n], "=", g_getenv (envp[n]), NULL);
- /* setup the child environment, without startup id and display */
- cenvp = g_new0 (gchar *, g_strv_length (envp) + 3);
- for (n = n_cenvp = 0; envp[n] != NULL; n++)
- if (strncmp (envp[n], "DESKTOP_STARTUP_ID", 18) != 0 && strncmp (envp[n], "DISPLAY", 7) != 0)
- cenvp[n_cenvp++] = g_strdup (envp[n]);
+ /* cleanup */
+ g_strfreev (envp);
+ envp = NULL;
+ }
+ else
+ {
+ cenvp = g_new0 (gchar *, g_strv_length (envp) + 3);
+ for (n = n_cenvp = 0; envp[n] != NULL; n++)
+ if (strncmp (envp[n], "DESKTOP_STARTUP_ID", 18) != 0
+ && strncmp (envp[n], "DISPLAY", 7) != 0)
+ cenvp[n_cenvp++] = g_strdup (envp[n]);
+ }
/* add the real display name */
display_name = gdk_screen_make_display_name (screen);
@@ -284,7 +299,6 @@
}
}
}
-
#endif
/* try to spawn the new process */
More information about the Xfce4-commits
mailing list