From cbbf9aea0a8fa5c6754a171ba00f7cd064c2aaa4 Mon Sep 17 00:00:00 2001 From: Mrunal Patel Date: Fri, 7 Apr 2017 10:51:04 -0700 Subject: [PATCH] Don't write \0 after timestamp and skip line ending on partial lines Signed-off-by: Antonia Murdaca Signed-off-by: Mrunal Patel --- conmon/conmon.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/conmon/conmon.c b/conmon/conmon.c index f69720f5..933963d3 100644 --- a/conmon/conmon.c +++ b/conmon/conmon.c @@ -151,7 +151,8 @@ int write_with_timestamps(int logfd, const char *buf, ssize_t buflen) if (rc < 0) { nwarn("failed to set timestamp"); } else { - if (write(logfd, tsbuf, TSBUFLEN) != TSBUFLEN) { + /* Exclude the \0 while writing */ + if (write(logfd, tsbuf, TSBUFLEN - 1) != (TSBUFLEN - 1)) { nwarn("partial/failed write ts (logFd)"); } } @@ -164,9 +165,11 @@ int write_with_timestamps(int logfd, const char *buf, ssize_t buflen) return -1; } /* Write the line ending */ - if (write(logfd, "\n", 1) != 1) { - nwarn("failed to write line ending"); - return -1; + if ((i < num_lines - 1) || (i == (num_lines - 1) && buf[buflen - 1] == '\n')) { + if (write(logfd, "\n", 1) != 1) { + nwarn("failed to write line ending"); + return -1; + } } }