diff options
author | Jim Meyering <jim@meyering.net> | 2000-08-23 07:33:28 +0000 |
---|---|---|
committer | Jim Meyering <jim@meyering.net> | 2000-08-23 07:33:28 +0000 |
commit | d704481d1f594bbe08e70f157410da2427b22161 (patch) | |
tree | 91abe31a45f351b33b4cc6e2c61933229190c44f /src | |
parent | 9445f3be0531daf88e782cee465c9aff65090b62 (diff) | |
download | coreutils-d704481d1f594bbe08e70f157410da2427b22161.tar.xz |
back out last change
Diffstat (limited to 'src')
-rw-r--r-- | src/dd.c | 32 |
1 files changed, 0 insertions, 32 deletions
@@ -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) |