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

From: Pádraig Brady <[email-masked]>
Date: Sun, 18 May 2014 02:33:30 +0100

On 05/17/2014 05:44 PM, Paul Eggert wrote:
> 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

Not sure how much of an issue that would be in practice.

> 
> 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.

Not worth an option I think,
so let's leave this for now.

thanks,
Pádraig.