svn commit: r273129 - head/sys/kern
Konstantin Belousov
kostikbel at gmail.com
Wed Oct 29 16:55:30 UTC 2014
On Tue, Oct 28, 2014 at 04:28:37AM +1100, Bruce Evans wrote:
> @diff -u2 dd.c~ dd.c
> @--- dd.c~ Wed Apr 7 20:20:48 2004
> @+++ dd.c Wed Apr 7 20:20:49 2004
> @@@ -247,21 +245,18 @@
> @ io->flags |= ISTRUNC;
> @ if (S_ISCHR(sb.st_mode) || S_ISBLK(sb.st_mode)) {
> @- if (ioctl(io->fd, FIODTYPE, &type) == -1) {
> @+ if (ioctl(io->fd, FIODTYPE, &type) == -1)
> @ err(1, "%s", io->name);
> @- } else {
> @+ else {
> @ if (type & D_TAPE)
> @ io->flags |= ISTAPE;
> @ else if (type & (D_DISK | D_MEM))
> @- io->flags |= ISSEEK;
> @- if (S_ISCHR(sb.st_mode) && (type & D_TAPE) == 0)
> @+ io->flags |= ISSEEKABLE;
> @+ if (S_ISCHR(sb.st_mode))
> @ io->flags |= ISCHR;
> @ }
> @- return;
> @- }
> @- errno = 0;
> @- if (lseek(io->fd, (off_t)0, SEEK_CUR) == -1 && errno == ESPIPE)
> @- io->flags |= ISPIPE;
> @- else
> @- io->flags |= ISSEEK;
> @+ } else if (lseek(io->fd, (off_t)0, SEEK_CUR) == 0)
> @+ io->flags |= ISSEEKABLE;
> @+ else if (errno == ESPIPE)
> @+ io->flags |= ISPIPE; /* XXX fixed in 4.4BSD */
> @ }
> @
Ok, I tried to de-obfuscate and restore the patch above.
diff --git a/bin/dd/dd.c b/bin/dd/dd.c
index 8ae11a7..aadc7da 100644
--- a/bin/dd/dd.c
+++ b/bin/dd/dd.c
@@ -257,7 +257,7 @@ getfdtype(IO *io)
err(1, "%s", io->name);
if (S_ISREG(sb.st_mode))
io->flags |= ISTRUNC;
- if (S_ISCHR(sb.st_mode) || S_ISBLK(sb.st_mode)) {
+ if (S_ISCHR(sb.st_mode) || S_ISBLK(sb.st_mode)) {
if (ioctl(io->fd, FIODTYPE, &type) == -1) {
err(1, "%s", io->name);
} else {
@@ -265,16 +265,14 @@ getfdtype(IO *io)
io->flags |= ISTAPE;
else if (type & (D_DISK | D_MEM))
io->flags |= ISSEEK;
- if (S_ISCHR(sb.st_mode) && (type & D_TAPE) == 0)
+ if (S_ISCHR(sb.st_mode))
io->flags |= ISCHR;
}
- return;
- }
- errno = 0;
- if (lseek(io->fd, (off_t)0, SEEK_CUR) == -1 && errno == ESPIPE)
- io->flags |= ISPIPE;
- else
+ } else if (lseek(io->fd, (off_t)0, SEEK_CUR) == 0) {
io->flags |= ISSEEK;
+ } else if (errno == ESPIPE) {
+ io->flags |= ISPIPE;
+ }
}
static void
More information about the svn-src-all
mailing list