micro-utils/include/human.h

31 lines
555 B
C
Raw Normal View History

2024-07-01 10:23:00 +00:00
#ifndef _HUMAN_H
#define _HUMAN_H
#include <stdlib.h>
#include <stdint.h>
#define MU_HUMAN_BUF_SIZE 16
2024-07-09 12:43:55 +00:00
static char *mu_humansize(off_t n, off_t block) {
2024-07-01 10:23:00 +00:00
static char mu_hs_buf[MU_HUMAN_BUF_SIZE + 1];
memset(mu_hs_buf, '\0', sizeof(mu_hs_buf));
char *postfixes = "BKMGTPE";
double size = n;
size_t i;
for (i = 0; i < strlen(postfixes) && size >= block; i++)
size /= block;
if (i)
snprintf(mu_hs_buf, sizeof(mu_hs_buf), "%.1f%c", size, postfixes[i]);
else
snprintf(mu_hs_buf, sizeof(mu_hs_buf), "%ju", n);
return mu_hs_buf;
}
#endif