CE better human_size ()
This commit is contained in:
25
ce/interp.c
25
ce/interp.c
@@ -26,23 +26,16 @@ bool interp_is_running (void) { return run; }
|
||||
void interp_shutdown (void) { run = false; }
|
||||
|
||||
static void human_size (double size, double* out, char** str) {
|
||||
if (size >= 1024.0f && size < 1024.0f * 1024.0f) {
|
||||
*out = (double)size / 1024.0f;
|
||||
*str = "KiB";
|
||||
} else if (size >= 1024.0f * 1024.0f && size < 1024.0f * 1024.0f * 1024.0f) {
|
||||
*out = (double)size / (1024.0f * 1024.0f);
|
||||
*str = "MiB";
|
||||
} else if (size >= 1024.0f * 1024.0f * 1024.0f && size < 1024.0f * 1024.0f * 1024.0f * 1024.0f) {
|
||||
*out = (double)size / (1024.0f * 1024.0f * 1024.0f);
|
||||
*str = "GiB";
|
||||
} else if (size >= 1024.0f * 1024.0f * 1024.0f * 1024.0f &&
|
||||
size < 1024.0f * 1024.0f * 1024.0f * 1024.0f * 1024.0f) {
|
||||
*out = (double)size / (1024.0f * 1024.0f * 1024.0f * 1024.0f);
|
||||
*str = "TiB";
|
||||
} else {
|
||||
*out = 0.0f;
|
||||
*str = "???";
|
||||
static char* units[] = {"B", "KiB", "MiB", "GiB", "TiB", "PiB"};
|
||||
|
||||
size_t i = 0;
|
||||
while (size >= 1024.0 && i < (sizeof (units) / sizeof (units[0])) - 1) {
|
||||
size /= 1024.0;
|
||||
i++;
|
||||
}
|
||||
|
||||
*out = size;
|
||||
*str = units[i];
|
||||
}
|
||||
|
||||
static void echo (struct context* context, char** strings, size_t strings_count) {
|
||||
|
||||
Reference in New Issue
Block a user