From 1fede547092c5302a27d5c668a47335b36fcdf53 Mon Sep 17 00:00:00 2001 From: andersen Date: Fri, 19 Nov 1999 02:38:58 +0000 Subject: Stuf git-svn-id: svn://busybox.net/trunk/busybox@108 69ca8d6d-28ef-0310-b511-8ec308f3f277 --- dd.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'dd.c') diff --git a/dd.c b/dd.c index 9468cddfc..39c6a6263 100644 --- a/dd.c +++ b/dd.c @@ -162,8 +162,13 @@ extern int dd_main (int argc, char **argv) intotal = 0; outTotal = 0; - if (inFile == NULL) - inFd = STDIN; + if (inFile == NULL) { + struct stat statBuf; + inFd = fileno(stdin); + if (fstat(inFd, &statBuf) < 0) + exit( FALSE); + count = statBuf.st_size; + } else inFd = open (inFile, 0); @@ -174,7 +179,7 @@ extern int dd_main (int argc, char **argv) } if (outFile == NULL) - outFd = STDOUT; + outFd = fileno(stdout); else outFd = creat (outFile, 0666); @@ -191,6 +196,8 @@ extern int dd_main (int argc, char **argv) if (inCc < 0) { perror (inFile); goto cleanup; + } else if (inCc == 0) { + goto cleanup; } intotal += inCc; cp = buf; @@ -202,6 +209,8 @@ extern int dd_main (int argc, char **argv) if (outCc < 0) { perror (outFile); goto cleanup; + } else if (outCc == 0) { + goto cleanup; } inCc -= outCc; -- cgit v1.2.3-55-g6feb