]> mj.ucw.cz Git - nwho.git/commitdiff
Moved fork after initialization
authorMartin Mares <mj@ucw.cz>
Fri, 31 Dec 2010 15:09:49 +0000 (16:09 +0100)
committerMartin Mares <mj@ucw.cz>
Fri, 31 Dec 2010 15:09:49 +0000 (16:09 +0100)
This way, errors are reported properly.

nwhod.c

diff --git a/nwhod.c b/nwhod.c
index 1dd75d724535eecd76da43d99818cadc04fff3bc..5f3b0aca32ae4baae3adce0e2c53b5695ba1011d 100644 (file)
--- a/nwhod.c
+++ b/nwhod.c
@@ -310,6 +310,12 @@ do_tick(void)
 static void
 daemonize(void)
 {
+  pid_t pid = fork();
+  if (pid < 0)
+    die("Fork failed: %m");
+  if (pid)
+    exit(0);
+
   close(0);
   close(1);
   close(2);
@@ -366,24 +372,14 @@ client(char *serv)
 int
 main(int argc, char **argv)
 {
-  int pid;
-
-  if (argc != 1 && argc != 2)
-    {
-      fprintf(stderr, "Usage: nwhod [<server>]\n");
-      return 1;
-    }
-  pid = fork();
-  if (pid < 0)
-    {
-      perror("fork");
-      return 1;
-    }
-  if (pid)
-    return 0;
   if (argc == 2)
     client(argv[1]);
   else if (argc == 1)
     server();
-  return 1;
+  else
+    {
+      fprintf(stderr, "Usage: nwhod [<server>]\n");
+      return 1;
+    }
+  return 0;
 }