ping. On Sat, Jan 17, 2015 at 6:18 PM, enh <[email protected]> wrote: > this was the du patch. the documentation of the BSD function is > https://www.freebsd.org/cgi/man.cgi?query=humanize_number&sektion=3&n=1 > and even just between dd and du a fair number of those flags are used. > i didn't know whether you'd prefer i fix all the -h'es (and add the > missing ones) or just worry about them one at a time. i guess i should > have just gone ahead and looked at df and ls in the meantime :-) > > On Wed, Nov 26, 2014 at 12:48 PM, enh <[email protected]> wrote: >> 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. >> >> diff --git a/lib/lib.c b/lib/lib.c >> index 5923176..578f99a 100644 >> --- a/lib/lib.c >> +++ b/lib/lib.c >> @@ -831,7 +831,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; >> >> @@ -844,9 +844,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 49b02bb..e3baec4 100644 >> --- a/lib/lib.h >> +++ b/lib/lib.h >> @@ -168,7 +168,9 @@ void replace_tempfile(int fdin, int fdout, char >> **tempname); >> void crc_init(unsigned int *crc_table, int little_endian); >> int terminal_size(unsigned *x, unsigned *y); >> 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); >> >> // net.c >> int xsocket(int domain, int type, int protocol); >> diff --git a/toys/pending/dd.c b/toys/pending/dd.c >> index a5c2452..202fb4b 100644 >> --- a/toys/pending/dd.c >> +++ b/toys/pending/dd.c >> @@ -133,9 +133,9 @@ static void summary() >> //out to STDERR >> fprintf(stderr,"%llu+%llu records in\n%llu+%llu records out\n", >> st.in_full, st.in_part, >> st.out_full, st.out_part); >> - human_readable(toybuf, st.bytes); >> + human_readable(toybuf, st.bytes, HR_SPACE|HR_B); >> fprintf(stderr, "%llu bytes (%s) copied,",st.bytes, toybuf); >> - human_readable(toybuf, st.bytes/seconds); >> + human_readable(toybuf, st.bytes/seconds, HR_SPACE|HR_B); >> fprintf(stderr, "%f seconds, %s/s\n", seconds, toybuf); >> } >> >> diff --git a/toys/posix/du.c b/toys/posix/du.c >> index 22a26d3..9d537a1 100644 >> --- a/toys/posix/du.c >> +++ b/toys/posix/du.c >> @@ -55,7 +55,7 @@ static void print(long long size, struct dirtree *node) >> if (TT.maxdepth && TT.depth > TT.maxdepth) return; >> >> if (toys.optflags & FLAG_h) { >> - human_readable(toybuf, size); >> + human_readable(toybuf, size, 0); >> printf("%s", toybuf); >> } else { >> int bits = 10;
-- Elliott Hughes - http://who/enh - http://jessies.org/~enh/ Android native code/tools questions? Mail me/drop by/add me as a reviewer. _______________________________________________ Toybox mailing list [email protected] http://lists.landley.net/listinfo.cgi/toybox-landley.net
