From: Joshua Judson Rosen Date: Wed, 2 Jul 2014 17:41:41 +0000 (+0200) Subject: syslogd: syslogd: don't *decrement* log_file->size on write failures X-Git-Tag: 1_23_0~80 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=e46047aa87c9ec0b8e27d1d4ecfcb3e9798ddb8d;p=oweals%2Fbusybox.git syslogd: syslogd: don't *decrement* log_file->size on write failures Even if we fail to write to a log-file, and it's not growing, it's not *shrinking* either.... Signed-off-by: Joshua Judson Rosen Signed-off-by: Denys Vlasenko --- diff --git a/sysklogd/syslogd.c b/sysklogd/syslogd.c index d80447bd7..04221fc33 100644 --- a/sysklogd/syslogd.c +++ b/sysklogd/syslogd.c @@ -569,7 +569,7 @@ static void log_to_kmsg(int pri, const char *msg) */ pri &= G.primask; - write(G.kmsgfd, G.printbuf, sprintf(G.printbuf, "<%d>%s\n", pri, msg)); + full_write(G.kmsgfd, G.printbuf, sprintf(G.printbuf, "<%d>%s\n", pri, msg)); } #else static void kmsg_init(void) {} @@ -678,9 +678,14 @@ static void log_locally(time_t now, char *msg, logFile_t *log_file) close(log_file->fd); goto reopen; } - log_file->size += +/* TODO: what to do on write errors ("disk full")? */ + len = full_write(log_file->fd, msg, len); + if (len > 0) + log_file->size += len; +#else + full_write(log_file->fd, msg, len); #endif - full_write(log_file->fd, msg, len); + #ifdef SYSLOGD_WRLOCK fl.l_type = F_UNLCK; fcntl(log_file->fd, F_SETLKW, &fl);