- SmProp prop_cmd = { SmCloneCommand, "SmLISTofARRAY8", 1, };
- SmProp prop_res = { SmRestartCommand, "SmLISTofARRAY8", 1, };
- SmProp prop_prog = { SmProgram, "SmARRAY8", 1, };
- SmProp prop_uid = { SmUserID, "SmARRAY8", 1, };
- SmProp *props[4];
-
- val_cmd.value = argv[0];
- val_cmd.length = strlen(argv[0]);
- val_res.value = argv[0];
- val_res.length = strlen(argv[0]); /* XXX -id foo */
+ SmPropValue val_hint;
+ SmPropValue val_pri;
+ SmPropValue val_pid;
+ SmProp prop_cmd = { SmCloneCommand, SmLISTofARRAY8, 1, };
+ SmProp prop_res = { SmRestartCommand, SmLISTofARRAY8, };
+ SmProp prop_prog = { SmProgram, SmARRAY8, 1, };
+ SmProp prop_uid = { SmUserID, SmARRAY8, 1, };
+ SmProp prop_hint = { SmRestartStyleHint, SmCARD8, 1, };
+ SmProp prop_pid = { SmProcessID, SmARRAY8, 1, };
+ SmProp prop_pri = { "_GSM_Priority", SmCARD8, 1, };
+ SmProp *props[7];
+ gulong hint, pri;
+ gchar pid[32];
+ gint i;
+ gboolean has_id;
+
+ for (i = 1; i < argc - 1; ++i)
+ if (strcmp(argv[i], "-sm-client-id") == 0)
+ break;
+ has_id = (i < argc - 1);
+
+ prop_cmd.vals = g_new(SmPropValue, (has_id ? argc-2 : argc));
+ prop_cmd.num_vals = (has_id ? argc-2 : argc);
+ for (i = 0; i < argc; ++i) {
+ if (strcmp (argv[i], "-sm-client-id") == 0) {
+ ++i; /* skip the next as well */
+ } else {
+ prop_cmd.vals[i].value = argv[i];
+ prop_cmd.vals[i].length = strlen(argv[i]);
+ }
+ }
+
+ prop_res.vals = g_new(SmPropValue, (has_id ? argc : argc+2));
+ prop_res.num_vals = (has_id ? argc : argc+2);
+ for (i = 0; i < argc; ++i) {
+ prop_res.vals[i].value = argv[i];
+ prop_res.vals[i].length = strlen(argv[i]);
+ }
+ if (!has_id) {
+ prop_res.vals[i].value = "-sm-client-id";
+ prop_res.vals[i++].length = strlen("-sm-client-id");
+ prop_res.vals[i].value = ob_sm_id;
+ prop_res.vals[i++].length = strlen(ob_sm_id);
+ }
+