From 5afd63a631f49112ac305ea1532dd226e9c39d12 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Wed, 10 Jan 2018 10:58:55 +0100 Subject: [PATCH] dd: exit with 1 if last write was incomplete $ busybox dd if=/dev/zero of=/dev/loop0 bs=100M count=8; echo $? 8+0 records in 7+1 records out 805220352 bytes (767.9MB) copied, 0.464010 seconds, 1.6GB/s 1 <=========== FIXED function old new delta write_and_stats 96 97 +1 Signed-off-by: Denys Vlasenko --- coreutils/dd.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/coreutils/dd.c b/coreutils/dd.c index d302f35d3..9d173cc13 100644 --- a/coreutils/dd.c +++ b/coreutils/dd.c @@ -195,14 +195,16 @@ static bool write_and_stats(const void *buf, size_t len, size_t obs, ssize_t n = full_write_or_warn(buf, len, filename); if (n < 0) return 1; - if ((size_t)n == obs) - G.out_full++; - else if (n) /* > 0 */ - G.out_part++; #if ENABLE_FEATURE_DD_THIRD_STATUS_LINE G.total_bytes += n; #endif - return 0; + if ((size_t)n == obs) { + G.out_full++; + return 0; + } + if (n) /* > 0 */ + G.out_part++; + return 1; } #if ENABLE_LFS -- 2.25.1