ascii-chat
Binary v0.15.83-53-gb711d8720
Library lib/v0.3.2-701-gb711d8720
Video chat in your terminal
Loading...
Searching...
No Matches
format.h File Reference

📊 String Formatting Utilities More...

Go to the source code of this file.

Functions

void format_bytes_pretty (size_t bytes, char *out, size_t out_capacity)
 Format byte count into human-readable string.
void format_number_compact (uint64_t value, char *out, size_t out_capacity)

Detailed Description

📊 String Formatting Utilities

Definition in file util/format.h.

Function Documentation

◆ format_number_compact()

void format_number_compact ( uint64_t value,
char * out,
size_t out_capacity )

Format a decimal count with lowercase k/m/b/t/p/e suffixes. Uses at most one rounded decimal place, omitting a trailing .0. Values below 1,000 stay exact; rounded 1,000-unit values promote a tier. Output is NUL-terminated when capacity is nonzero; NULL output is ignored.

Definition at line 46 of file util/format.c.

46 {
47 if (!out || !out_capacity)
48 return;
49 static const char suffixes[] = "kmbtpe";
50 if (value < 1000) {
51 SAFE_IGNORE_PRINTF_RESULT(safe_snprintf(out, out_capacity, "%" PRIu64, value));
52 return;
53 }
54 uint64_t scale = 1000;
55 size_t unit = 0;
56 while (unit + 1 < sizeof(suffixes) - 1 && value / scale >= 1000) {
57 scale *= 1000;
58 ++unit;
59 }
60 uint64_t whole = value / scale;
61 uint64_t step = scale / 10;
62 uint64_t fraction = (value % scale + step / 2) / step;
63 if (fraction == 10) {
64 ++whole;
65 fraction = 0;
66 }
67 if (whole == 1000 && unit + 1 < sizeof(suffixes) - 1) {
68 whole = 1;
69 ++unit;
70 }
71 if (fraction)
73 safe_snprintf(out, out_capacity, "%" PRIu64 ".%" PRIu64 "%c", whole, fraction, suffixes[unit]));
74 else
75 SAFE_IGNORE_PRINTF_RESULT(safe_snprintf(out, out_capacity, "%" PRIu64 "%c", whole, suffixes[unit]));
76}
unsigned long long uint64_t
Definition common.h:63
int safe_snprintf(char *buffer, size_t buffer_size, const char *format,...)
Platform-safe snprintf wrapper.
#define SAFE_IGNORE_PRINTF_RESULT(expr)
Definition system.h:529
static bool size_t gotel_query_t * out
Definition queries.h:8

References out, SAFE_IGNORE_PRINTF_RESULT, and safe_snprintf().

Referenced by ui_sync_render().