2024-07-09 19:33:45 +00:00
|
|
|
#include "human.h"
|
2024-07-01 10:23:00 +00:00
|
|
|
|
2024-07-09 19:54:12 +00:00
|
|
|
char mu_hs_buf[MU_HUMAN_BUF_SIZE + 1];
|
|
|
|
|
2024-07-10 19:59:28 +00:00
|
|
|
char *mu_humansize(off_t n, int block) {
|
2024-07-01 10:23:00 +00:00
|
|
|
memset(mu_hs_buf, '\0', sizeof(mu_hs_buf));
|
|
|
|
|
|
|
|
char *postfixes = "BKMGTPE";
|
2024-07-10 19:59:28 +00:00
|
|
|
size_t i = 0;
|
2024-07-01 10:23:00 +00:00
|
|
|
double size = n;
|
|
|
|
|
2024-07-10 19:59:28 +00:00
|
|
|
while (size > (off_t)block) {
|
|
|
|
size /= (off_t)block;
|
|
|
|
i++;
|
|
|
|
}
|
2024-07-01 10:23:00 +00:00
|
|
|
|
|
|
|
if (i)
|
|
|
|
snprintf(mu_hs_buf, sizeof(mu_hs_buf), "%.1f%c", size, postfixes[i]);
|
|
|
|
|
|
|
|
else
|
2024-07-10 19:59:28 +00:00
|
|
|
snprintf(mu_hs_buf, sizeof(mu_hs_buf), "%jd", n);
|
2024-07-01 10:23:00 +00:00
|
|
|
|
|
|
|
return mu_hs_buf;
|
|
|
|
}
|