From ac6ba92926470d1f7d7d735e43ee77f8b8dbfab8 Mon Sep 17 00:00:00 2001 From: Will Sowerbutts Date: Sun, 25 Jan 2015 22:53:20 +0000 Subject: [PATCH] Fix count= option to dd --- Applications/util/dd.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Applications/util/dd.c b/Applications/util/dd.c index e29bd394..be694f19 100644 --- a/Applications/util/dd.c +++ b/Applications/util/dd.c @@ -71,6 +71,7 @@ void main(int argc, char *argv[]) long skipval; long intotal; long outtotal; + long inmax; char *buf; infile = NULL; @@ -79,6 +80,7 @@ void main(int argc, char *argv[]) skipval = 0; blocksize = 512; count = 0x7fffffff; + inmax = 0; while (--argc > 0) { str = *++argv; @@ -204,6 +206,8 @@ void main(int argc, char *argv[]) goto cleanup; } } + if(count != 0x7fffffff) + inmax = count * blocksize; while ((incc = read(infd, buf, blocksize)) > 0) { intotal += incc; cp = buf; @@ -222,6 +226,8 @@ void main(int argc, char *argv[]) cp += outcc; incc -= outcc; } + if(inmax && intotal >= inmax) + break; } if (incc < 0) -- 2.34.1