URI: 
       file page improvements - stagit-gopher - A git gopher frontend. (mirror)
  HTML 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 d77d972007d6f996ab4667b9dbbd1e241304c61e
   DIR parent 23fdbb0c8cd8f875e678c17ef79919a22d704c7a
  HTML Author: Eivind Uggedal <eivind@uggedal.com>
       Date:   Thu, 10 Dec 2015 18:13:08 +0000
       
       file page improvements
       
       - header with filename and size
       - handle binary files
       - small style changes
       
       Diffstat:
         M urmoms.c                            |      36 ++++++++++++++++++-------------
       
       1 file changed, 21 insertions(+), 15 deletions(-)
       ---
   DIR diff --git a/urmoms.c b/urmoms.c
       @@ -529,31 +529,37 @@ writeatom(FILE *fp)
        }
        
        int
       -writeblob(const char *path)
       +writeblob(git_index_entry *entry)
        {
       -        char htmlpath[PATH_MAX];
       -        char refpath[PATH_MAX];
       +        char fpath[PATH_MAX];
       +        char ref[PATH_MAX];
                git_object *obj = NULL;
                FILE *fp;
        
       -        snprintf(htmlpath, sizeof(htmlpath), "file/%s.html", path);
       -        snprintf(refpath, sizeof(refpath), "HEAD:%s", path);
       +        snprintf(fpath, sizeof(fpath), "file/%s.html", entry->path);
       +        snprintf(ref, sizeof(ref), "HEAD:%s", entry->path);
        
       -        if (git_revparse_single(&obj, repo, refpath))
       -                return 1; /* TODO: handle error */
       +        if (git_revparse_single(&obj, repo, ref))
       +                return 1;
        
       -        mkdirp(dirname(htmlpath));
       +        if (mkdirp(dirname(fpath)))
       +                return 1;
        
                relpath = "../"; /* TODO: dynamic relpath based on number of /'s */
        
       -        fp = efopen(htmlpath, "w+b");
       +        fp = efopen(fpath, "w+b");
                writeheader(fp);
       -        fputs("<pre>\n", fp);
       -        writeblobhtml(fp, (git_blob *)obj);
       -        if (ferror(fp))
       -                err(1, "fwrite");
       +        fprintf(fp, "<p>%s (%" PRIu64 "b)</p><hr/>", entry->path, entry->file_size);
       +        if (git_blob_is_binary((git_blob *)obj)) {
       +                fprintf(fp, "<p>Binary file</p>\n");
       +        } else {
       +                fputs("<pre>\n", fp);
       +                writeblobhtml(fp, (git_blob *)obj);
       +                if (ferror(fp))
       +                        err(1, "fwrite");
       +                fputs("</pre>\n", fp);
       +        }
                git_object_free(obj);
       -        fputs("</pre>\n", fp);
                writefooter(fp);
                fclose(fp);
        
       @@ -589,7 +595,7 @@ writefiles(FILE *fp)
                        fprintf(fp, "%" PRIu64, entry->file_size);
                        fputs("</td></tr>\n", fp);
        
       -                writeblob(entry->path);
       +                writeblob(entry);
                }
        
                fputs("</tbody></table>", fp);