* src/tr.c (main): Accept -u to set stdout to unbuffered. * NEWS: Mention the new feature.
Link: https://github.com/coreutils/coreutils/issues/374 --- NEWS | 3 +++ src/tr.c | 7 ++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 2d7d9b3c9..780452af6 100644 --- a/NEWS +++ b/NEWS @@ -48,6 +48,9 @@ GNU coreutils NEWS -*- outline -*- 'env' and 'printenv' now support the --quoting-style option to control the format of printed environment variables. + 'tr' accepts the undocumented -u option to operate in unbuffered mode, + for compatibility with FreeBSD and macOS tr(1). + ** Changes in behavior 'env' and 'printenv' now quote printed environment variables only when diff --git a/src/tr.c b/src/tr.c index 7d32257d6..3a1a3b42f 100644 --- a/src/tr.c +++ b/src/tr.c @@ -1694,7 +1694,7 @@ main (int argc, char **argv) atexit (close_stdout); - while ((c = getopt_long (argc, argv, "+AcCdst", long_options, NULL)) != -1) + while ((c = getopt_long (argc, argv, "+AcCdstu", long_options, NULL)) != -1) { switch (c) { @@ -1721,6 +1721,11 @@ main (int argc, char **argv) truncate_set1 = true; break; + case 'u': + /* Undocumented option, for compatibility with FreeBSD/macOS. */ + setvbuf (stdout, NULL, _IONBF, 0); + break; + case_GETOPT_HELP_CHAR; case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS); -- 2.55.0
