diff options
author | Rob Landley <rob@landley.net> | 2014-05-06 06:31:28 -0500 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2014-05-06 06:31:28 -0500 |
commit | 48c172ba589cfd848624b51f6f748b56bc217775 (patch) | |
tree | 36439338e020b5fc3dad76c067117a8182624246 /lib/lib.c | |
parent | 30e28cf7e166cf54b3a2a4fea5e6e134b5968812 (diff) | |
download | toybox-48c172ba589cfd848624b51f6f748b56bc217775.tar.gz |
Switch human_readable() to just outputing decimal kilo/mega/gigabytes, make du use it, move it from lib/pending.c to lib.c.
Diffstat (limited to 'lib/lib.c')
-rw-r--r-- | lib/lib.c | 23 |
1 files changed, 23 insertions, 0 deletions
@@ -783,3 +783,26 @@ void names_to_pid(char **names, int (*callback)(pid_t pid, char *name)) } closedir(dp); } + +// display first few digits of number with power of two units, except we're +// actually just counting decimal digits and showing mil/bil/trillions. +int human_readable(char *buf, unsigned long long num) +{ + int end, len; + + len = sprintf(buf, "%lld", num); + end = ((len-1)%3)+1; + len /= 3; + + if (len && end == 1) { + buf[2] = buf[1]; + buf[1] = '.'; + end = 3; + } + buf[end++] = ' '; + if (len) buf[end++] = " KMGTPE"[len]; + buf[end++] = 'B'; + buf[end++] = 0; + + return end; +} |