syslogd: create logfile with 0666, not 0600.
authorDenis Vlasenko <vda.linux@googlemail.com>
Mon, 2 Mar 2009 14:26:28 +0000 (14:26 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Mon, 2 Mar 2009 14:26:28 +0000 (14:26 -0000)
sysklogd/syslogd.c

index 48b875ef130a07ce832bcfcb48387aeed816cdc6..89391036a75c86f9739802e53426c5cb7d3fa8f4 100644 (file)
@@ -306,17 +306,23 @@ static void log_locally(time_t now, char *msg)
        }
 #endif
        if (G.logFD >= 0) {
+               /* Reopen log file every second. This allows admin
+                * to delete the file and not worry about restarting us.
+                * This costs almost nothing since it happens
+                * _at most_ once a second.
+                */
                if (!now)
                        now = time(NULL);
                if (G.last_log_time != now) {
-                       G.last_log_time = now; /* reopen log file every second */
+                       G.last_log_time = now;
                        close(G.logFD);
                        goto reopen;
                }
        } else {
  reopen:
-               G.logFD = device_open(G.logFilePath, O_WRONLY | O_CREAT
-                                       | O_NOCTTY | O_APPEND | O_NONBLOCK);
+               G.logFD = open(G.logFilePath, O_WRONLY | O_CREAT
+                                       | O_NOCTTY | O_APPEND | O_NONBLOCK,
+                                       0666);
                if (G.logFD < 0) {
                        /* cannot open logfile? - print to /dev/console then */
                        int fd = device_open(DEV_CONSOLE, O_WRONLY | O_NOCTTY | O_NONBLOCK);