]> granicus.if.org Git - vnstat/commitdiff
improve daemon startup prints and log access verification
authorTeemu Toivola <git@humdi.net>
Sat, 23 Apr 2016 23:45:56 +0000 (02:45 +0300)
committerTeemu Toivola <git@humdi.net>
Sat, 23 Apr 2016 23:45:56 +0000 (02:45 +0300)
src/common.c
src/common.h
src/daemon.c
src/vnstatd.c

index b577f54a4cd31c65d12802fc1213a5e7f5ffc121..a2344fc441261cca9389ffda9760a191a31e7c42 100644 (file)
@@ -129,6 +129,20 @@ int logprint(PrintType type)
        return 0;
 }
 
+int verifylogaccess(void)
+{
+       FILE *logfile;
+
+       /* only logfile logging can be verified */
+       if (cfg.uselogging==1) {
+               if ((logfile = fopen(cfg.logfile, "a")) == NULL) {
+                       return 0;
+               }
+               fclose(logfile);
+       }
+       return 1;
+}
+
 int dmonth(int month)
 {
        static int dmon[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
index 1739146a68d08d43eb4154731e41384bc5724ef8..26ad86334b9e145e0abdeb12bbfa8257fd9f1b1b 100644 (file)
@@ -299,6 +299,7 @@ typedef enum PrintType {
 /* common functions */
 int printe(PrintType type);
 int logprint(PrintType type);
+int verifylogaccess(void);
 int dmonth(int month);
 uint32_t mosecs(void);
 uint64_t countercalc(const uint64_t *a, const uint64_t *b);
index 12ea85174c15fefbe074b78c0d03a4db1141588e..89e2a12e5e5bef0eebe139eb80de52422190d8a0 100644 (file)
@@ -29,12 +29,9 @@ void daemonize(void)
 
        setsid(); /* obtain a new process group */
 
-       if (cfg.uselogging) {
-               snprintf(errorstring, 512, "vnStat daemon %s started. (uid:%d gid:%d)", getversion(), (int)getuid(), (int)getgid());
-               if (!printe(PT_Info)) {
-                       printf("Error: Unable to use logfile. Exiting.\n");
-                       exit(EXIT_FAILURE);
-               }
+       if (!verifylogaccess()) {
+               printf("Error: Unable to use logfile. Exiting.\n");
+               exit(EXIT_FAILURE);
        }
 
        /* lock / pid file */
index 6885d75e1e473cd4a86c7c7a1c79b0c1ba5f5ba6..b6570a9e60c2cd056df5ee6ee72d40d85bb8e41f 100644 (file)
@@ -158,7 +158,7 @@ int main(int argc, char *argv[])
        }
 
        s.running = 1;
-       snprintf(errorstring, 512, "vnStat daemon %s running with pid %d.", getversion(), (int)getpid());
+       snprintf(errorstring, 512, "vnStat daemon %s started. (pid:%d uid:%d gid:%d)", getversion(), (int)getpid(), (int)getuid(), (int)getgid());
        printe(PT_Info);
 
        /* main loop */