From 1a0eedf795546171a7e84b47f0f02c7d286d2ec4 Mon Sep 17 00:00:00 2001 From: Ashwini Kumar Date: Sun, 26 Aug 2012 21:17:00 -0500 Subject: Add du command. --- lib/lib.c | 27 +++++++++++++++++++++++++++ lib/lib.h | 2 ++ 2 files changed, 29 insertions(+) (limited to 'lib') diff --git a/lib/lib.c b/lib/lib.c index 2774e7c0..3deabda2 100644 --- a/lib/lib.c +++ b/lib/lib.c @@ -1073,3 +1073,30 @@ mode_t string_to_mode(char *modestr, mode_t mode) barf: error_exit("bad mode '%s'", modestr); } + + +char* make_human_readable(unsigned long long size, unsigned long unit) +{ + unsigned int frac = 0; + if(unit) { + size = (size/(unit)) + (size%(unit)?1:0); + return xmsprintf("%llu", size); + } + else { + static char units[] = {'\0', 'K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'}; + int index = 0; + while(size >= 1024) { + frac = size%1024; + size /= 1024; + index++; + } + frac = (frac/102) + ((frac%102)?1:0); + if(frac >= 10) { + size += 1; + frac = 0; + } + if(frac) return xmsprintf("%llu.%u%c", size, frac, units[index]); + else return xmsprintf("%llu%c", size, units[index]); + } + return NULL; //not reached +} diff --git a/lib/lib.h b/lib/lib.h index 9c90a2df..d81e2d94 100644 --- a/lib/lib.h +++ b/lib/lib.h @@ -174,3 +174,5 @@ mode_t string_to_mode(char *mode_str, mode_t base); int read_password(char * buff, int buflen, char* mesg); int update_password(char *filename, char* username, char* encrypted); +// du helper functions +char* make_human_readable(unsigned long long size, unsigned long unit); -- cgit v1.2.3