aboutsummaryrefslogtreecommitdiff
path: root/lib/lib.c
diff options
context:
space:
mode:
authorRob Landley <rob@landley.net>2014-05-06 06:31:28 -0500
committerRob Landley <rob@landley.net>2014-05-06 06:31:28 -0500
commit48c172ba589cfd848624b51f6f748b56bc217775 (patch)
tree36439338e020b5fc3dad76c067117a8182624246 /lib/lib.c
parent30e28cf7e166cf54b3a2a4fea5e6e134b5968812 (diff)
downloadtoybox-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.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/lib.c b/lib/lib.c
index 670f6a71..1ab80351 100644
--- a/lib/lib.c
+++ b/lib/lib.c
@@ -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;
+}