Projects
Factory:RISC-V:Base
util-linux
_service:tar_scm:backport-logger-always-update-...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm:backport-logger-always-update-header-when-read-from-stdin.patch of Package util-linux
From 96ccdc00e1fcf1684f9734a189baf90e00ff0c9a Mon Sep 17 00:00:00 2001 From: Karel Zak <kzak@redhat.com> Date: Tue, 1 Nov 2022 10:30:06 +0100 Subject: [PATCH] logger: always update header when read from stdin The current code updates the header only when the priority has been changed. It's incorrect because wanted is a valid header or each entry (don't forget that logger for stdin use-case is used in pipe to log long-time running processes). This patch also fixes the initial timestamp; it was originally generated on logger startup, it now generates the header on the first message. $ (sleep 2; date; sleep 2; date; sleep 2; date) | logger --stderr --no-act old: <13>Nov 1 10:42:14 kzak: Tue Nov 1 10:42:16 AM CET 2022 <13>Nov 1 10:42:14 kzak: Tue Nov 1 10:42:18 AM CET 2022 <13>Nov 1 10:42:14 kzak: Tue Nov 1 10:42:20 AM CET 2022 new: <13>Nov 1 10:19:02 kzak: Tue Nov 1 10:19:02 AM CET 2022 <13>Nov 1 10:19:04 kzak: Tue Nov 1 10:19:04 AM CET 2022 <13>Nov 1 10:19:06 kzak: Tue Nov 1 10:19:06 AM CET 2022 Fixes: https://github.com/util-linux/util-linux/issues/1866 Signed-off-by: Karel Zak <kzak@redhat.com> --- misc-utils/logger.c | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/misc-utils/logger.c b/misc-utils/logger.c index a29b9e4..0f2a849 100644 --- a/misc-utils/logger.c +++ b/misc-utils/logger.c @@ -920,8 +920,6 @@ static void logger_open(struct logger_ctl *ctl) ctl->tag = xgetlogin(); if (!ctl->tag) ctl->tag = "<someone>"; - - generate_syslog_header(ctl); } /* re-open; usually after failed connection */ @@ -971,10 +969,8 @@ static void logger_stdin(struct logger_ctl *ctl) { /* note: we re-generate the syslog header for each log message to * update header timestamps and to reflect possible priority changes. - * The initial header is generated by logger_open(). */ int default_priority = ctl->pri; - int last_pri = default_priority; char *buf = xmalloc(ctl->max_message_size + 2 + 2); int pri; int c; @@ -1001,10 +997,6 @@ static void logger_stdin(struct logger_ctl *ctl) } else ctl->pri = default_priority; - if (ctl->pri != last_pri) { - generate_syslog_header(ctl); - last_pri = ctl->pri; - } if (c != EOF && c != '\n') c = getchar(); } @@ -1015,8 +1007,10 @@ static void logger_stdin(struct logger_ctl *ctl) } buf[i] = '\0'; - if (i > 0 || !ctl->skip_empty_lines) + if (i > 0 || !ctl->skip_empty_lines) { + generate_syslog_header(ctl); write_output(ctl, buf); + } if (c == '\n') /* discard line terminator */ c = getchar(); @@ -1291,12 +1285,14 @@ int main(int argc, char **argv) abort(); } logger_open(&ctl); - if (0 < argc) + if (0 < argc) { + generate_syslog_header(&ctl); logger_command_line(&ctl, argv); - else + } else /* Note. --file <arg> reopens stdin making the below * function to be used for file inputs. */ logger_stdin(&ctl); + logger_close(&ctl); return EXIT_SUCCESS; } -- 2.27.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2