tLet the user configure the displayed menu items - sacc - sacc (saccomys): simple gopher client.
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) LICENSE
       ---
 (DIR) commit 80db85ac77a36eb3f591ea7f38816b6339607821
 (DIR) parent 0cb0ce0bb84aca55dd9d66d22fd6550ee0a58ada
 (HTM) Author: Quentin Rameau <quinq@fifth.space>
       Date:   Mon, 13 Aug 2018 11:08:36 +0200
       
       Let the user configure the displayed menu items
       
       Diffstat:
         M common.h                            |      21 +++++++++++++++++++++
         M config.def.h                        |      22 ++++++++++++++++++++++
         M sacc.c                              |      37 +++++++++++++++----------------
         M ui_ti.c                             |       2 +-
         M ui_txt.c                            |       2 +-
       
       5 files changed, 63 insertions(+), 21 deletions(-)
       ---
 (DIR) diff --git a/common.h b/common.h
       t@@ -3,6 +3,27 @@
        typedef struct item Item;
        typedef struct dir Dir;
        
       +enum {
       +        TXT,
       +        DIR,
       +        CSO,
       +        ERR,
       +        MAC,
       +        DOS,
       +        UUE,
       +        IND,
       +        TLN,
       +        BIN,
       +        MIR,
       +        IBM,
       +        GIF,
       +        IMG,
       +        URL,
       +        INF,
       +        UNK,
       +        BRK,
       +};
       +
        struct item {
                char type;
                char redtype;
 (DIR) diff --git a/config.def.h b/config.def.h
       t@@ -25,3 +25,25 @@ static char *plumber = "xdg-open";
        
        /* temporary directory template (must end with six 'X' characters) */
        static char tmpdir[] = "/tmp/sacc-XXXXXX";
       +
       +/* menu items strings */
       +static char *typestr[] = {
       +        [TXT] = "Txt+",
       +        [DIR] = "Dir+",
       +        [CSO] = "CSO|",
       +        [ERR] = "Err|",
       +        [MAC] = "Mac+",
       +        [DOS] = "DOS+",
       +        [UUE] = "UUE+",
       +        [IND] = "Ind+",
       +        [TLN] = "Tln|",
       +        [BIN] = "Bin+",
       +        [MIR] = "Mir+",
       +        [IBM] = "IBM|",
       +        [GIF] = "GIF+",
       +        [IMG] = "Img+",
       +        [URL] = "URL+",
       +        [INF] = "   |",
       +        [UNK] = " ? +",
       +        [BRK] = "!  |", /* malformed entry */
       +};
 (DIR) diff --git a/sacc.c b/sacc.c
       t@@ -19,7 +19,6 @@
        #include <sys/wait.h>
        
        #include "common.h"
       -
        #include "config.h"
        
        static char *mainurl;
       t@@ -223,43 +222,43 @@ typedisplay(char t)
        {
                switch (t) {
                case '0':
       -                return "Text+";
       +                return typestr[TXT];
                case '1':
       -                return "Dir +";
       +                return typestr[DIR];
                case '2':
       -                return "CSO |";
       +                return typestr[CSO];
                case '3':
       -                return "Err |";
       +                return typestr[ERR];
                case '4':
       -                return "Macf+";
       +                return typestr[MAC];
                case '5':
       -                return "DOSf+";
       +                return typestr[DOS];
                case '6':
       -                return "UUEf+";
       +                return typestr[UUE];
                case '7':
       -                return "Find+";
       +                return typestr[IND];
                case '8':
       -                return "Tlnt+";
       +                return typestr[TLN];
                case '9':
       -                return "Binf+";
       +                return typestr[BIN];
                case '+':
       -                return "Mirr+";
       +                return typestr[MIR];
                case 'T':
       -                return "IBMt|";
       +                return typestr[IBM];
                case 'g':
       -                return "GIF +";
       +                return typestr[GIF];
                case 'I':
       -                return "Img +";
       +                return typestr[IMG];
                case 'h':
       -                return "HTML+";
       +                return typestr[URL];
                case 'i':
       -                return "    |";
       +                return typestr[INF];
                default:
                        /* "Characters '0' through 'Z' are reserved." (ASCII) */
                        if (t >= '0' && t <= 'Z')
       -                        return "!   |";
       +                        return typestr[BRK];
                        else
       -                        return "UNKN|";
       +                        return typestr[UNK];
                }
        }
        
 (DIR) diff --git a/ui_ti.c b/ui_ti.c
       t@@ -7,8 +7,8 @@
        #include <unistd.h>
        #include <sys/types.h>
        
       -#include "config.h"
        #include "common.h"
       +#include "config.h"
        
        #define C(c) #c
        #define S(c) C(c)
 (DIR) diff --git a/ui_txt.c b/ui_txt.c
       t@@ -103,7 +103,7 @@ printstatus(Item *item, char c)
                      "%3lld%%%*c %s/%c%s [%c]: ";
                if (snprintf(bufout, sizeof(bufout), fmt,
                             (printoff + lines-1 >= nitems) ? 100 :
       -                     (printoff + lines) * 100 / nitems, ndigits(nitems)+2, '|',
       +                     (printoff + lines) * 100 / nitems, ndigits(nitems)+1, '|',
                             item->host, item->type, item->selector, c, item->port)
                    >= sizeof(bufout))
                        bufout[sizeof(bufout)-1] = '\0';