back out last change
authorJim Meyering <jim@meyering.net>
Wed, 23 Aug 2000 07:33:28 +0000 (07:33 +0000)
committerJim Meyering <jim@meyering.net>
Wed, 23 Aug 2000 07:33:28 +0000 (07:33 +0000)
src/dd.c

index ef5a9ed6264db67a007ace070a7c991b6577ff45..2a89b6b0147b9fd1ab96de54927fcffae90a9449 100644 (file)
--- a/src/dd.c
+++ b/src/dd.c
@@ -718,37 +718,6 @@ swab_buffer (unsigned char *buf, size_t *nread)
   return ++bufstart;
 }
 
-/* Return nonzero iff the file referenced by FDESC is of a type for
-   which lseek's return value is known to be invalid on some systems.
-   Otherwise, return zero.
-   For example, return nonzero if FDESC references a character device
-   (on any system) because the lseek on many Linux systems incorrectly
-   returns `0' for tape devices, even though the function fails to
-   perform the requested operation.  In that case, lseek should return
-   nonzero and set errno.  */
-
-static int
-buggy_lseek_support (int fdesc)
-{
-  /* We have to resort to this because on some systems, lseek doesn't work
-     on some special files but doesn't return an error, either.
-     In particular, the Linux tape drivers are a problem.
-     For example, when I did the following using dd-4.0y or earlier on a
-     Linux-2.2.17 system with a Exabyte SCSI tape drive:
-
-       dev=/dev/nst0
-       reset='mt -f $dev rewind; mt -f $dev fsf 1'
-       eval $reset; dd if=$dev bs=32k of=out1
-       eval $reset; dd if=$dev bs=32k of=out2 skip=1
-
-     the resulting files, out1 and out2, would compare equal.  */
-
-  struct stat stats;
-
-  return (fstat (fdesc, &stats) == 0
-         && (S_ISCHR (stats.st_mode)));
-}
-
 /* Throw away RECORDS blocks of BLOCKSIZE bytes on file descriptor FDESC,
    which is open with read permission for FILE.  Store up to BLOCKSIZE
    bytes of the data at a time in BUF, if necessary. */
@@ -763,7 +732,6 @@ skip (int fdesc, char *file, uintmax_t records, size_t blocksize,
      operation, fall back on using read.  */
   o = records * blocksize;
   if (o / blocksize != records
-      || buggy_lseek_support (fdesc)
       || lseek (fdesc, o, SEEK_SET) == -1)
     {
       while (records-- > 0)