diff options
author | Sami Kerola | 2016-07-18 22:49:27 +0200 |
---|---|---|
committer | Karel Zak | 2016-07-19 11:02:48 +0200 |
commit | f1f5f21ee664c232df1454a322f2570301ee1add (patch) | |
tree | 3e789933e3612da77c1e44f7729e91a514918d89 | |
parent | tailf: Fix previously adjusted segfault patch (diff) | |
download | kernel-qcow2-util-linux-f1f5f21ee664c232df1454a322f2570301ee1add.tar.gz kernel-qcow2-util-linux-f1f5f21ee664c232df1454a322f2570301ee1add.tar.xz kernel-qcow2-util-linux-f1f5f21ee664c232df1454a322f2570301ee1add.zip |
logger: remove trailing spaces when outputing to journal
Issues:
1. Whitespace-ish \r is not stripped, while it should be.
2. In journal \r is considered unprintable.
Lennart: "it is the duty of the client side to drop the trailing whitespace,
which "logger" doesn't do".
Reported-by: Ivan Babrou <ibobrik@gmail.com>
Explained-by: Lennart Poettering <lennart@poettering.net>
Reference: https://github.com/systemd/systemd/issues/3416
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
-rw-r--r-- | misc-utils/logger.c | 7 | ||||
-rw-r--r-- | tests/expected/logger/journald | 1 |
2 files changed, 2 insertions, 6 deletions
diff --git a/misc-utils/logger.c b/misc-utils/logger.c index 9f2940cb2..70fac68bb 100644 --- a/misc-utils/logger.c +++ b/misc-utils/logger.c @@ -341,14 +341,11 @@ static int journald_entry(struct logger_ctl *ctl, FILE *fp) for (lines = 0; /* nothing */ ; lines++) { buf = NULL; sz = getline(&buf, &dummy, fp); - if (sz == -1) { + if (sz == -1 || + (sz = rtrim_whitespace((unsigned char *) buf)) == 0) { free(buf); break; } - if (0 < sz && buf[sz - 1] == '\n') { - sz--; - buf[sz] = '\0'; - } if (lines == vectors) { vectors *= 2; if (IOV_MAX < vectors) diff --git a/tests/expected/logger/journald b/tests/expected/logger/journald index 75bd0f3e7..354628d16 100644 --- a/tests/expected/logger/journald +++ b/tests/expected/logger/journald @@ -1,4 +1,3 @@ MESSAGE_ID=b8f74e14bc714bfc8040a5106dc9376a MESSAGE=a b c 1 2 3 - ret: 0 |