strip .git suffix from name - 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 ede4982f67f54904a1be6de77c6db033d56b0a34
 (DIR) parent db02820a175c43cf1c225928bc09dd3fd5d93d71
 (HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
       Date:   Wed,  6 Jan 2016 20:00:38 +0100
       
       strip .git suffix from name
       
       also free stripped_name in the case of stagit-index
       
       Diffstat:
         M stagit-index.c                      |      14 +++++++-------
         M stagit.c                            |      23 ++++++++++++++---------
       
       2 files changed, 21 insertions(+), 16 deletions(-)
       ---
 (DIR) diff --git a/stagit-index.c b/stagit-index.c
       @@ -118,13 +118,13 @@ writeheader(FILE *fp)
        int
        writefooter(FILE *fp)
        {
       -        return !fputs("</tbody></table></div></body>\n</html>", fp);
       +        return !fputs("</tbody>\n</table>\n</div>\n</body>\n</html>\n", fp);
        }
        
        int
        writelog(FILE *fp)
        {
       -        char *stripped_name, *p;
       +        char *stripped_name = NULL, *p;
                git_commit *commit = NULL;
                const git_signature *author;
                git_revwalk *w = NULL;
       @@ -144,18 +144,17 @@ writelog(FILE *fp)
        
                author = git_commit_author(commit);
        
       -        fputs("<tr><td><a href=\"", fp);
       -        xmlencode(fp, name, strlen(name));
       -        fputs("/log.html\">", fp);
       -
                /* strip .git suffix */
                if (!(stripped_name = strdup(name)))
                        err(1, "strdup");
                if ((p = strrchr(stripped_name, '.')))
                        if (!strcmp(p, ".git"))
                                *p = '\0';
       -        xmlencode(fp, stripped_name, strlen(stripped_name));
        
       +        fputs("<tr><td><a href=\"", fp);
       +        xmlencode(fp, stripped_name, strlen(stripped_name));
       +        fputs("/log.html\">", fp);
       +        xmlencode(fp, stripped_name, strlen(stripped_name));
                fputs("</a></td><td>", fp);
                xmlencode(fp, description, strlen(description));
                fputs("</td><td>", fp);
       @@ -168,6 +167,7 @@ writelog(FILE *fp)
                git_commit_free(commit);
        err:
                git_revwalk_free(w);
       +        free(stripped_name);
        
                return ret;
        }
 (DIR) diff --git a/stagit.c b/stagit.c
       @@ -42,7 +42,8 @@ static git_repository *repo;
        static const char *relpath = "";
        static const char *repodir;
        
       -static char name[255];
       +static char *name;
       +static char *stripped_name;
        static char description[255];
        static char cloneurl[1024];
        static int hasreadme, haslicense;
       @@ -239,7 +240,7 @@ writeheader(FILE *fp)
                        "<html dir=\"ltr\" lang=\"en\">\n<head>\n"
                        "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n"
                        "<meta http-equiv=\"Content-Language\" content=\"en\" />\n<title>", fp);
       -        xmlencode(fp, name, strlen(name));
       +        xmlencode(fp, stripped_name, strlen(stripped_name));
                if (description[0])
                        fputs(" - ", fp);
                xmlencode(fp, description, strlen(description));
       @@ -251,7 +252,7 @@ writeheader(FILE *fp)
                fprintf(fp, "<a href=\"../%s\"><img src=\"%slogo.png\" alt=\"\" width=\"32\" height=\"32\" /></a>",
                        relpath, relpath);
                fputs("</td><td><h1>", fp);
       -        xmlencode(fp, name, strlen(name));
       +        xmlencode(fp, stripped_name, strlen(stripped_name));
                fputs("</h1><span class=\"desc\">", fp);
                xmlencode(fp, description, strlen(description));
                fputs("</span></td></tr>", fp);
       @@ -553,9 +554,8 @@ writeatom(FILE *fp)
        
                fputs("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
                      "<feed xmlns=\"http://www.w3.org/2005/Atom\">\n<title>", fp);
       -        xmlencode(fp, name, strlen(name));
       -        fputs(", branch master</title>\n<subtitle>", fp);
       -
       +        xmlencode(fp, stripped_name, strlen(stripped_name));
       +        fputs(", branch HEAD</title>\n<subtitle>", fp);
                xmlencode(fp, description, strlen(description));
                fputs("</subtitle>\n", fp);
        
       @@ -914,9 +914,14 @@ main(int argc, char *argv[])
                }
        
                /* use directory name as name */
       -        p = xbasename(repodir);
       -        snprintf(name, sizeof(name), "%s", p);
       -        free(p);
       +        name = xbasename(repodir);
       +
       +        /* strip .git suffix */
       +        if (!(stripped_name = strdup(name)))
       +                err(1, "strdup");
       +        if ((p = strrchr(stripped_name, '.')))
       +                if (!strcmp(p, ".git"))
       +                        *p = '\0';
        
                /* read description or .git/description */
                snprintf(path, sizeof(path), "%s%s%s",