aboutsummaryrefslogtreecommitdiff
path: root/coreutils/dd.c
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2018-01-10 11:04:09 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2018-01-10 11:04:09 +0100
commit2c876774a90ddb7478937ead096937f64e6bd7ec (patch)
treee3cb74f7e6a1bf304dc1d1f993d081b34478ef17 /coreutils/dd.c
parent5afd63a631f49112ac305ea1532dd226e9c39d12 (diff)
downloadbusybox-2c876774a90ddb7478937ead096937f64e6bd7ec.tar.gz
dd: fixed partial count logic
$ busybox dd if=/dev/zero of=/dev/loop0 bs=100M count=8; echo $? 8+0 records in 7+0 records out <=========== FIXED, was 7+1 805220352 bytes (767.9MB) copied, 0.464010 seconds, 1.6GB/s 1 function old new delta write_and_stats 97 99 +2 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'coreutils/dd.c')
-rw-r--r--coreutils/dd.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/coreutils/dd.c b/coreutils/dd.c
index 9d173cc13..38b2a6aa1 100644
--- a/coreutils/dd.c
+++ b/coreutils/dd.c
@@ -202,8 +202,10 @@ static bool write_and_stats(const void *buf, size_t len, size_t obs,
G.out_full++;
return 0;
}
- if (n) /* > 0 */
+ if ((size_t)n == len) {
G.out_part++;
+ return 0;
+ }
return 1;
}