aboutsummaryrefslogtreecommitdiff
path: root/sysklogd/syslogd.c
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2012-03-22 16:14:13 +0000
committerRon Yorston <rmy@pobox.com>2012-03-22 16:14:13 +0000
commit800c3f176fb21e30fbaa81ef68f50e601ea2f78b (patch)
tree84f4a2bf30d3208a020b25c82c11ac636c7072c6 /sysklogd/syslogd.c
parent9db164d6e39050d09f38288c6045cd2a2cbf6d63 (diff)
parentf99811908419608e3ab81393d0177cc456101e4b (diff)
downloadbusybox-w32-800c3f176fb21e30fbaa81ef68f50e601ea2f78b.tar.gz
busybox-w32-800c3f176fb21e30fbaa81ef68f50e601ea2f78b.tar.bz2
busybox-w32-800c3f176fb21e30fbaa81ef68f50e601ea2f78b.zip
Merge commit '1_19_4' into merge_1_19
Diffstat (limited to 'sysklogd/syslogd.c')
-rw-r--r--sysklogd/syslogd.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/sysklogd/syslogd.c b/sysklogd/syslogd.c
index 2f0ca6ac5..fc380d9f9 100644
--- a/sysklogd/syslogd.c
+++ b/sysklogd/syslogd.c
@@ -278,7 +278,7 @@ static void parse_syslogdcfg(const char *file)
278 parser_t *parser; 278 parser_t *parser;
279 279
280 parser = config_open2(file ? file : "/etc/syslog.conf", 280 parser = config_open2(file ? file : "/etc/syslog.conf",
281 file ? xfopen_for_read : fopen_or_warn_stdin); 281 file ? xfopen_for_read : fopen_for_read);
282 if (!parser) 282 if (!parser)
283 /* didn't find default /etc/syslog.conf */ 283 /* didn't find default /etc/syslog.conf */
284 /* proceed as if we built busybox without config support */ 284 /* proceed as if we built busybox without config support */
@@ -594,6 +594,14 @@ static void log_locally(time_t now, char *msg, logFile_t *log_file)
594 } 594 }
595 /* newFile == "f.0" now */ 595 /* newFile == "f.0" now */
596 rename(log_file->path, newFile); 596 rename(log_file->path, newFile);
597 /* Incredibly, if F and F.0 are hardlinks, POSIX
598 * _demands_ that rename returns 0 but does not
599 * remove F!!!
600 * (hardlinked F/F.0 pair was observed after
601 * power failure during rename()).
602 * Ensure old file is gone:
603 */
604 unlink(log_file->path);
597#ifdef SYSLOGD_WRLOCK 605#ifdef SYSLOGD_WRLOCK
598 fl.l_type = F_UNLCK; 606 fl.l_type = F_UNLCK;
599 fcntl(log_file->fd, F_SETLKW, &fl); 607 fcntl(log_file->fd, F_SETLKW, &fl);
@@ -678,7 +686,7 @@ static void timestamp_and_log(int pri, char *msg, int len)
678 if (LOG_PRI(pri) < G.logLevel) { 686 if (LOG_PRI(pri) < G.logLevel) {
679#if ENABLE_FEATURE_IPC_SYSLOG 687#if ENABLE_FEATURE_IPC_SYSLOG
680 if ((option_mask32 & OPT_circularlog) && G.shbuf) { 688 if ((option_mask32 & OPT_circularlog) && G.shbuf) {
681 log_to_shmem(msg); 689 log_to_shmem(G.printbuf);
682 return; 690 return;
683 } 691 }
684#endif 692#endif