#include "human.h" char *mu_humansize(off_t n, off_t block) { 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; }