all repos — slstatus @ 10dbc9543edd5b5a7929dd8fa87ed33dd545375c

my build of slstatus (tools.suckless.org/slstatus/)

Merge fmt_human_2 and fmt_human_10 to one function

Now only one function, fmt_human, takes an additional argument "base".
Aaron Marcher me@drkhsh.at
Mon, 21 May 2018 14:44:21 +0200
commit

10dbc9543edd5b5a7929dd8fa87ed33dd545375c

parent

fc0dde5a60a066b8506834f508aebf0ea5055990

7 files changed, 43 insertions(+), 45 deletions(-)

jump to
M components/cpu.ccomponents/cpu.c

@@ -20,7 +20,7 @@ "%"SCNu64, &freq) != 1) {

return NULL; } - return fmt_human_10(freq * 1000); + return fmt_human(freq * 1000, 1000); } const char *

@@ -67,7 +67,7 @@ warn("sysctl 'HW_CPUSPEED':");

return NULL; } - return fmt_human_10((size_t)freq * 1000 * 1000); + return fmt_human((size_t)freq * 1000 * 1000, 1000); } const char *
M components/disk.ccomponents/disk.c

@@ -16,7 +16,7 @@ warn("statvfs '%s':", mnt);

return NULL; } - return fmt_human_2(fs.f_frsize * fs.f_bavail); + return fmt_human(fs.f_frsize * fs.f_bavail, 1024); } const char *

@@ -43,7 +43,7 @@ warn("statvfs '%s':", mnt);

return NULL; } - return fmt_human_2(fs.f_frsize * fs.f_blocks); + return fmt_human(fs.f_frsize * fs.f_blocks, 1024); } const char *

@@ -56,5 +56,5 @@ warn("statvfs '%s':", mnt);

return NULL; } - return fmt_human_2(fs.f_frsize * (fs.f_blocks - fs.f_bfree)); + return fmt_human(fs.f_frsize * (fs.f_blocks - fs.f_bfree), 1024); }
M components/netspeeds.ccomponents/netspeeds.c

@@ -29,7 +29,8 @@ if (oldrxbytes == 0) {

return NULL; } - return fmt_human_2((rxbytes - oldrxbytes) * 1000 / interval); + return fmt_human((rxbytes - oldrxbytes) * 1000 / interval, + 1024); } const char *

@@ -54,7 +55,8 @@ if (oldtxbytes == 0) {

return NULL; } - return fmt_human_2((txbytes - oldtxbytes) * 1000 / interval); + return fmt_human((txbytes - oldtxbytes) * 1000 / interval, + 1024); } #elif defined(__OpenBSD__) #include <string.h>

@@ -95,7 +97,8 @@ if (oldrxbytes == 0) {

return NULL; } - return fmt_human_2((rxbytes - oldrxbytes) * 1000 / interval); + return fmt_human((rxbytes - oldrxbytes) * 1000 / interval, + 1024); } const char *

@@ -130,6 +133,7 @@ if (oldtxbytes == 0) {

return NULL; } - return fmt_human_2((txbytes - oldtxbytes) * 1000 / interval); + return fmt_human_2((txbytes - oldtxbytes) * 1000 / interval, + 1024); } #endif
M components/ram.ccomponents/ram.c

@@ -17,7 +17,7 @@ &free, &free, &free) != 3) {

return NULL; } - return fmt_human_2(free * 1024); + return fmt_human(free * 1024, 1024); } const char *

@@ -48,7 +48,7 @@ &total) != 1) {

return NULL; } - return fmt_human_2(total * 1024); + return fmt_human(total * 1024, 1024); } const char *

@@ -65,7 +65,8 @@ &total, &free, &buffers, &buffers, &cached) != 5) {

return NULL; } - return fmt_human_2((total - free - buffers - cached) * 1024); + return fmt_human((total - free - buffers - cached) * 1024, + 1024); } #elif defined(__OpenBSD__) #include <stdlib.h>

@@ -99,8 +100,8 @@ int free_pages;

if (load_uvmexp(&uvmexp)) { free_pages = uvmexp.npages - uvmexp.active; - return fmt_human_2(pagetok(free_pages, - uvmexp.pageshift) * 1024); + return fmt_human(pagetok(free_pages, uvmexp.pageshift) * + 1024, 1024); } return NULL;

@@ -126,8 +127,9 @@ {

struct uvmexp uvmexp; if (load_uvmexp(&uvmexp)) { - return fmt_human_2(pagetok(uvmexp.npages, - uvmexp.pageshift) * 1024); + return fmt_human(pagetok(uvmexp.npages, + uvmexp.pageshift) * 1024, + 1024); } return NULL;

@@ -139,8 +141,9 @@ {

struct uvmexp uvmexp; if (load_uvmexp(&uvmexp)) { - return fmt_human_2(pagetok(uvmexp.active, - uvmexp.pageshift) * 1024); + return fmt_human(pagetok(uvmexp.active, + uvmexp.pageshift) * 1024, + 1024); } return NULL;
M components/swap.ccomponents/swap.c

@@ -48,7 +48,7 @@ return NULL;

} sscanf(match, "SwapFree: %ld kB\n", &free); - return fmt_human_2(free * 1024); + return fmt_human(free * 1024, 1024); } const char *

@@ -98,7 +98,7 @@ return NULL;

} sscanf(match, "SwapTotal: %ld kB\n", &total); - return fmt_human_2(total * 1024); + return fmt_human(total * 1024, 1024); } const char *

@@ -126,7 +126,7 @@ return NULL;

} sscanf(match, "SwapFree: %ld kB\n", &free); - return fmt_human_2((total - free - cached) * 1024); + return fmt_human((total - free - cached) * 1024, 1024); } #elif defined(__OpenBSD__) #include <stdlib.h>

@@ -178,7 +178,7 @@ int total, used;

getstats(&total, &used); - return fmt_human_2((total - used) * 1024); + return fmt_human((total - used) * 1024, 1024); } const char *

@@ -202,7 +202,7 @@ int total, used;

getstats(&total, &used); - return fmt_human_2(total * 1024); + return fmt_human(total * 1024, 1024); } const char *

@@ -212,6 +212,6 @@ int total, used;

getstats(&total, &used); - return fmt_human_2(used * 1024); + return fmt_human(used * 1024, 1024); } #endif
M util.cutil.c

@@ -87,32 +87,24 @@ return buf;

} const char * -fmt_human_2(size_t num) +fmt_human(size_t num, int base) { size_t i; double scaled; - const char *prefix[] = { "", "Ki", "Mi", "Gi", "Ti", "Pi", "Ei", - "Zi", "Yi" }; + const char *siprefix[] = { "", "k", "M", "G", "T", "P", "E", "Z", "Y" }; + const char *iecprefix[] = { "", "Ki", "Mi", "Gi", "Ti", "Pi", "Ei", + "Zi", "Yi" }; + char *prefix[9]; - scaled = num; - for (i = 0; i < LEN(prefix) && scaled >= 1024; i++) { - scaled /= 1024.0; + if (base == 1000) { + memcpy(prefix, siprefix, sizeof(prefix)); + } else if (base == 1024) { + memcpy(prefix, iecprefix, sizeof(prefix)); } - return bprintf("%.1f%s", scaled, prefix[i]); -} - -const char * -fmt_human_10(size_t num) -{ - size_t i; - double scaled; - const char *prefix[] = { "", "K", "M", "G", "T", "P", "E", - "Z", "Y" }; - scaled = num; - for (i = 0; i < LEN(prefix) && scaled >= 1000; i++) { - scaled /= 1000.0; + for (i = 0; i < LEN(prefix) && scaled >= 1024; i++) { + scaled /= base; } return bprintf("%.1f%s", scaled, prefix[i]);
M util.hutil.h

@@ -10,6 +10,5 @@ void die(const char *, ...);

int esnprintf(char *str, size_t size, const char *fmt, ...); const char *bprintf(const char *fmt, ...); -const char *fmt_human_2(size_t num); -const char *fmt_human_10(size_t num); +const char *fmt_human(size_t num, int iec); int pscanf(const char *path, const char *fmt, ...);