Fix annoying bug with grep and HAMMER
authorMatthias Schmidt <matthias@dragonflybsd.org>
Thu, 18 Dec 2008 10:56:46 +0000 (11:56 +0100)
committerMatthias Schmidt <matthias@dragonflybsd.org>
Thu, 18 Dec 2008 10:56:46 +0000 (11:56 +0100)
grep foo * on an UFS partition was silent if grep hit a subdirectory.  If
executed on HAMMER, grep complains about "Invalid argument" because directories
in HAMMER are not treated as files.

Before:

cd /usr/src
grep test *
Makefile:       test \
grep: cat: Invalid argument
[...]

After:

grep test *
Makefile:       test \

gnu/usr.bin/grep/grep.c

index 5266f2a..2f505d4 100644 (file)
@@ -752,8 +752,10 @@ grep (int fd, char const *file, struct stats *stats)
 
   if (! fillbuf (save, stats))
     {
-      if (! (is_EISDIR (errno, file) && suppress_errors))
-       error (filename, errno);
+      if (! (is_EISDIR (errno, file) && suppress_errors)) {
+       if (error == EINVAL)
+         error (filename, errno);
+      }
       return 0;
     }