mirror of
https://github.com/freebsd/freebsd-src
synced 2024-09-06 17:18:32 +00:00
Make "-D skip" option work with FIFO by opening file in non-blocking mode.
Reviewed by: jhb Tested by: delphij
This commit is contained in:
parent
3193ad883a
commit
87ec376216
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=245761
|
@ -304,7 +304,7 @@ reset (int fd, char const *file, struct stats *stats)
|
|||
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)))
|
||||
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)))
|
||||
#endif
|
||||
|
@ -942,6 +942,7 @@ grepfile (char const *file, struct stats *stats)
|
|||
int desc;
|
||||
int count;
|
||||
int status;
|
||||
int flags;
|
||||
|
||||
if (! file)
|
||||
{
|
||||
|
@ -950,7 +951,7 @@ grepfile (char const *file, struct stats *stats)
|
|||
}
|
||||
else
|
||||
{
|
||||
while ((desc = open (file, O_RDONLY)) < 0 && errno == EINTR)
|
||||
while ((desc = open (file, O_RDONLY | O_NONBLOCK)) < 0 && errno == EINTR)
|
||||
continue;
|
||||
|
||||
if (desc < 0)
|
||||
|
@ -990,6 +991,9 @@ grepfile (char const *file, struct stats *stats)
|
|||
return 1;
|
||||
}
|
||||
|
||||
flags = fcntl(desc, F_GETFL);
|
||||
flags &= ~O_NONBLOCK;
|
||||
fcntl(desc, F_SETFL, flags);
|
||||
filename = file;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue