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) {
|
||||
char *arg[2];
|
||||
int i;
|
||||
|
||||
dup2 (pipe_fd[0], 0);
|
||||
|
||||
for (i = 3; i < OPEN_MAX; i++) close(i);
|
||||
|
||||
arg[0] = gnome_is_program_in_path ("root-manager");
|
||||
arg[1] = NULL;
|
||||
execv (arg[0], arg);
|
||||
}
|
||||
else
|
||||
{
|
||||
output = fdopen(pipe_fd[1], "a");
|
||||
}
|
||||
}
|
||||
|
||||
cmdline = g_strjoinv (" ", gde->exec + 1);
|
||||
fprintf (output, "%s\n", cmdline);
|
||||
fflush (output);
|
||||
g_free (cmdline);
|
||||
}
|
||||
|
||||
|
|
|
@ -42,13 +42,14 @@ main (int argc, char **argv)
|
|||
pid_t pid;
|
||||
|
||||
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));
|
||||
}
|
||||
|
||||
buffer = g_new (char, buf_size);
|
||||
|
||||
while (1) {
|
||||
while (!feof(stdin)) {
|
||||
buffer[0] = buffer[1] = 0;
|
||||
tmp = buffer;
|
||||
fgets (tmp, 1023, stdin);
|
||||
|
||||
|
@ -59,6 +60,8 @@ main (int argc, char **argv)
|
|||
fgets (tmp, 1023, stdin);
|
||||
}
|
||||
|
||||
if (!strlen(buffer)) continue;
|
||||
|
||||
pid = fork ();
|
||||
|
||||
if (pid == (pid_t) -1) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue