Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=fwsetup-ng.git;a=commitdiff;h=c04889bcbb77613b2bb991eb7637dc4fe5fd72e2
commit c04889bcbb77613b2bb991eb7637dc4fe5fd72e2 Author: James Buren <[email protected]> Date: Wed Aug 15 14:02:23 2012 -0500 add function for converting raw size to human readable string diff --git a/fwsetup.h b/fwsetup.h index 5aa5030..dace6d6 100644 --- a/fwsetup.h +++ b/fwsetup.h @@ -128,6 +128,7 @@ extern void *malloc0(size_t n); extern pid_t execute(const char *cmd); extern void eprintf(const char *fmt,...) __attribute__((format(printf,1,2))); extern void snprintf_append(char *s,size_t size,const char *fmt,...) __attribute__((format(printf,3,4))); +extern char *size_to_string(unsigned long long n); extern unsigned long long string_to_size(const char *s); extern void *list_append(void *list,size_t n); extern void *list_find_start(void *list); diff --git a/utility.c b/utility.c index bfc6902..626c06a 100644 --- a/utility.c +++ b/utility.c @@ -198,6 +198,58 @@ extern void snprintf_append(char *s,size_t size,const char *fmt,...) va_end(args); } +extern char *size_to_string(unsigned long long n) +{ + ASSERT_ARGS(n == 0,0); + + unsigned long long divisor = 0; + const char *suffix = 0; + long double ld = 0; + char buf[LINE_MAX] = {0}; + + if(n >= EXBIBYTE) + { + divisor = EXBIBYTE; + suffix = "EiB"; + } + else if(n >= PEBIBYTE) + { + divisor = PEBIBYTE; + suffix = "PiB"; + } + else if(n >= TEBIBYTE) + { + divisor = TEBIBYTE; + suffix = "TiB"; + } + else if(n >= GIBIBYTE) + { + divisor = GIBIBYTE; + suffix = "GiB"; + } + else if(n >= MEBIBYTE) + { + divisor = MEBIBYTE; + suffix = "MiB"; + } + else if(n >= KIBIBYTE) + { + divisor = KIBIBYTE; + suffix = "KiB"; + } + else + { + divisor = 1; + suffix = "BiB"; + } + + ld = (long double) n / divisor; + + snprintf(buf,sizeof(buf),"%.2LF%s",ld,suffix); + + return strdup(buf); +} + extern unsigned long long string_to_size(const char *s) { ASSERT_ARGS(s == 0,0); @@ -207,7 +259,7 @@ extern unsigned long long string_to_size(const char *s) errno = 0; - n = strtoull(s,&suffix); + n = strtoull(s,&suffix,10); if(errno != 0) { _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
