Subject: Re: bug#33757: 27.0.50; dired-du-mode displays incorrect human readable file sizes for non-GNU systems

From: Robert Pluim <[email-masked]>
Date: Sat, 15 Dec 2018 10:52:31 +0100

Matthew Newton <[email-masked]> writes:

> * Reproduction
> 1. Run MacOS (Or I suspect any OS that is not GNU-based).
> 2. emacs -Q
> 3. M-x package-install RET dired-du RET
> 4. M-x dired RET ~ RET
> 5. M-x dired-du-mode RET
> 6. Notice that file sizes are displayed in kbytes, not bytes (they are displayed in bytes in a GNU-based system)
> 7. M-x dired-du--toggle-human-readable RET
> 8. M-x z z (to enable file sizes displated in human readable form, i.e. sizes ending in k, M, G, T)
> 9. File sizes displayed are one order of magnitude smaller than their
> actual size (e.g. if the file size is 2MB then it will be displayed as
> 2kB)
>
> * Discussion
> The problem seems to arise when the custom variable
> dired-du-used-space-program is set. For a GNU-based system, it gets
> set to "du -sb" but for MacOS it gets set to "du -sk". Then later when
> the human readable sizes are calculated, this difference does not
> appear to be accounted for.
>
> Why do we make the distinction between a GNU-based system and anything
> else? Can we just change the logic setting dired-du-used-space-program
> to always run "du -sb”?
>

$ uname -a
Darwin rpluim-mac 18.2.0 Darwin Kernel Version 18.2.0: Fri Oct  5 19:41:49 PDT 2018; root:xnu-4903.221.2~2/RELEASE_X86_64 x86_64
$ du -sb
du: illegal option -- b
usage: du [-H | -L | -P] [-a | -s | -d depth] [-c] [-h | -k | -m | -g]
[-x] [-I mask] [file ...]

IOW the fix will have to be in dired-du.

Robert