From 2c8e9b7ccda1a4065718107b5dccd8a13b44cfb1 Mon Sep 17 00:00:00 2001 From: Hans Petter Date: Mon, 2 Oct 2000 20:16:21 +0000 Subject: [PATCH] Fixed spawning with root-manager. --- control-center/capplet-dir.c | 8 ++++++++ control-center/root-manager.c | 7 +++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/control-center/capplet-dir.c b/control-center/capplet-dir.c index 2d93bf5ae..d66d88e4f 100644 --- a/control-center/capplet-dir.c +++ b/control-center/capplet-dir.c @@ -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); } diff --git a/control-center/root-manager.c b/control-center/root-manager.c index 0b2c22ed5..eab55270f 100644 --- a/control-center/root-manager.c +++ b/control-center/root-manager.c @@ -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) {