From 6cea35547e773e5cf0210bdb3f9e015ced2f7b36 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Wed, 28 Mar 2007 06:02:11 +0000 Subject: [PATCH] merge r5711 from trunk --- openbox/action.c | 20 ++++++++++---------- openbox/startupnotify.c | 23 ++++++++--------------- openbox/startupnotify.h | 6 +++--- 3 files changed, 21 insertions(+), 28 deletions(-) diff --git a/openbox/action.c b/openbox/action.c index 796f259a..9022333a 100644 --- a/openbox/action.c +++ b/openbox/action.c @@ -1103,17 +1103,18 @@ void action_execute(union ActionData *data) cmd, e->message); g_error_free(e); } else if (data->execute.startupnotify) { - gchar **env, *program; + gchar *program; program = g_path_get_basename(argv[0]); - env = sn_get_spawn_environment(program, - data->execute.name, - data->execute.icon_name, - /* launch it on the current - desktop */ - screen_desktop, - data->execute.any.time); - if (!g_spawn_async(NULL, argv, env, G_SPAWN_SEARCH_PATH | + /* sets up the environment */ + sn_setup_spawn_environment(program, + data->execute.name, + data->execute.icon_name, + /* launch it on the current + desktop */ + screen_desktop, + data->execute.any.time); + if (!g_spawn_async(NULL, argv, NULL, G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD, NULL, NULL, NULL, &e)) { g_warning("failed to execute '%s': %s", @@ -1121,7 +1122,6 @@ void action_execute(union ActionData *data) g_error_free(e); sn_spawn_cancel(); } - g_strfreev(env); g_free(program); g_strfreev(argv); } else { diff --git a/openbox/startupnotify.c b/openbox/startupnotify.c index b9bbab72..4c2672c1 100644 --- a/openbox/startupnotify.c +++ b/openbox/startupnotify.c @@ -20,7 +20,7 @@ #include "startupnotify.h" #include "gettext.h" -extern gchar **environ; +#include #ifndef USE_LIBSN @@ -32,8 +32,8 @@ Time sn_app_started(const gchar *id, const gchar *wmclass) return CurrentTime; } gboolean sn_get_desktop(gchar *id, guint *desktop) { return FALSE; } -gchar **sn_get_spawn_environment(char *program, char *name, - char *icon_name, gint desktop, Time time) +void sn_setup_spawn_environment(gchar *program, gchar *name, + gchar *icon_name, gint desktop, Time time) { return g_strdupv(environ); } @@ -226,12 +226,11 @@ static gboolean sn_launch_wait_timeout(gpointer data) return FALSE; /* don't repeat */ } -gchar **sn_get_spawn_environment(char *program, char *name, - char *icon_name, gint desktop, - Time time) +void sn_setup_spawn_environment(gchar *program, gchar *name, + gchar *icon_name, gint desktop, + Time time) { - gchar **env, *desc; - guint len; + gchar *desc; const char *id; desc = g_strdup_printf(_("Running %s\n"), program); @@ -256,15 +255,9 @@ gchar **sn_get_spawn_environment(char *program, char *name, sn_launch_wait_timeout, sn_launcher, (GDestroyNotify)sn_launcher_context_unref); - env = g_strdupv(environ); - len = g_strv_length(env); /* includes last null */ - env = g_renew(gchar*, env, ++len); /* add one spot */ - env[len-2] = g_strdup_printf("DESKTOP_STARTUP_ID=%s", id); - env[len-1] = NULL; + setenv("DESKTOP_STARTUP_ID", id, TRUE); g_free(desc); - - return env; } void sn_spawn_cancel() diff --git a/openbox/startupnotify.h b/openbox/startupnotify.h index 87b17f90..746b786e 100644 --- a/openbox/startupnotify.h +++ b/openbox/startupnotify.h @@ -35,9 +35,9 @@ Time sn_app_started(const gchar *id, const gchar *wmclass); gboolean sn_get_desktop(gchar *id, guint *desktop); /* Get the environment to run the program in, with startup notification */ -gchar **sn_get_spawn_environment(char *program, char *name, - char *icon_name, gint desktop, - Time time); +void sn_setup_spawn_environment(gchar *program, gchar *name, + gchar *icon_name, gint desktop, + Time time); /* Tell startup notification we're not actually running the program we told it we were -- 2.34.1