Added a utility function to convert an arbitrary byte size into a human readable string.
E.g. 849484 becomes "829.57 KB".
This commit is contained in:
parent
0a7cb86014
commit
10d8157477
@ -305,6 +305,23 @@ int is_number(const char* value, int* num)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const char* format_size(size_t bytes, char* buf, size_t bufsize)
|
||||||
|
{
|
||||||
|
static const char* quant[] = { "B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB" };
|
||||||
|
size_t b = bytes;
|
||||||
|
size_t factor = 0;
|
||||||
|
size_t divisor = 1;
|
||||||
|
while (b > 1024)
|
||||||
|
{
|
||||||
|
factor++;
|
||||||
|
b = (b >> 10);
|
||||||
|
divisor = (divisor << 10);
|
||||||
|
}
|
||||||
|
snprintf(buf, bufsize, "%.2f %s", (double) bytes / (double) divisor, quant[factor]);
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const char* uhub_itoa(int val)
|
const char* uhub_itoa(int val)
|
||||||
{
|
{
|
||||||
static char buf[22];
|
static char buf[22];
|
||||||
|
@ -42,6 +42,19 @@ extern char* strip_off_quotes(char* line);
|
|||||||
*/
|
*/
|
||||||
extern int is_number(const char* str, int* num);
|
extern int is_number(const char* str, int* num);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert the 'bytes' number into a formatted byte size string.
|
||||||
|
* E.g. "129012" becomes "125.99 KB".
|
||||||
|
* Note, if the output buffer is not large enough then the output
|
||||||
|
* will be truncated. The buffer will always be \0 terminated.
|
||||||
|
*
|
||||||
|
* @param bytes the number that should be formatted.
|
||||||
|
* @param[out] buf the buffer the string should be formatted into
|
||||||
|
* @param bufsize the size of 'buf'
|
||||||
|
* @return A pointer to buf.
|
||||||
|
*/
|
||||||
|
extern const char* format_size(size_t bytes, char* buf, size_t bufsize);
|
||||||
|
|
||||||
extern int file_read_lines(const char* file, void* data, file_line_handler_t handler);
|
extern int file_read_lines(const char* file, void* data, file_line_handler_t handler);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user