From: Pádraig Brady Date: Tue, 6 Sep 2016 14:13:32 +0000 (+0100) Subject: factor: reinstate immediate output with interactive use X-Git-Tag: v8.26~73 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6643842bad2e0ed9f9249f2039d2a30c3b7fb38d;p=thirdparty%2Fcoreutils.git factor: reinstate immediate output with interactive use * src/factor.c (lbuf_putc): Only buffer more than a line when not using the tool interactively. * NEWS: Mention the bug fix. Fixes http://pad.lv/1620139 --- diff --git a/NEWS b/NEWS index f4cdf9ecbd..e99c88b962 100644 --- a/NEWS +++ b/NEWS @@ -22,6 +22,9 @@ GNU coreutils NEWS -*- outline -*- System V style platforms where this information is available only in the global variable 'tzname'. [bug introduced in coreutils-8.24] + factor again outputs immediately when numbers are input interactively. + [bug introduced in coreutils-8.24] + nl now resets numbering for each page section rather than just for each page. [This bug was present in "the beginning".] diff --git a/src/factor.c b/src/factor.c index 8fee75912c..ff454b4851 100644 --- a/src/factor.c +++ b/src/factor.c @@ -2379,7 +2379,13 @@ lbuf_putc (char c) { size_t buffered = lbuf.end - lbuf.buf; - if (buffered >= FACTOR_PIPE_BUF) + /* Provide immediate output for interactive input. */ + static int line_buffered = -1; + if (line_buffered == -1) + line_buffered = isatty (STDIN_FILENO); + if (line_buffered) + lbuf_flush (); + else if (buffered >= FACTOR_PIPE_BUF) { /* Write output in <= PIPE_BUF chunks so consumers can read atomically. */