Subject: bug#17505: Interface inconsistency, use of intelligent defaults.

From: Paul Eggert <[email-masked]>
Date: Sat, 17 May 2014 09:44:01 -0700

Pádraig Brady wrote:
>    if ((count % 1000) && ! (count % 1024))
>      options |= human_base_1024

Unfortunately this won't work either, as it would introduce a worse 
user-interface glitch: transfers of some block counts would be treated 
inconsistently with transfers of others.  If I've done the math right:

$ dd if=/dev/zero of=/dev/null count=99997
99997+0 records in
99997+0 records out
51198464 bytes (51 MB) copied, 0.101863 s, 503 MB/s
$ dd if=/dev/zero of=/dev/null count=99998
99998+0 records in
99998+0 records out
51198976 bytes (49 MiB) copied, 0.0938181 s, 546 MB/s

A quick glance at the output might incorrectly conclude that the first 
dd (51 M) transferred more data than the second dd (49 M).

If we're going to make a change, perhaps it would be better to make it a 
separate option that ORs in human_base_1024, so that a user who prefers 
powers-of-1024 can alias 'dd' to 'dd status=human-readable' or whatever.