master xplshn/aruu / shared / libutil / human.c
 1/* See LICENSE file for copyright and license details. */
 2#include <stdio.h>
 3#include <string.h>
 4#include <stdint.h>
 5
 6#include "../util.h"
 7
 8char *
 9humansize(off_t n)
10{
11	static char buf[16];
12	const char postfixes[] = "BKMGTPE";
13	double size;
14	int i;
15
16	for (size = n, i = 0; size >= 1024 && i < (int)strlen(postfixes); i++)
17		size /= 1024;
18
19	if (!i)
20		snprintf(buf, sizeof(buf), "%ju", (uintmax_t)n);
21	else
22		snprintf(buf, sizeof(buf), "%.1f%c", size, postfixes[i]);
23
24	return buf;
25}