diff options
Diffstat (limited to 'sysklogd/syslogd.c')
| -rw-r--r-- | sysklogd/syslogd.c | 12 |
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 |
