From: Jim Meyering Date: Sun, 4 Jan 2004 21:00:22 +0000 (+0000) Subject: (main): Warn about following stdin. X-Git-Tag: v5.1.1~122 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ebca34437017619df2065ace62d35dc03c6c57eb;p=thirdparty%2Fcoreutils.git (main): Warn about following stdin. Fail when following by name but no names are specified. --- diff --git a/src/tail.c b/src/tail.c index 4364ec1edb..7f992d8962 100644 --- a/src/tail.c +++ b/src/tail.c @@ -1,5 +1,5 @@ /* tail -- output the last part of file(s) - Copyright (C) 1989, 90, 91, 1995-2003 Free Software Foundation, Inc. + Copyright (C) 1989, 90, 91, 1995-2004 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -1699,7 +1699,6 @@ main (int argc, char **argv) --n_units; } - if (optind < argc) { n_files = argc - optind; @@ -1712,6 +1711,25 @@ main (int argc, char **argv) file = &dummy_stdin; } + { + bool found_hyphen = false; + + for (i = 0; i < n_files; i++) + if (STREQ (file[i], "-")) + found_hyphen = true; + + /* When following by name, there must be a name. */ + if (found_hyphen && follow_mode == Follow_name) + error (EXIT_FAILURE, 0, _("cannot follow %s by name"), quote ("-")); + + /* When following forever, warn if any file is `-'. + This is only a warning, since tail's output (before a failing seek, + and that from any non-stdin files) might still be useful. */ + if (forever && found_hyphen) + error (0, 0, _("warning: following standard input" + " indefinitely is ineffective")); + } + F = xmalloc (n_files * sizeof (F[0])); for (i = 0; i < n_files; i++) F[i].name = file[i];