use the new escaping style in geomyidae for links - stagit-gopher - A git gopher frontend. (mirror)
 (HTM) git clone git://bitreich.org/stagit-gopher/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/stagit-gopher/
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Tags
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit dc940cae641026d49ef94d021d7a335c5b3689b3
 (DIR) parent a67bac151fe0a30eccfcf6593f1666d0995085db
 (HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
       Date:   Tue, 26 Jul 2022 23:53:30 +0200
       
       use the new escaping style in geomyidae for links
       
       [| is now skipped. Escape entries only if needed, cleaning up the output a bit.
       Lines starting with 't' don't need to be escaped.
       
       Diffstat:
         M stagit-gopher-index.c               |       3 ++-
         M stagit-gopher.c                     |      15 +++++++++------
       
       2 files changed, 11 insertions(+), 7 deletions(-)
       ---
 (DIR) diff --git a/stagit-gopher-index.c b/stagit-gopher-index.c
       @@ -173,7 +173,8 @@ void
        writeheader(FILE *fp)
        {
                if (description[0]) {
       -                putchar('t');
       +                if (description[0] == '[')
       +                        fputs("[|", fp);
                        gphtext(fp, description, strlen(description));
                        fputs("\n\n", fp);
                }
 (DIR) diff --git a/stagit-gopher.c b/stagit-gopher.c
       @@ -463,9 +463,9 @@ gphtextnl(FILE *fp, const char *s, size_t len)
                size_t i, n = 0;
        
                for (i = 0; s[i] && i < len; i++) {
       -                /* escape with 't' at the start of a line */
       -                if (!n && (s[i] == 't' || s[i] == '['))
       -                        putc('t', fp);
       +                /* escape '[' with "[|" at the start of a line */
       +                if (!n && s[i] == '[')
       +                        fputs("[|", fp);
        
                        switch (s[i]) {
                        case '\t': fputs("        ", fp);
       @@ -592,7 +592,8 @@ printtimeshort(FILE *fp, const git_time *intime)
        void
        writeheader(FILE *fp, const char *title)
        {
       -        putc('t', fp);
       +        if (title[0] == '[')
       +                fputs("[|", fp);
                gphtext(fp, title, strlen(title));
                if (title[0] && strippedname[0])
                        fputs(" - ", fp);
       @@ -795,7 +796,8 @@ printshowfile(FILE *fp, struct commitinfo *ci)
                                if (git_patch_get_hunk(&hunk, &nhunklines, patch, j))
                                        break;
        
       -                        putc('t', fp);
       +                        if (hunk->header_len > 0 && hunk->header[0] == '[')
       +                                fputs("[|", fp);
                                gphtext(fp, hunk->header, hunk->header_len);
                                putc('\n', fp);
        
       @@ -1024,7 +1026,8 @@ writeblob(git_object *obj, const char *fpath, const char *filename, size_t files
        
                fp = efopen(fpath, "w");
                writeheader(fp, filename);
       -        putc('t', fp);
       +        if (filename[0] == '[')
       +                fputs("[|", fp);
                gphtext(fp, filename, strlen(filename));
                fprintf(fp, " (%zuB)\n", filesize);
                fputs("---\n", fp);