aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2015-08-08 21:10:44 -0500
committerRob Landley <rob@landley.net>2015-08-08 21:10:44 -0500
commit0fb465194789965b6fb2efd31995a2441144d650 (patch)
treec55819bbb0f6ea3a575d8adb05ad03e16ca34ae7 /lib
parent11d2ff5ffac9382be0d6971b8ac84df21eca85df (diff)
downloadtoybox-0fb465194789965b6fb2efd31995a2441144d650.tar.gz
Different tools have different ideas about what human-readable output
looks like. dd uses "7 MB" where du uses "7M", for example. this patch adds flags, similar to the BSD humanize_number. most callers will pass 0.
Diffstat (limited to 'lib')
-rw-r--r--lib/lib.c6
-rw-r--r--lib/lib.h4
2 files changed, 6 insertions, 4 deletions
diff --git a/lib/lib.c b/lib/lib.c
index 4b87f8cf..c16cffe4 100644
--- a/lib/lib.c
+++ b/lib/lib.c
@@ -868,7 +868,7 @@ void names_to_pid(char **names, int (*callback)(pid_t pid, char *name))
// 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 human_readable(char *buf, unsigned long long num, int style)
{
int end, len;
@@ -881,9 +881,9 @@ int human_readable(char *buf, unsigned long long num)
buf[1] = '.';
end = 3;
}
- buf[end++] = ' ';
+ if (style & HR_SPACE) buf[end++] = ' ';
if (len) buf[end++] = " KMGTPE"[len];
- buf[end++] = 'B';
+ if (style & HR_B) buf[end++] = 'B';
buf[end++] = 0;
return end;
diff --git a/lib/lib.h b/lib/lib.h
index 1b3f9575..17a4a974 100644
--- a/lib/lib.h
+++ b/lib/lib.h
@@ -177,7 +177,9 @@ void replace_tempfile(int fdin, int fdout, char **tempname);
void crc_init(unsigned int *crc_table, int little_endian);
void base64_init(char *p);
int yesno(char *prompt, int def);
-int human_readable(char *buf, unsigned long long num);
+#define HR_SPACE 1
+#define HR_B 2
+int human_readable(char *buf, unsigned long long num, int style);
int qstrcmp(const void *a, const void *b);
int xpoll(struct pollfd *fds, int nfds, int timeout);