aboutsummaryrefslogtreecommitdiff
path: root/src/fs.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/fs.c')
-rw-r--r--src/fs.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/fs.c b/src/fs.c
index 849ac0f..f561c84 100644
--- a/src/fs.c
+++ b/src/fs.c
@@ -336,3 +336,27 @@ int mkdirs(const char *_path, mode_t mode) {
split_free(parts);
return result;
}
+
+char *human_readable_size(uint64_t n) {
+ int i;
+ double result = (double)n;
+ char *unit[] = {"B", "K", "M", "G", "T", "P", "E"};
+ char r[255];
+ memset(r, '\0', sizeof(r));
+
+ for (i = 0; i < sizeof(unit); i++) {
+ if (labs(result) < 1024) {
+ break;
+ }
+ result /= 1024.0;
+ }
+
+ if (unit[i][0] == 'B') {
+ sprintf(r, "%0.0lf%s", result, unit[i]);
+ }
+ else {
+ sprintf(r, "%0.2lf%s", result, unit[i]);
+ }
+
+ return strdup(r);
+} \ No newline at end of file