youtube/gopher: print views with thousand separator - frontends - front-ends for some sites (experiment) (DIR) Log (DIR) Files (DIR) Refs (DIR) README (DIR) LICENSE --- (DIR) commit 7385c0b104dea41686519ed734825da88ca2fb32 (DIR) parent 4dcebc72f5a00e9b94a8e2338fb0127662933fa3 (HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Tue, 7 Mar 2023 19:26:17 +0100 youtube/gopher: print views with thousand separator Diffstat: M youtube/gopher.c | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) --- (DIR) diff --git a/youtube/gopher.c b/youtube/gopher.c @@ -42,6 +42,32 @@ info(const char *s) line('i', s, ""); } +/* print views with thousand separators */ +static void +printviews(const char *s) +{ + const char *p; + int ndigits = 0; + + /* first count all digits */ + for (p = s; *p; p++) + if (*p >= '0' && *p <= '9') + ndigits++; + + for (p = s; *p; p++) { + if (!(*p >= '0' && *p <= '9')) + continue; + + putchar(*p); + ndigits--; + + /* show separator on every 3 digits and when there are + digits remaining */ + if ((ndigits % 3) == 0 && ndigits > 0) + putchar(','); + } +} + void header(void) { @@ -144,7 +170,7 @@ render_search(struct search_response *r) } if (v->viewcount[0]) { OUT("iViews: "); - OUTTEXT(v->viewcount); + printviews(v->viewcount); printf("\t%s\t%s\t%s\r\n", "", host, port); } } @@ -198,7 +224,8 @@ render_video(struct video_response *r) } OUT("iViews: "); - printf("%ld", r->viewcount); + snprintf(buf, sizeof(buf), "%ld", r->viewcount); + printviews(buf); printf("\t%s\t%s\t%s\r\n", "", host, port); if (r->publishdate[0]) {