Index: src/runsvdir.c =================================================================== RCS file: /var/lib/cvs/runit/src/runsvdir.c,v retrieving revision 1.15 diff -u -r1.15 runsvdir.c --- src/runsvdir.c 2 Aug 2004 14:02:46 -0000 1.15 +++ src/runsvdir.c 11 Sep 2004 09:26:26 -0000 @@ -16,7 +16,7 @@ #include "sig.h" #include "ndelay.h" -#define USAGE " dir" +#define USAGE " [-P] dir" #define VERSION "$Id: runsvdir.c,v 1.15 2004/08/02 14:03:08 pape Exp $" #define MAXSERVICES 1000 @@ -39,6 +39,7 @@ iopause_fd io[1]; struct taia stamplog; int exitsoon =0; +int pgrp =0; void usage () { strerr_die4x(1, "usage: ", progname, USAGE, "\n"); } void fatal(char *m1, char *m2) { @@ -72,6 +73,7 @@ warn("unable to set filedescriptor for log service", 0); sig_uncatch(sig_hangup); sig_uncatch(sig_term); + if (pgrp) setsid(); pathexec_run(*prog, prog, (const char* const*)environ); fatal("unable to start runsv ", name); } @@ -174,6 +176,13 @@ progname =*argv++; if (! argv || ! *argv) usage(); + if (**argv == '-') { + switch (*(*argv +1)) { + case 'P': pgrp =1; + case '-': ++argv; + } + if (! argv || ! *argv) usage(); + } sig_catch(sig_term, s_term); sig_catch(sig_hangup, s_hangup);