diff options
Diffstat (limited to 'usr.bin/tail/tail.c')
-rw-r--r-- | usr.bin/tail/tail.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/usr.bin/tail/tail.c b/usr.bin/tail/tail.c index fa1e8f6..9162d17 100644 --- a/usr.bin/tail/tail.c +++ b/usr.bin/tail/tail.c @@ -219,7 +219,13 @@ main(int argc, char *argv[]) exit(1); } - if ((sb.st_mode & S_IFMT) == S_IFSOCK || (sb.st_mode & S_IFMT) == S_IFIFO) { + /* + * Determine if input is a pipe. 4.4BSD will set the SOCKET + * bit in the st_mode field for pipes. Fix this then. + */ + if (lseek(fileno(stdin), (off_t)0, SEEK_CUR) == -1 && + errno == ESPIPE) { + errno = 0; fflag = 0; /* POSIX.2 requires this. */ } |