From 7abf99e1907b1b05cb45eacaa98bfa73efe0ab92 Mon Sep 17 00:00:00 2001 From: =?utf8?q?P=C3=A1draig=20Brady?= Date: Tue, 26 Mar 2013 00:36:01 +0000 Subject: [PATCH] tail: exit without reading input if would never output * src/tail.c (main): If -n0 or -c0 were specified without -f, then no data would ever be output, so exit without reading input. * tests/tail-2/tail-n0f.sh: Augment the related test with this case. --- src/tail.c | 4 ++++ tests/tail-2/tail-n0f.sh | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/src/tail.c b/src/tail.c index ca851ee6f..cdaecddc4 100644 --- a/src/tail.c +++ b/src/tail.c @@ -2149,6 +2149,10 @@ main (int argc, char **argv) " indefinitely is ineffective")); } + /* Don't read anything if we'll never output anything. */ + if (! n_units && ! forever && ! from_start) + exit (EXIT_SUCCESS); + F = xnmalloc (n_files, sizeof *F); for (i = 0; i < n_files; i++) F[i].name = file[i]; diff --git a/tests/tail-2/tail-n0f.sh b/tests/tail-2/tail-n0f.sh index a8d375978..1c6ba89eb 100755 --- a/tests/tail-2/tail-n0f.sh +++ b/tests/tail-2/tail-n0f.sh @@ -29,6 +29,11 @@ require_proc_pid_status_ touch empty || framework_failure_ echo anything > nonempty || framework_failure_ +# First verify that -[nc]0 without -f, exit without reading +touch unreadable || framework_failure_ +chmod 0 unreadable || framework_failure_ +tail -c0 unreadable || fail=1 +tail -n0 unreadable || fail=1 for inotify in ---disable-inotify ''; do for file in empty nonempty; do -- 2.11.4.GIT