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.
This commit is contained in:
Andrey A. Chernov 2013-08-08 11:53:47 +00:00
parent 4371b649aa
commit 81191eeb58
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=254093

View File

@ -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