tPrint better URI - sacc - sacc (saccomys): simple gopher client.
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) LICENSE
       ---
 (DIR) commit 3a53a319d4ade0631accac3fd9177e6fbfc49c7f
 (DIR) parent 26bc04284d9becc870a6a036a9a6f9bdfba8ba2a
 (HTM) Author: Quentin Rameau <quinq@fifth.space>
       Date:   Mon, 28 Oct 2019 02:12:50 +0100
       
       Print better URI
       
       Diffstat:
         M ui_ti.c                             |      20 ++++++++++++++------
         M ui_txt.c                            |      27 ++++++++++++++++++++++-----
       
       2 files changed, 36 insertions(+), 11 deletions(-)
       ---
 (DIR) diff --git a/ui_ti.c b/ui_ti.c
       t@@ -218,12 +218,20 @@ displayuri(Item *item)
                                     item->selector, item->host, item->port);
                        break;
                default:
       -                fmt = strcmp(item->port, "70") ?
       -                      "gopher://%1$s:%4$s/%2$c%3$s" :
       -                      "gopher://%s/%c%s";
       -                n = snprintf(bufout, sizeof(bufout), fmt,
       -                             item->host, item->type,
       -                             item->selector, item->port);
       +                n = snprintf(bufout, sizeof(bufout), "gopher://%s", item->host);
       +
       +                if (n < sizeof(bufout) && strcmp(item->port, "70")) {
       +                        n += snprintf(bufout+n, sizeof(bufout)-n, ":%s",
       +                                      item->port);
       +                }
       +                if (n < sizeof(bufout)) {
       +                        n += snprintf(bufout+n, sizeof(bufout)-n, "/%c%s",
       +                                      item->type, item->selector);
       +                }
       +                if (n < sizeof(bufout) && item->type == '7' && item->tag) {
       +                        n += snprintf(bufout+n, sizeof(bufout)-n, " %s",
       +                                      item->tag + strlen(item->selector));
       +                }
                        break;
                }
        
 (DIR) diff --git a/ui_txt.c b/ui_txt.c
       t@@ -199,11 +199,28 @@ printuri(Item *item, size_t i)
                                     item->selector, item->host, item->port);
                        break;
                default:
       -                fmt = strcmp(item->port, "70") ?
       -                      "%1$zu: %2$s: gopher://%3$s:%6$s/%4$c%5$s" :
       -                      "%zu: %s: gopher://%s/%c%s";
       -                n = snprintf(bufout, sizeof(bufout), fmt, i, item->username,
       -                             item->host, item->type, item->selector, item->port);
       +                n = snprintf(bufout, sizeof(bufout), "%zu: ", i);
       +
       +                if (n < sizeof(bufout) && *item->username) {
       +                        n += snprintf(bufout+n, sizeof(bufout)-n, "%s: ",
       +                                      item->username);
       +                }
       +                if (n < sizeof(bufout)) {
       +                        n += snprintf(bufout+n, sizeof(bufout)-n, "gopher://%s",
       +                                      item->host);
       +                }
       +                if (n < sizeof(bufout) && strcmp(item->port, "70")) {
       +                        n += snprintf(bufout+n, sizeof(bufout)-n, ":%s",
       +                                      item->port);
       +                }
       +                if (n < sizeof(bufout)) {
       +                        n += snprintf(bufout+n, sizeof(bufout)-n, "/%c%s",
       +                                      item->type, item->selector);
       +                }
       +                if (n < sizeof(bufout) && item->type == '7' && item->tag) {
       +                        n += snprintf(bufout+n, sizeof(bufout)-n, " %s",
       +                                      item->tag + strlen(item->selector));
       +                }
                        break;
                }