tail: avoid new diagnostic when applying -f to a pipe on linux-2.3.38
authorJim Meyering <meyering@redhat.com>
Mon, 24 Jan 2011 08:37:10 +0000 (09:37 +0100)
committerJim Meyering <meyering@redhat.com>
Mon, 24 Jan 2011 09:02:19 +0000 (10:02 +0100)
* src/tail.c (fremote): Do not print a diagnostic when
fstatfs (pipe_FD, &buf) fails, as it now does on linux-2.3.38.
This avoids the spurious failure of tests/misc/tail's f-pipe-1
test, when running in input-from-pipe mode.

src/tail.c

index 9682a53..bcd2d99 100644 (file)
@@ -887,8 +887,11 @@ fremote (int fd, const char *name)
   int err = fstatfs (fd, &buf);
   if (err != 0)
     {
-      error (0, errno, _("cannot determine location of %s. "
-                         "reverting to polling"), quote (name));
+      /* On at least linux-2.6.38, fstatfs fails with ENOSYS when FD
+         is open on a pipe.  Treat that like a remote file.  */
+      if (errno != ENOSYS)
+        error (0, errno, _("cannot determine location of %s. "
+                           "reverting to polling"), quote (name));
     }
   else
     {