+static void remove_two_args(int *argc, char ***argv, int index)
+{
+ int i;
+
+ for (i = index; i < index + 2; ++i)
+ (*argv)[i] = (*argv)[i+2];
+ *argc -= 2;
+}
+
+static void parse_args(int *argc, char ***argv)
+{
+ int i;
+
+ for (i = 1; i < *argc; ++i) {
+ if (!strcmp((*argv)[i], "--sm-client-id")) {
+ if (i == *argc - 1) /* no args left */
+ g_printerr(_("--sm-client-id requires an argument\n"));
+ else {
+ sm_id = g_strdup((*argv)[i+1]);
+ remove_two_args(argc, argv, i);
+ ++i;
+ }
+ } else if (!strcmp((*argv)[i], "--sm-save-file")) {
+ if (i == *argc - 1) /* no args left */
+ g_printerr(_("--sm-save-file requires an argument\n"));
+ else {
+ save_file = g_strdup((*argv)[i+1]);
+ remove_two_args(argc, argv, i);
+ ++i;
+ }
+ } else if (!strcmp((*argv)[i], "--sm-disable")) {
+ sm_disable = TRUE;
+ }
+ }
+}
+
+void session_startup(int *argc, char ***argv)