From: Denys Vlasenko Date: Wed, 10 Jan 2018 09:58:55 +0000 (+0100) Subject: dd: exit with 1 if last write was incomplete X-Git-Tag: 1_29_0~385 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=5afd63a631f49112ac305ea1532dd226e9c39d12;p=oweals%2Fbusybox.git 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 --- 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