From 098cf6efef60bddd4683ff27cdc90c40b03d8250 Mon Sep 17 00:00:00 2001 From: Leah Neukirchen Date: Wed, 1 Mar 2023 22:10:32 +0100 Subject: [PATCH] util-linux: actually backport fix for util-linux/util-linux#1866. --- srcpkgs/util-linux-common/template | 2 +- srcpkgs/util-linux/patches/logger.patch | 95 +++++++++++++++++++++++++ srcpkgs/util-linux/template | 2 +- 3 files changed, 97 insertions(+), 2 deletions(-) create mode 100644 srcpkgs/util-linux/patches/logger.patch diff --git a/srcpkgs/util-linux-common/template b/srcpkgs/util-linux-common/template index eeb06b36cfb..90b768803f0 100644 --- a/srcpkgs/util-linux-common/template +++ b/srcpkgs/util-linux-common/template @@ -2,7 +2,7 @@ # Keep this package sync with util-linux pkgname=util-linux-common version=2.38.1 -revision=2 +revision=3 build_style=gnu-configure configure_args="--exec-prefix=\${prefix} --enable-libuuid --disable-makeinstall-chown --enable-libblkid --enable-fsck --disable-rpath --enable-fs-paths-extra=/usr/sbin:/usr/bin diff --git a/srcpkgs/util-linux/patches/logger.patch b/srcpkgs/util-linux/patches/logger.patch new file mode 100644 index 00000000000..48eb80586ea --- /dev/null +++ b/srcpkgs/util-linux/patches/logger.patch @@ -0,0 +1,95 @@ +From 96ccdc00e1fcf1684f9734a189baf90e00ff0c9a Mon Sep 17 00:00:00 2001 +From: Karel Zak +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 +--- + 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 bec684f15b..e2b0b41abe 100644 +--- a/misc-utils/logger.c ++++ b/misc-utils/logger.c +@@ -945,8 +945,6 @@ static void logger_open(struct logger_ctl *ctl) + ctl->tag = ctl->login = xgetlogin(); + if (!ctl->tag) + ctl->tag = ""; +- +- generate_syslog_header(ctl); + } + + /* re-open; usually after failed connection */ +@@ -996,10 +994,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; +@@ -1026,10 +1022,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(); + } +@@ -1040,8 +1032,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(); +@@ -1317,12 +1311,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 reopens stdin making the below + * function to be used for file inputs. */ + logger_stdin(&ctl); ++ + logger_close(&ctl); + return EXIT_SUCCESS; + } diff --git a/srcpkgs/util-linux/template b/srcpkgs/util-linux/template index 90b47709f01..29477fc6ea8 100644 --- a/srcpkgs/util-linux/template +++ b/srcpkgs/util-linux/template @@ -2,7 +2,7 @@ # Keep this package sync with util-linux-common pkgname=util-linux version=2.38.1 -revision=2 +revision=3 build_style=gnu-configure configure_args="--exec-prefix=\${prefix} --enable-libuuid --disable-makeinstall-chown --enable-libblkid --enable-fsck --disable-rpath --enable-fs-paths-extra=/usr/sbin:/usr/bin