slstatus

Fork of suckless' slstatus with my personal patches
git clone https://git.instinctive.eu/slstatus.git
Log | Files | Refs | README | LICENSE

commit 10dbc9543edd5b5a7929dd8fa87ed33dd545375c
parent fc0dde5a60a066b8506834f508aebf0ea5055990
Author: Aaron Marcher <me@drkhsh.at>
Date:   Mon, 21 May 2018 14:44:21 +0200

Merge fmt_human_2 and fmt_human_10 to one function

Now only one function, fmt_human, takes an additional argument "base".

Diffstat:
Mcomponents/cpu.c | 4++--
Mcomponents/disk.c | 6+++---
Mcomponents/netspeeds.c | 12++++++++----
Mcomponents/ram.c | 21++++++++++++---------
Mcomponents/swap.c | 12++++++------
Mutil.c | 32++++++++++++--------------------
Mutil.h | 3+--
7 files changed, 44 insertions(+), 46 deletions(-)

diff --git a/components/cpu.c b/components/cpu.c @@ -20,7 +20,7 @@ return NULL; } - return fmt_human_10(freq * 1000); + return fmt_human(freq * 1000, 1000); } const char * @@ -67,7 +67,7 @@ return NULL; } - return fmt_human_10((size_t)freq * 1000 * 1000); + return fmt_human((size_t)freq * 1000 * 1000, 1000); } const char * diff --git a/components/disk.c b/components/disk.c @@ -16,7 +16,7 @@ disk_free(const char *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 @@ disk_total(const char *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 @@ disk_used(const char *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); } diff --git a/components/netspeeds.c b/components/netspeeds.c @@ -29,7 +29,8 @@ return NULL; } - return fmt_human_2((rxbytes - oldrxbytes) * 1000 / interval); + return fmt_human((rxbytes - oldrxbytes) * 1000 / interval, + 1024); } const char * @@ -54,7 +55,8 @@ 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 @@ return NULL; } - return fmt_human_2((rxbytes - oldrxbytes) * 1000 / interval); + return fmt_human((rxbytes - oldrxbytes) * 1000 / interval, + 1024); } const char * @@ -130,6 +133,7 @@ return NULL; } - return fmt_human_2((txbytes - oldtxbytes) * 1000 / interval); + return fmt_human_2((txbytes - oldtxbytes) * 1000 / interval, + 1024); } #endif diff --git a/components/ram.c b/components/ram.c @@ -17,7 +17,7 @@ return NULL; } - return fmt_human_2(free * 1024); + return fmt_human(free * 1024, 1024); } const char * @@ -48,7 +48,7 @@ return NULL; } - return fmt_human_2(total * 1024); + return fmt_human(total * 1024, 1024); } const char * @@ -65,7 +65,8 @@ 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 @@ 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; diff --git a/components/swap.c b/components/swap.c @@ -48,7 +48,7 @@ } 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 @@ } 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 @@ } 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 @@ getstats(&total, &used); - return fmt_human_2((total - used) * 1024); + return fmt_human((total - used) * 1024, 1024); } const char * @@ -202,7 +202,7 @@ getstats(&total, &used); - return fmt_human_2(total * 1024); + return fmt_human(total * 1024, 1024); } const char * @@ -212,6 +212,6 @@ getstats(&total, &used); - return fmt_human_2(used * 1024); + return fmt_human(used * 1024, 1024); } #endif diff --git a/util.c b/util.c @@ -87,32 +87,24 @@ bprintf(const char *fmt, ...) } 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" }; - - scaled = num; - for (i = 0; i < LEN(prefix) && scaled >= 1024; i++) { - scaled /= 1024.0; + 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]; + + 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]); diff --git a/util.h b/util.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, ...);