#ifndef _HUMAN_H #define _HUMAN_H #include #include #define MU_HUMAN_BUF_SIZE 16 char *mu_humansize(off_t n, off_t block) { 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