X-Git-Url: https://git.distorted.org.uk/~mdw/become/blobdiff_plain/8bdddfb748c3e176150241f5f2389b78b9885233..4c37c6af624a9d4dabadac32a5e566d388ee78d7:/src/become.c?ds=sidebyside diff --git a/src/become.c b/src/become.c index d383084..60cb1f3 100644 --- a/src/become.c +++ b/src/become.c @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: become.c,v 1.22 2003/10/12 00:14:55 mdw Exp $ + * $Id: become.c,v 1.23 2003/10/12 10:00:06 mdw Exp $ * * Main code for `become' * @@ -29,6 +29,9 @@ /*----- Revision history --------------------------------------------------* * * $Log: become.c,v $ + * Revision 1.23 2003/10/12 10:00:06 mdw + * Fix for daemon mode. Oops. + * * Revision 1.22 2003/10/12 00:14:55 mdw * Major overhaul. Now uses DSA signatures rather than the bogus symmetric * encrypt-and-hope thing. Integrated with mLib and Catacomb. @@ -470,6 +473,7 @@ static void bc__help(FILE *fp, int suid) #ifndef NONETWORK "\n" "-d, --daemon Start a daemon\n" +"-n, --nofork In daemon mode, don't fork into background\n" "-p PORT, --port=PORT In daemon mode, listen on PORT\n" "-f FILE, --config-file=FILE In daemon mode, read config from FILE\n" #endif @@ -539,14 +543,13 @@ int main(int argc, char *argv[]) /* --- Definitions for the various flags --- */ - enum { - f_daemon = 1, /* Start up in daemon mode */ - f_duff = 2, /* Fault in arguments */ - f_shell = 4, /* Run a default shell */ - f_dummy = 8, /* Don't actually do anything */ - f_setuid = 16, /* We're running setuid */ - f_havegroup = 32 /* Set a default group */ - }; +#define f_daemon 1u /* Start up in daemon mode */ +#define f_duff 2u /* Fault in arguments */ +#define f_shell 4u /* Run a default shell */ +#define f_dummy 8u /* Don't actually do anything */ +#define f_setuid 16u /* We're running setuid */ +#define f_havegroup 32u /* Set a default group */ +#define f_nofork 64u /* Don't fork into background */ /* --- Set up the program name --- */ @@ -601,6 +604,7 @@ int main(int argc, char *argv[]) #ifndef NONETWORK { "daemon", 0, 0, 'd' }, + { "nofork", 0, 0, 'n' }, { "port", gFlag_argReq, 0, 'p' }, { "config-file", gFlag_argReq, 0, 'f' }, #endif @@ -627,7 +631,7 @@ int main(int argc, char *argv[]) #endif "c:" /* Command to run options */ #ifndef NONETWORK - "dp:f:" /* Server options */ + "dnp:f:" /* Server options */ #endif #ifndef NTRACE "I:T::L::" /* Tracing options */ @@ -712,6 +716,9 @@ int main(int argc, char *argv[]) case 'd': flags |= f_daemon; break; + case 'n': + flags |= f_nofork; + break; case 'f': conffile = optarg; break; @@ -887,7 +894,7 @@ done_options: #ifndef NONETWORK if (flags & f_daemon) { T( trace(TRACE_MISC, "become: daemon mode requested"); ) - daemon_init(conffile, port); + daemon_init(conffile, port, (flags & f_nofork) ? df_nofork : 0); exit(0); } #endif