Revert "Close stdin/stdout/stderr in child processes before exec()"
authorSteven Luo <steven+maemo@steven676.net>
Mon, 22 Feb 2010 10:44:07 +0000 (02:44 -0800)
committerSteven Luo <steven+maemo@steven676.net>
Mon, 22 Feb 2010 10:44:07 +0000 (02:44 -0800)
This reverts commit 17853b6cdd152a6c53a3e3e11506e3a780e4991c.

launcher.c

index 93cce2f..2667623 100644 (file)
@@ -26,8 +26,6 @@
 #include <unistd.h>
 #include <sys/types.h>
 #include <sys/wait.h>
 #include <unistd.h>
 #include <sys/types.h>
 #include <sys/wait.h>
-#include <sys/stat.h>
-#include <fcntl.h>
 #include <dbus/dbus-glib.h>
 
 #ifdef FREMANTLE
 #include <dbus/dbus-glib.h>
 
 #ifdef FREMANTLE
@@ -105,20 +103,6 @@ static DBusHandlerResult check_microb_finished(DBusConnection *connection,
 }
 #endif
 
 }
 #endif
 
-/* Close stdin/stdout/stderr and replace with /dev/null */
-static int close_stdio(void) {
-       int fd;
-
-       if ((fd = open("/dev/null", O_RDWR)) == -1)
-               return -1;
-
-       if (dup2(fd, 0) == -1 || dup2(fd, 1) == -1 || dup2(fd, 2) == -1)
-               return -1;
-
-       close(fd);
-       return 0;
-}
-
 static void launch_tear(struct swb_context *ctx, char *uri) {
        int status;
        static DBusGProxy *tear_proxy = NULL;
 static void launch_tear(struct swb_context *ctx, char *uri) {
        int status;
        static DBusGProxy *tear_proxy = NULL;
@@ -155,7 +139,6 @@ static void launch_tear(struct swb_context *ctx, char *uri) {
                        }
                        /* Child process */
                        setsid();
                        }
                        /* Child process */
                        setsid();
-                       close_stdio();
                }
                execl("/usr/bin/tear", "/usr/bin/tear", uri, (char *)NULL);
        }
                }
                execl("/usr/bin/tear", "/usr/bin/tear", uri, (char *)NULL);
        }
@@ -375,8 +358,6 @@ void launch_microb(struct swb_context *ctx, char *uri) {
                g_object_unref(g_proxy);
        } else {
                /* Child process */
                g_object_unref(g_proxy);
        } else {
                /* Child process */
-               close_stdio();
-
                /* exec maemo-invoker directly instead of relying on the
                   /usr/bin/browser symlink, since /usr/bin/browser may have
                   been replaced with a shell script calling us via D-Bus */
                /* exec maemo-invoker directly instead of relying on the
                   /usr/bin/browser symlink, since /usr/bin/browser may have
                   been replaced with a shell script calling us via D-Bus */
@@ -391,8 +372,6 @@ void launch_microb(struct swb_context *ctx, char *uri) {
                waitpid(pid, &status, 0);
        } else {
                /* Child process */
                waitpid(pid, &status, 0);
        } else {
                /* Child process */
-               close_stdio();
-
                /* exec maemo-invoker directly instead of relying on the
                   /usr/bin/browser symlink, since /usr/bin/browser may have
                   been replaced with a shell script calling us via D-Bus */
                /* exec maemo-invoker directly instead of relying on the
                   /usr/bin/browser symlink, since /usr/bin/browser may have
                   been replaced with a shell script calling us via D-Bus */
@@ -488,7 +467,6 @@ static void launch_other_browser(struct swb_context *ctx, char *uri) {
                }
                /* Child process */
                setsid();
                }
                /* Child process */
                setsid();
-               close_stdio();
        }
        execl("/bin/sh", "/bin/sh", "-c", command, (char *)NULL);
 }
        }
        execl("/bin/sh", "/bin/sh", "-c", command, (char *)NULL);
 }