Better fix for pidfile.
authorFlorent Bruneau <florent.bruneau@polytechnique.org>
Sat, 4 Oct 2008 16:05:03 +0000 (18:05 +0200)
committerFlorent Bruneau <florent.bruneau@polytechnique.org>
Sat, 4 Oct 2008 16:05:03 +0000 (18:05 +0200)
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
common/common.c

index 1abb148..3d2862f 100644 (file)
@@ -52,7 +52,7 @@ static FILE *pidfile = NULL;
 void common_sighandler(int sig)
 {
     switch (sig) {
-                       case SIGTERM:
+      case SIGTERM:
       case SIGINT:
         sigint = true;
         return;
@@ -62,7 +62,7 @@ void common_sighandler(int sig)
         return;
 
       default:
-                               err("Killed (got signal %d)...", sig);
+        err("Killed (got signal %d)...", sig);
         exit(-1);
     }
 }
@@ -199,11 +199,11 @@ int daemon_detach(void)
     pid = fork();
     if (pid < 0) {
         return -1;
-               }
+    }
     if (pid) {
-                               daemon_process = false;
+        daemon_process = false;
         exit(0);
-               }
+    }
 
     setsid();
     return 0;
@@ -240,7 +240,7 @@ int pidfile_open(const char *name)
         pidfile = fopen(name, "w");
         if (!pidfile)
             return -1;
-                               fprintf(pidfile, "%d\n", getpid());
+        fprintf(pidfile, "%d\n", getpid());
         return fflush(pidfile);
     }
     return 0;
@@ -260,9 +260,11 @@ int pidfile_refresh(void)
 static void pidfile_close(void)
 {
     if (pidfile) {
-        rewind(pidfile);
-        ftruncate(fileno(pidfile), 0);
-                               fclose(pidfile);
+        if (daemon_process) {
+            rewind(pidfile);
+            ftruncate(fileno(pidfile), 0);
+        }
+        fclose(pidfile);
         pidfile = NULL;
     }
 }
@@ -270,6 +272,11 @@ static void pidfile_close(void)
 int common_setup(const char* pidfilename, bool unsafe, const char* runas_user,
                  const char* runas_group, bool daemonize)
 {
+    if (pidfile_open(pidfilename) < 0) {
+        crit("unable to write pidfile %s", pidfilename);
+        return EXIT_FAILURE;
+    }
+
     if (!unsafe && drop_privileges(runas_user, runas_group) < 0) {
         crit("unable to drop privileges");
         return EXIT_FAILURE;
@@ -280,11 +287,6 @@ int common_setup(const char* pidfilename, bool unsafe, const char* runas_user,
         return EXIT_FAILURE;
     }
 
-               if (pidfile_open(pidfilename) < 0) {
-        crit("unable to write pidfile %s", pidfilename);
-        return EXIT_FAILURE;
-    }
-
     pidfile_refresh();
     return EXIT_SUCCESS;
 }
@@ -294,10 +296,10 @@ extern exitcall_t __madexit[];
 
 static void common_shutdown(void)
 {
-               if (daemon_process) {
-                               info("stopping...");
-                   pidfile_close();
-               }
+    if (daemon_process) {
+        info("stopping...");
+    }
+    pidfile_close();
     for (int i = -1; __madexit[i]; i--) {
         (*__madexit[i])();
     }