summaryrefslogtreecommitdiffhomepage
path: root/sysklogd/syslogd.c
diff options
context:
space:
mode:
authorJoshua Judson Rosen <jrosen@harvestai.com>2014-07-02 19:41:41 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2014-07-02 19:41:41 +0200
commite46047aa87c9ec0b8e27d1d4ecfcb3e9798ddb8d (patch)
tree20f4641e15be847806a481b495b227846130d311 /sysklogd/syslogd.c
parenta28c1b21e1a3770b83fe9b15f26ec50f2e14e7f6 (diff)
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>
Diffstat (limited to 'sysklogd/syslogd.c')
-rw-r--r--sysklogd/syslogd.c11
1 files changed, 8 insertions, 3 deletions
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);