iFactorize URI formatting into sacc.c - sacc - sacc(omys), simple console gopher client Err bitreich.org 70 hgit clone git://bitreich.org/sacc/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/sacc/ URL:git://bitreich.org/sacc/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/sacc/ bitreich.org 70 1Log /scm/sacc/log.gph bitreich.org 70 1Files /scm/sacc/files.gph bitreich.org 70 1Refs /scm/sacc/refs.gph bitreich.org 70 1Tags /scm/sacc/tag bitreich.org 70 1LICENSE /scm/sacc/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit 89d3a0bd06d2345ffa98675e356a17be24a61210 /scm/sacc/commit/89d3a0bd06d2345ffa98675e356a17be24a61210.gph bitreich.org 70 1parent ed632c2c8f6b6c64acda2883a04a2739ebf3cf0f /scm/sacc/commit/ed632c2c8f6b6c64acda2883a04a2739ebf3cf0f.gph bitreich.org 70 hAuthor: Quentin Rameau URL:mailto:quinq@fifth.space bitreich.org 70 iDate: Mon, 8 Nov 2021 23:21:44 +0100 Err bitreich.org 70 i Err bitreich.org 70 iFactorize URI formatting into sacc.c Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M common.h | 2 ++ Err bitreich.org 70 i M sacc.c | 37 +++++++++++++++++++++++++++++++ Err bitreich.org 70 i M ui_ti.c | 32 ++----------------------------- Err bitreich.org 70 i M ui_txt.c | 47 ++----------------------------- Err bitreich.org 70 i Err bitreich.org 70 i4 files changed, 43 insertions(+), 75 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/common.h b/common.h /scm/sacc/file/common.h.gph bitreich.org 70 i@@ -45,12 +45,14 @@ struct dir { Err bitreich.org 70 i }; Err bitreich.org 70 i Err bitreich.org 70 i extern void (*diag)(char *fmt, ...); Err bitreich.org 70 i+ Err bitreich.org 70 i void die(const char *fmt, ...); Err bitreich.org 70 i size_t mbsprint(const char *s, size_t len); Err bitreich.org 70 i #ifdef NEED_STRCASESTR Err bitreich.org 70 i char *strcasestr(const char *h, const char *n); Err bitreich.org 70 i #endif /* NEED_STRCASESTR */ Err bitreich.org 70 i const char *typedisplay(char t); Err bitreich.org 70 i+int itemuri(Item *, char *, size_t); Err bitreich.org 70 i void uicleanup(void); Err bitreich.org 70 i void uidisplay(Item *entry); Err bitreich.org 70 i char *uiprompt(char *fmt, ...); Err bitreich.org 70 1diff --git a/sacc.c b/sacc.c /scm/sacc/file/sacc.c.gph bitreich.org 70 i@@ -265,6 +265,43 @@ typedisplay(char t) Err bitreich.org 70 i } Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i+int Err bitreich.org 70 i+itemuri(Item *item, char *buf, size_t bsz) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ int n; Err bitreich.org 70 i+ Err bitreich.org 70 i+ switch (item->type) { Err bitreich.org 70 i+ case '8': Err bitreich.org 70 i+ n = snprintf(buf, bsz, "telnet://%s@%s:%s", Err bitreich.org 70 i+ item->selector, item->host, item->port); Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ case 'T': Err bitreich.org 70 i+ n = snprintf(buf, bsz, "tn3270://%s@%s:%s", Err bitreich.org 70 i+ item->selector, item->host, item->port); Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ case 'h': Err bitreich.org 70 i+ n = snprintf(buf, bsz, "%s", item->selector + Err bitreich.org 70 i+ (strncmp(item->selector, "URL:", 4) ? 0 : 4)); Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ default: Err bitreich.org 70 i+ n = snprintf(buf, bsz, "gopher://%s", item->host); Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (n < bsz-1 && strcmp(item->port, "70")) Err bitreich.org 70 i+ n += snprintf(buf+n, bsz-n, ":%s", item->port); Err bitreich.org 70 i+ if (n < bsz-1) { Err bitreich.org 70 i+ n += snprintf(buf+n, bsz-n, "/%c%s", Err bitreich.org 70 i+ item->type, item->selector); Err bitreich.org 70 i+ } Err bitreich.org 70 i+ if (n < bsz-1 && item->type == '7' && item->tag) { Err bitreich.org 70 i+ n += snprintf(buf+n, bsz-n, "%%09%s", Err bitreich.org 70 i+ item->tag + strlen(item->selector)); Err bitreich.org 70 i+ } Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ } Err bitreich.org 70 i+ Err bitreich.org 70 i+ return n; Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i static void Err bitreich.org 70 i printdir(Item *item) Err bitreich.org 70 i { Err bitreich.org 70 1diff --git a/ui_ti.c b/ui_ti.c /scm/sacc/file/ui_ti.c.gph bitreich.org 70 i@@ -219,36 +219,8 @@ displayuri(Item *item) Err bitreich.org 70 i Err bitreich.org 70 i putp(tparm(cursor_address, lines-1, 0, 0, 0, 0, 0, 0, 0, 0)); Err bitreich.org 70 i putp(tparm(enter_standout_mode, 0, 0, 0, 0, 0, 0, 0, 0, 0)); Err bitreich.org 70 i- switch (item->type) { Err bitreich.org 70 i- case '8': Err bitreich.org 70 i- n = snprintf(bufout, sizeof(bufout), "telnet://%s@%s:%s", Err bitreich.org 70 i- item->selector, item->host, item->port); Err bitreich.org 70 i- break; Err bitreich.org 70 i- case 'h': Err bitreich.org 70 i- n = snprintf(bufout, sizeof(bufout), "%s", Err bitreich.org 70 i- item->selector); Err bitreich.org 70 i- break; Err bitreich.org 70 i- case 'T': Err bitreich.org 70 i- n = snprintf(bufout, sizeof(bufout), "tn3270://%s@%s:%s", Err bitreich.org 70 i- item->selector, item->host, item->port); Err bitreich.org 70 i- break; Err bitreich.org 70 i- default: Err bitreich.org 70 i- n = snprintf(bufout, sizeof(bufout), "gopher://%s", item->host); Err bitreich.org 70 i- Err bitreich.org 70 i- if (n < sizeof(bufout) && strcmp(item->port, "70")) { Err bitreich.org 70 i- n += snprintf(bufout+n, sizeof(bufout)-n, ":%s", Err bitreich.org 70 i- item->port); Err bitreich.org 70 i- } Err bitreich.org 70 i- if (n < sizeof(bufout)) { Err bitreich.org 70 i- n += snprintf(bufout+n, sizeof(bufout)-n, "/%c%s", Err bitreich.org 70 i- item->type, item->selector); Err bitreich.org 70 i- } Err bitreich.org 70 i- if (n < sizeof(bufout) && item->type == '7' && item->tag) { Err bitreich.org 70 i- n += snprintf(bufout+n, sizeof(bufout)-n, "%%09%s", Err bitreich.org 70 i- item->tag + strlen(item->selector)); Err bitreich.org 70 i- } Err bitreich.org 70 i- break; Err bitreich.org 70 i- } Err bitreich.org 70 i+ Err bitreich.org 70 i+ itemuri(item, bufout, sizeof(bufout)); Err bitreich.org 70 i Err bitreich.org 70 i if (n >= sizeof(bufout)) Err bitreich.org 70 i bufout[sizeof(bufout)-1] = '\0'; Err bitreich.org 70 1diff --git a/ui_txt.c b/ui_txt.c /scm/sacc/file/ui_txt.c.gph bitreich.org 70 i@@ -175,53 +175,10 @@ printuri(Item *item, size_t i) Err bitreich.org 70 i { Err bitreich.org 70 i int n; Err bitreich.org 70 i Err bitreich.org 70 i- if (!item) Err bitreich.org 70 i+ if (!item || item->type == 0 || item->type == 'i') Err bitreich.org 70 i return; Err bitreich.org 70 i Err bitreich.org 70 i- switch (item->type) { Err bitreich.org 70 i- case 0: Err bitreich.org 70 i- return; Err bitreich.org 70 i- case '8': Err bitreich.org 70 i- n = snprintf(bufout, sizeof(bufout), "telnet://%s@%s:%s", Err bitreich.org 70 i- item->selector, item->host, item->port); Err bitreich.org 70 i- break; Err bitreich.org 70 i- case 'i': Err bitreich.org 70 i- n = snprintf(bufout, sizeof(bufout), "%zu: %s", Err bitreich.org 70 i- i, item->username); Err bitreich.org 70 i- break; Err bitreich.org 70 i- case 'h': Err bitreich.org 70 i- n = snprintf(bufout, sizeof(bufout), "%zu: %s: %s", Err bitreich.org 70 i- i, item->username, item->selector); Err bitreich.org 70 i- break; Err bitreich.org 70 i- case 'T': Err bitreich.org 70 i- n = snprintf(bufout, sizeof(bufout), "tn3270://%s@%s:%s", Err bitreich.org 70 i- item->selector, item->host, item->port); Err bitreich.org 70 i- break; Err bitreich.org 70 i- default: Err bitreich.org 70 i- n = snprintf(bufout, sizeof(bufout), "%zu: ", i); Err bitreich.org 70 i- Err bitreich.org 70 i- if (n < sizeof(bufout) && *item->username) { Err bitreich.org 70 i- n += snprintf(bufout+n, sizeof(bufout)-n, "%s: ", Err bitreich.org 70 i- item->username); Err bitreich.org 70 i- } Err bitreich.org 70 i- if (n < sizeof(bufout)) { Err bitreich.org 70 i- n += snprintf(bufout+n, sizeof(bufout)-n, "gopher://%s", Err bitreich.org 70 i- item->host); Err bitreich.org 70 i- } Err bitreich.org 70 i- if (n < sizeof(bufout) && strcmp(item->port, "70")) { Err bitreich.org 70 i- n += snprintf(bufout+n, sizeof(bufout)-n, ":%s", Err bitreich.org 70 i- item->port); Err bitreich.org 70 i- } Err bitreich.org 70 i- if (n < sizeof(bufout)) { Err bitreich.org 70 i- n += snprintf(bufout+n, sizeof(bufout)-n, "/%c%s", Err bitreich.org 70 i- item->type, item->selector); Err bitreich.org 70 i- } Err bitreich.org 70 i- if (n < sizeof(bufout) && item->type == '7' && item->tag) { Err bitreich.org 70 i- n += snprintf(bufout+n, sizeof(bufout)-n, "%%09%s", Err bitreich.org 70 i- item->tag + strlen(item->selector)); Err bitreich.org 70 i- } Err bitreich.org 70 i- break; Err bitreich.org 70 i- } Err bitreich.org 70 i+ n = itemuri(item, bufout, sizeof(bufout)); Err bitreich.org 70 i Err bitreich.org 70 i if (n >= sizeof(bufout)) Err bitreich.org 70 i bufout[sizeof(bufout)-1] = '\0'; Err bitreich.org 70 .