tags 326640 + patch confirmed
thanks

[Yann Rouillard]
> If I understand well, for the parent, fork will return with the
> child pid, so exit(1) will be executed and hence 1 will be the
> return code for successfull forking. Am I wrong somewhere ?

Ah, right.  I looked for return statements in main(), and did not
discover that exit() call.

Yes, I believe you are right.  This patch should fix it.

Index: src/bootlogd.c
===================================================================
--- src/bootlogd.c      (revisjon 56)
+++ src/bootlogd.c      (arbeidskopi)
@@ -523,8 +523,19 @@
         *      Fork and write pidfile if needed.
         */
        if (!dontfork) {
-               if (fork())
+               pid_t child_pid = fork();
+               switch (child_pid) {
+               case -1: /* error */
+                       fprintf(stderr, "bootlogd: fork failed: %s\n",
+                               strerror(errno));
                        exit(1);
+                       ;;
+               case 0: /* child, ignore */
+                       ;;
+               default: /* parend with child pid returned from fork() */
+                       exit(0);
+                       ;;
+               }
                setsid();
        }
        if (pidfile) {


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to