diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pending.c | 16 | ||||
-rw-r--r-- | lib/pending.h | 1 |
2 files changed, 17 insertions, 0 deletions
diff --git a/lib/pending.c b/lib/pending.c index d0cf3e26..a804d5b8 100644 --- a/lib/pending.c +++ b/lib/pending.c @@ -63,3 +63,19 @@ void daemonize(void) dup2(fd, 2); if (fd > 2) close(fd); } + +char *human_readable(unsigned long long size) +{ + static char buf[32]; + char *tmp = (buf+4); //unsigned long long can come in 20byte string. + int index, sz; + + for (index = 0; 1024 < size>>(10*index); index++); + sz = size>>(10*index); + if (sz < 10 && index) { + sprintf(tmp, "%llu", size>>(10*(index-1))); + sprintf(buf, "%c.%c", tmp[0], tmp[1]); + } else sprintf(buf, "%u", sz); + sprintf(buf, "%s%c", buf, " KMGTPE"[index]); + return buf; +} diff --git a/lib/pending.h b/lib/pending.h index 335ca522..fbd72c46 100644 --- a/lib/pending.h +++ b/lib/pending.h @@ -30,3 +30,4 @@ char *astrcat (char *, char *); char *xastrcat (char *, char *); void daemonize(void); +char *human_readable(unsigned long long size); |