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.