add and use pretty num

This commit is contained in:
2026-05-11 10:45:42 +02:00
parent 694b496282
commit 88c6db07c2
3 changed files with 16 additions and 6 deletions

View File

@@ -117,7 +117,7 @@ static void *display_thread(void *arg) {
snprintf(gpuclock, sizeof(gpuclock), "%d/%dMHz", sensors->gpu.clock_core, sensors->gpu.clock_mem);
lcd_writef(&lcd, 0, 0, "%s %s%c", sensors->td.date, sensors->td.time, lcd_bar(&lcd, 5, sensors->gpu.usage_core / 100.0));
lcd_writef(&lcd, 26, 0, "%.2f %.2f %.2f", sensors->loadavg[0], sensors->loadavg[1], sensors->loadavg[2]); // will fuck up
lcd_writef(&lcd, 26, 0, "%s %s %s", P_NUM(sensors->loadavg[0]), P_NUM(sensors->loadavg[1]), P_NUM(sensors->loadavg[2]));
lcd_writef(&lcd, 0, 1, "%d/%d%c", sensors->cpu.tctl, sensors->cpu.tccd1, 0);
lcd_writef(&lcd, 7, 1, "%s", P_BYTES(sensors->ram.used, 0));

View File

@@ -10,7 +10,10 @@
#include "log.h"
#include "utils.h"
#define MKPATH(path, dir, file) do {char *nt = stpcpy(path, dir); *nt++ = '/'; stpcpy(nt, file); } while (0)
#define MKPATH(path, dir, file) do { \
char *nt = stpcpy(path, dir); \
*nt++ = '/'; stpcpy(nt, file); \
} while (0)
inline void timespec_add_ms(struct timespec *ts, const uint16_t ms) {
ts->tv_nsec += ms * 1000000L;
@@ -26,7 +29,13 @@ inline uint64_t timespec_diff_us(const struct timespec *a, const struct timespec
return sec * 1000000LL + nsec / 1000LL;
}
char *pretty_bytes(const uint64_t bytes, int8_t start_suffix, char *buf, const size_t bufsz) {
inline char *pretty_num(const double num, char *buf, const size_t bufsz) {
const uint8_t decimals = (num < 10) ? 2 : (num < 100) ? 1 : 0;
snprintf(buf, bufsz, "%.*f", decimals, num);
return buf;
}
inline char *pretty_bytes(const uint64_t bytes, int8_t start_suffix, char *buf, const size_t bufsz) {
constexpr char suffix_list[] = {'K', 'M', 'G', 'T', 'P', 'E', 'Z'};
start_suffix *= -1;
double bytes_d = (double)bytes;
@@ -34,8 +43,7 @@ char *pretty_bytes(const uint64_t bytes, int8_t start_suffix, char *buf, const s
bytes_d /= 1024.0;
start_suffix++;
}
const uint8_t decimals = (bytes_d < 10) ? 2 : (bytes_d < 100) ? 1 : 0;
snprintf(buf, bufsz, "%.*f%c", decimals, bytes_d, suffix_list[MAX(0, start_suffix)]);
snprintf(buf, bufsz, "%s%c", P_NUM(bytes_d), suffix_list[MAX(0, start_suffix)]);
return buf;
}