Fixed spawning with root-manager.
This commit is contained in:
parent
f5d986cff6
commit
2c8e9b7ccd
2 changed files with 13 additions and 2 deletions
|
@ -308,17 +308,25 @@ start_capplet_through_root_manager (GnomeDesktopEntry *gde)
|
||||||
}
|
}
|
||||||
else if (pid == 0) {
|
else if (pid == 0) {
|
||||||
char *arg[2];
|
char *arg[2];
|
||||||
|
int i;
|
||||||
|
|
||||||
dup2 (pipe_fd[0], 0);
|
dup2 (pipe_fd[0], 0);
|
||||||
|
|
||||||
|
for (i = 3; i < OPEN_MAX; i++) close(i);
|
||||||
|
|
||||||
arg[0] = gnome_is_program_in_path ("root-manager");
|
arg[0] = gnome_is_program_in_path ("root-manager");
|
||||||
arg[1] = NULL;
|
arg[1] = NULL;
|
||||||
execv (arg[0], arg);
|
execv (arg[0], arg);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
output = fdopen(pipe_fd[1], "a");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cmdline = g_strjoinv (" ", gde->exec + 1);
|
cmdline = g_strjoinv (" ", gde->exec + 1);
|
||||||
fprintf (output, "%s\n", cmdline);
|
fprintf (output, "%s\n", cmdline);
|
||||||
|
fflush (output);
|
||||||
g_free (cmdline);
|
g_free (cmdline);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -42,13 +42,14 @@ main (int argc, char **argv)
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
|
|
||||||
if (argc > 1) {
|
if (argc > 1) {
|
||||||
execv (gnome_is_program_in_path (args[1]), argv + 1);
|
execv (gnome_is_program_in_path (argv[1]), argv + 1);
|
||||||
g_error ("%s", g_strerror (errno));
|
g_error ("%s", g_strerror (errno));
|
||||||
}
|
}
|
||||||
|
|
||||||
buffer = g_new (char, buf_size);
|
buffer = g_new (char, buf_size);
|
||||||
|
|
||||||
while (1) {
|
while (!feof(stdin)) {
|
||||||
|
buffer[0] = buffer[1] = 0;
|
||||||
tmp = buffer;
|
tmp = buffer;
|
||||||
fgets (tmp, 1023, stdin);
|
fgets (tmp, 1023, stdin);
|
||||||
|
|
||||||
|
@ -59,6 +60,8 @@ main (int argc, char **argv)
|
||||||
fgets (tmp, 1023, stdin);
|
fgets (tmp, 1023, stdin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!strlen(buffer)) continue;
|
||||||
|
|
||||||
pid = fork ();
|
pid = fork ();
|
||||||
|
|
||||||
if (pid == (pid_t) -1) {
|
if (pid == (pid_t) -1) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue