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 <jrosen@harvestai.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Joshua Judson Rosen 2014-07-02 19:41:41 +02:00 committed by Denys Vlasenko
parent a28c1b21e1
commit e46047aa87

View File

@ -569,7 +569,7 @@ static void log_to_kmsg(int pri, const char *msg)
*/ */
pri &= G.primask; 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 #else
static void kmsg_init(void) {} 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); close(log_file->fd);
goto reopen; 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 #endif
full_write(log_file->fd, msg, len);
#ifdef SYSLOGD_WRLOCK #ifdef SYSLOGD_WRLOCK
fl.l_type = F_UNLCK; fl.l_type = F_UNLCK;
fcntl(log_file->fd, F_SETLKW, &fl); fcntl(log_file->fd, F_SETLKW, &fl);