From f3a7b057ac28adaaf81c503abab2d8731cdc9b0c Mon Sep 17 00:00:00 2001 From: Andrew Shapiro Date: Mon, 1 Mar 2021 13:18:27 -0500 Subject: [PATCH] utmpdup: Ensure flushing when using follow flag The following usages of utmpdump result in no output being flushed to the specified file because the default output buffering is fully buffered: $ utmpdump --follow --output myOutputFile /var/log/utmp $ utmpdump --follow /var/log/utmp > myOutputFile This change configures line buffering for these scenarios so that output will be flushed after each log event. Signed-off-by: Andrew Shapiro --- login-utils/utmpdump.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/login-utils/utmpdump.c b/login-utils/utmpdump.c index 5ccae8655..b9a92b5f6 100644 --- a/login-utils/utmpdump.c +++ b/login-utils/utmpdump.c @@ -367,6 +367,10 @@ int main(int argc, char **argv) if (!out) out = stdout; + if (follow && (out != stdout || !isatty(STDOUT_FILENO))) { + setvbuf(out, NULL, _IOLBF, 0); + } + if (optind < argc) { filename = argv[optind]; in = fopen(filename, "r");