From: mortenp Date: Fri, 30 Apr 2004 07:20:01 +0000 (+1000) Subject: added -F (no fork) option X-Git-Tag: RELEASE_1_0_0~265 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d052bcec84cd8a46d8c406a62cb9878841266a41;p=thirdparty%2Fmlmmj.git added -F (no fork) option --- diff --git a/src/mlmmj-recieve.c b/src/mlmmj-recieve.c index 2f12002e..47e58612 100644 --- a/src/mlmmj-recieve.c +++ b/src/mlmmj-recieve.c @@ -26,7 +26,7 @@ extern char *optarg; static void print_help(const char *prg) { - printf("Usage: %s -L /path/to/chat-list [-V] [-P]\n", prg); + printf("Usage: %s -L /path/to/chat-list [-V] [-P] [-F]\n", prg); exit(EXIT_SUCCESS); } @@ -35,7 +35,7 @@ int main(int argc, char **argv) char *infilename = NULL, *listdir = NULL, *line = NULL; char *randomstr = random_str(); char *mlmmjprocess, *argv0 = strdup(argv[0]); - int fd, opt, noprocess = 0; + int fd, opt, noprocess = 0, nofork = 0; pid_t childpid; log_set_name(argv[0]); @@ -43,7 +43,7 @@ int main(int argc, char **argv) mlmmjprocess = concatstr(2, dirname(argv0), "/mlmmj-process"); free(argv0); - while ((opt = getopt(argc, argv, "hPVL:")) != -1) { + while ((opt = getopt(argc, argv, "hPVL:F")) != -1) { switch(opt) { case 'h': print_help(argv[0]); @@ -54,6 +54,9 @@ int main(int argc, char **argv) case 'P': noprocess = 1; break; + case 'F': + nofork = 1; + break; case 'V': print_version(argv[0]); exit(0); @@ -105,12 +108,14 @@ int main(int argc, char **argv) * returning, making it susceptible to getting a SIGKILL from the * mailserver invoking mlmmj-recieve. */ - childpid = fork(); - if(childpid < 0) - log_error(LOG_ARGS, "fork() failed! Proceeding anyway"); + if (!nofork) { + childpid = fork(); + if(childpid < 0) + log_error(LOG_ARGS, "fork() failed! Proceeding anyway"); - if(childpid) - exit(EXIT_SUCCESS); /* Parent says: "bye bye kids!"*/ + if(childpid) + exit(EXIT_SUCCESS); /* Parent says: "bye bye kids!"*/ + } execlp(mlmmjprocess, mlmmjprocess, "-L", listdir,