sd-journal: suppress empty lines

Let's make sure our logging APIs is in sync with how stdout/stderr logging
works.
This commit is contained in:
Lennart Poettering 2016-07-19 14:27:05 +02:00
parent 4c5db93f8a
commit 0d23bc57da
2 changed files with 12 additions and 2 deletions

View file

@ -106,7 +106,8 @@
but no such restrictions are enforced. Note that log messages written using this function are generally not
expected to end in a new-line character. However, as all trailing whitespace (including spaces, new-lines,
tabulators and carriage returns) are automatically stripped from the logged string, it is acceptable to specify one
(or more). Leading whitespace (as well as inner whitespace) is left unmodified however.</para>
(or more). Empty lines (after trailing whitespace removal) are suppressed. On non-empty lines, leading whitespace
(as well as inner whitespace) is left unmodified. </para>
<para><function>sd_journal_printv()</function> is similar to
<function>sd_journal_print()</function> but takes a variable

View file

@ -110,6 +110,10 @@ _public_ int sd_journal_printv(int priority, const char *format, va_list ap) {
/* Strip trailing whitespace, keep prefix whitespace. */
(void) strstrip(buffer);
/* Suppress empty lines */
if (isempty(buffer+8))
return 0;
zero(iov);
IOVEC_SET_STRING(iov[0], buffer);
IOVEC_SET_STRING(iov[1], p);
@ -476,7 +480,12 @@ _public_ int sd_journal_printv_with_location(int priority, const char *file, con
memcpy(buffer, "MESSAGE=", 8);
vsnprintf(buffer+8, sizeof(buffer) - 8, format, ap);
(void) strstrip(buffer); /* strip trailing whitespace, keep prefixing whitespace */
/* Strip trailing whitespace, keep prefixing whitespace */
(void) strstrip(buffer);
/* Suppress empty lines */
if (isempty(buffer+8))
return 0;
/* func is initialized from __func__ which is not a macro, but
* a static const char[], hence cannot easily be prefixed with