aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/pending.c16
-rw-r--r--lib/pending.h1
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);