From 6a76e652aab7d614c2b47b50318e0690c06779c4 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Fri, 19 Nov 1999 05:31:45 +0000 Subject: Stuf --- dd.c | 37 +++++++++++++------------------------ 1 file changed, 13 insertions(+), 24 deletions(-) (limited to 'dd.c') diff --git a/dd.c b/dd.c index 39c6a62..6494857 100644 --- a/dd.c +++ b/dd.c @@ -32,6 +32,7 @@ #include #include #include +#include static const char dd_usage[] = "dd [if=name] [of=name] [bs=n] [count=n]\n\n" @@ -92,27 +93,20 @@ static long getNum (const char *cp) extern int dd_main (int argc, char **argv) { - const char *inFile; - const char *outFile; + const char *inFile = NULL; + const char *outFile = NULL; char *cp; int inFd; int outFd; int inCc = 0; int outCc; - int skipBlocks; - int blockSize; - long count; - long intotal; - long outTotal; + size_t blockSize = 512; + //uintmax_t skipBlocks = 0; + uintmax_t count = (uintmax_t)-1; + uintmax_t intotal; + uintmax_t outTotal; unsigned char *buf; - inFile = NULL; - outFile = NULL; - blockSize = 512; - skipBlocks = 0; - count = 1; - - argc--; argv++; @@ -125,14 +119,14 @@ extern int dd_main (int argc, char **argv) else if (strncmp("count", *argv, 5) == 0) { count = getNum ((strchr(*argv, '='))+1); if (count <= 0) { - fprintf (stderr, "Bad count value %ld\n", count); + fprintf (stderr, "Bad count value %s\n", *argv); goto usage; } } else if (strncmp(*argv, "bs", 2) == 0) { blockSize = getNum ((strchr(*argv, '='))+1); if (blockSize <= 0) { - fprintf (stderr, "Bad block size value %d\n", blockSize); + fprintf (stderr, "Bad block size value %s\n", *argv); goto usage; } } @@ -162,13 +156,8 @@ extern int dd_main (int argc, char **argv) intotal = 0; outTotal = 0; - if (inFile == NULL) { - struct stat statBuf; + if (inFile == NULL) inFd = fileno(stdin); - if (fstat(inFd, &statBuf) < 0) - exit( FALSE); - count = statBuf.st_size; - } else inFd = open (inFile, 0); @@ -227,9 +216,9 @@ extern int dd_main (int argc, char **argv) close (outFd); free (buf); - printf ("%ld+%d records in\n", intotal / blockSize, + printf ("%ld+%d records in\n", (long)(intotal / blockSize), (intotal % blockSize) != 0); - printf ("%ld+%d records out\n", outTotal / blockSize, + printf ("%ld+%d records out\n", (long)(outTotal / blockSize), (outTotal % blockSize) != 0); exit( TRUE); usage: -- cgit v1.1