aboutsummaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorAndrey A. Chernov <ache@FreeBSD.org>2013-08-08 11:53:47 +0000
committerAndrey A. Chernov <ache@FreeBSD.org>2013-08-08 11:53:47 +0000
commit81191eeb58c1045d9ac7cd0cc0cf9498726ab61e (patch)
treeee318e47afedc507e7897ff2a84a6d0727e327c9 /gnu
parent4371b649aad3cee78651ff9d6a8e286669b8bb89 (diff)
downloadsrc-81191eeb58c1045d9ac7cd0cc0cf9498726ab61e.tar.gz
src-81191eeb58c1045d9ac7cd0cc0cf9498726ab61e.zip
Part of r245761 makes "grep -D skip" broken for pipes, i.e.
echo xxx | grep -D skip xxx returns nothing. Instead of just removing added S_ISFIFO condition (originally absent in this version of grep), make it work as latest GNU version does: don't skip directories and devices if fd == STDIN_FILENO.
Notes
Notes: svn path=/head/; revision=254093
Diffstat (limited to 'gnu')
-rw-r--r--gnu/usr.bin/grep/grep.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/gnu/usr.bin/grep/grep.c b/gnu/usr.bin/grep/grep.c
index 223ee91f12f7..61d1bf152f81 100644
--- a/gnu/usr.bin/grep/grep.c
+++ b/gnu/usr.bin/grep/grep.c
@@ -301,14 +301,16 @@ reset (int fd, char const *file, struct stats *stats)
error (0, errno, "fstat");
return 0;
}
- if (directories == SKIP_DIRECTORIES && S_ISDIR (stats->stat.st_mode))
- return 0;
+ if (fd != STDIN_FILENO) {
+ if (directories == SKIP_DIRECTORIES && S_ISDIR (stats->stat.st_mode))
+ return 0;
#ifndef DJGPP
- if (devices == SKIP_DEVICES && (S_ISCHR(stats->stat.st_mode) || S_ISBLK(stats->stat.st_mode) || S_ISSOCK(stats->stat.st_mode) || S_ISFIFO(stats->stat.st_mode)))
+ if (devices == SKIP_DEVICES && (S_ISCHR(stats->stat.st_mode) || S_ISBLK(stats->stat.st_mode) || S_ISSOCK(stats->stat.st_mode) || S_ISFIFO(stats->stat.st_mode)))
#else
- if (devices == SKIP_DEVICES && (S_ISCHR(stats->stat.st_mode) || S_ISBLK(stats->stat.st_mode)))
+ if (devices == SKIP_DEVICES && (S_ISCHR(stats->stat.st_mode) || S_ISBLK(stats->stat.st_mode)))
#endif
- return 0;
+ return 0;
+ }
if (
BZflag ||
#if HAVE_LIBZ > 0