httpd: support for "I:index.xml" syntax (Peter Korsgaard <jacmet@uclibc.org>)
[oweals/busybox.git] / miscutils / setsid.c
index 80c719ca75c46a7e7d3350daee7236327c765d45..110bb6bb6434f77bc91edcd7338a9200384ec64f 100644 (file)
@@ -1,3 +1,4 @@
+/* vi: set sw=4 ts=4: */
 /*
  * setsid.c -- execute a command in a new session
  * Rick Sladkey <jrs@world.std.com>
  * - busyboxed
  */
 
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include "busybox.h"
+#include "libbb.h"
 
-int setsid_main(int argc, char *argv[])
+int setsid_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
+int setsid_main(int argc, char **argv)
 {
        if (argc < 2)
                bb_show_usage();
 
-       if (getpgrp() == getpid()) {
-               switch(fork()){
-               case -1:
-                       bb_perror_msg_and_die("fork");
-               case 0:
-                       break;
-               default:        /* parent */
-                       exit(0);
-               }
-               /* child falls through */
-       }
+       /* Comment why is this necessary? */
+       if (getpgrp() == getpid())
+               forkexit_or_rexec(argv);
 
        setsid();  /* no error possible */
 
-       execvp(argv[1], argv + 1);
-
-       bb_perror_msg_and_die("%s", argv[1]);
+       BB_EXECVP(argv[1], argv + 1);
+       bb_simple_perror_msg_and_die(argv[1]);
 }