summaryrefslogtreecommitdiff
path: root/src/wc.c
diff options
context:
space:
mode:
authorJim Meyering <meyering@redhat.com>2008-05-15 11:19:44 +0200
committerJim Meyering <meyering@redhat.com>2008-05-17 08:28:59 +0200
commit878e51ebfaf130f494957e7e6b5bce96d6e1eb13 (patch)
treee8e3e9ae473abc8c94e6d22916451f330a807605 /src/wc.c
parent51243cdacacbde2c020846c22d81ab435f2f1f22 (diff)
downloadcoreutils-878e51ebfaf130f494957e7e6b5bce96d6e1eb13.tar.xz
du, wc: merge improved --files0-from=F-related diagnostics
du gave a better diagnostic for one unusual case, and wc gave a better diagnostic for a different one. Now each diagnoses both unusual cases. * src/du.c (main): Disallow '-' as file name when reading from stdin. * src/wc.c (main): Give a better diagnostic for a zero-length file name.
Diffstat (limited to 'src/wc.c')
-rw-r--r--src/wc.c39
1 files changed, 32 insertions, 7 deletions
diff --git a/src/wc.c b/src/wc.c
index 1945504bc..ebbb5b337 100644
--- a/src/wc.c
+++ b/src/wc.c
@@ -30,6 +30,7 @@
#include "inttostr.h"
#include "mbchar.h"
#include "quote.h"
+#include "quotearg.h"
#include "readtokens0.h"
#include "safe-read.h"
@@ -683,15 +684,39 @@ main (int argc, char **argv)
ok = true;
for (i = 0; i < nfiles; i++)
{
- if (files_from && STREQ (files_from, "-") && STREQ (files[i], "-"))
+ if (files[i])
{
- ok = false;
- error (0, 0,
- _("when reading file names from stdin, "
- "no file name of %s allowed"),
- quote ("-"));
- continue;
+ if (files_from && STREQ (files_from, "-") && STREQ (files[i], "-"))
+ {
+ ok = false;
+ /* Give a better diagnostic in an unusual case:
+ printf - | wc --files0-from=- */
+ error (0, 0, _("when reading file names from stdin, "
+ "no file name of %s allowed"),
+ quote ("-"));
+ continue;
+ }
+
+ /* Diagnose a zero-length file name. When it's one
+ among many, knowing the record number may help. */
+ if (files[i][0] == '\0')
+ {
+ ok = false;
+ if (files_from)
+ {
+ /* Using the standard `filename:line-number:' prefix here is
+ not totally appropriate, since NUL is the separator, not NL,
+ but it might be better than nothing. */
+ unsigned long int file_number = i + 1;
+ error (0, 0, "%s:%lu: %s", quotearg_colon (files_from),
+ file_number, _("invalid zero-length file name"));
+ }
+ else
+ error (0, 0, "%s", _("invalid zero-length file name"));
+ continue;
+ }
}
+
ok &= wc_file (files[i], &fstatus[i]);
}