]> Dogcows Code - chaz/openbox/commitdiff
make a copy of the argc and argv instead of modifying the real ones
authorDana Jansens <danakj@orodu.net>
Sat, 3 Mar 2007 03:42:28 +0000 (03:42 +0000)
committerDana Jansens <danakj@orodu.net>
Sat, 3 Mar 2007 03:42:28 +0000 (03:42 +0000)
this means that when openbox is restared it doesn't lose it's SM related command line args, they get passed to the new openbox same as they were passed to the one exiting.

openbox/session.c
openbox/session.h

index 54ce34ed4b64544c723f1bae50e0bf215a6b3f35..fa9ce48459ca6afa68fc8f9c9ad545c9d238aade 100644 (file)
@@ -25,7 +25,7 @@
 
 GList *session_saved_state;
 
-void session_startup(gint *argc, gchar ***argv) {}
+void session_startup(gint argc, gchar **argv) {}
 void session_shutdown() {}
 GList* session_state_find(ObClient *c) { return NULL; }
 gboolean session_state_cmp(ObSessionState *s, ObClient *c) { return FALSE; }
@@ -142,17 +142,25 @@ static void parse_args(gint *argc, gchar ***argv)
     }
 }
 
-void session_startup(gint *argc, gchar ***argv)
+void session_startup(gint argc, gchar **argv)
 {
 #define SM_ERR_LEN 1024
 
     SmcCallbacks cb;
     gchar sm_err[SM_ERR_LEN];
+    gint i;
+
+    sm_argc = argc;
+    sm_argv = g_new(gchar*, argc);
+    for (i = 0; i < argc; ++i)
+        sm_argv[i] = argv[i];
 
-    parse_args(argc, argv);
+    parse_args(&sm_argc, &sm_argv);
 
-    if (sm_disable)
+    if (sm_disable) {
+        g_free(sm_argv);
         return;
+    }
 
     sm_sessions_path = g_build_filename(parse_xdg_data_home_path(),
                                         "openbox", "sessions", NULL);
@@ -174,9 +182,6 @@ void session_startup(gint *argc, gchar ***argv)
         g_free(filename);
     }
 
-    sm_argc = *argc;
-    sm_argv = *argv;
-
     cb.save_yourself.callback = sm_save_yourself;
     cb.save_yourself.client_data = NULL;
 
@@ -257,6 +262,7 @@ void session_shutdown()
     g_free(sm_sessions_path);
     g_free(save_file);
     g_free(sm_id);
+    g_free(sm_argv);
 
     if (sm_conn) {
         SmPropValue val_hint;
index 680f45f00a812c5d4379b087c47f2aae7bf8b709..c31463373ef4fc4f258fcdba35eb8878a0a1a9a5 100644 (file)
@@ -38,7 +38,7 @@ struct _ObSessionState {
 
 extern GList *session_saved_state;
 
-void session_startup(gint *argc, gchar ***argv);
+void session_startup(gint argc, gchar **argv);
 void session_shutdown();
 
 GList* session_state_find(struct _ObClient *c);
This page took 0.025993 seconds and 4 git commands to generate.