youtube/gopher: add simple soft line-wrapping - frontends - front-ends for some sites (experiment)
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit 4dcebc72f5a00e9b94a8e2338fb0127662933fa3
(DIR) parent bf8c35a7535d6791e618edc08a055822cba4e304
(HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Tue, 28 Feb 2023 20:38:01 +0100
youtube/gopher: add simple soft line-wrapping
Disable hard line-wrapping and keep it simple for now.
Diffstat:
M youtube/gopher.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
---
(DIR) diff --git a/youtube/gopher.c b/youtube/gopher.c
@@ -157,7 +157,8 @@ render_video(struct video_response *r)
{
char buf[256];
const char *s, *e;
- int i;
+ /* softwrap: try to wrap on word boundary, otherwise hardwrap */
+ int i, sw = 72, hw = 9999;
if (pledge("stdio", NULL) == -1)
exit(1);
@@ -221,7 +222,8 @@ render_video(struct video_response *r)
for (s = e = r->shortdescription; ; e++) {
if (!i)
putchar('i');
- if (*e == '\n' || *e == '\0') {
+ if (*e == '\n' || *e == '\0' ||
+ i > hw || (i > sw && (*e == ' ' || *e == '\t'))) {
i = 0;
gophertext(stdout, s, e - s);
printf("\t%s\t%s\t%s\r\n", "", host, port);
@@ -229,7 +231,9 @@ render_video(struct video_response *r)
break;
s = e + 1;
} else {
- i = 1;
+ /* start of rune, wrongly assume 1 rune is 1 column for now */
+ if (!((unsigned char)*e & 0x80))
+ i++;
}
}
}