stagit

Personal stagit fork
git clone git://git.alexwennerberg.com/stagit
Log | Files | Refs | README | LICENSE

commit 5d313f14fa7af39bd08b0ea6655c0d12cbbe295f
parent 9b147467602e7033ded5b56360c884eab3fa5423
Author: Armaan Bhojwani <me@armaanb.net>
Date:   Wed,  7 Apr 2021 11:49:53 -0400

Add "view raw" button to rendered files

Also "view rendered" for unrendered markdown files

Diffstat:
Msrc/stagit.c | 34++++++++++++++++++++++------------
1 file changed, 22 insertions(+), 12 deletions(-)

diff --git a/src/stagit.c b/src/stagit.c @@ -71,6 +71,7 @@ static char *readme; static long long nlogcommits = -1; /* < 0 indicates not used */ bool htmlized; /* true if markdoown converted to HTML */ +static char oldfilename[PATH_MAX]; /* filename of the last file */ /* cache */ static git_oid lastoid; @@ -426,7 +427,6 @@ call_chroma(const char *filename, FILE *fp, const char *s, size_t len) if (strcmp(get_ext(filename), "md") == 0) htmlized = true; #endif - #ifdef HAS_CHROMA if (!htmlized) { // Copy STDOUT @@ -848,7 +848,27 @@ writeblob(git_object *obj, const char *fpath, const char *filename, git_off_t fi fputs("<p> ", fp); xmlencode(fp, filename, strlen(filename)); fprintf(fp, " (%s)", convertbytes((int)filesize)); - fputs("</p><hr/>", fp); + +#ifdef HAS_CMARK + char newfpath[PATH_MAX]; + char newfilename[PATH_MAX]; + if (strcmp(get_ext(filename), "md") == 0) { + fprintf(fp, " <a href=\"%s.html-raw\">View raw</a>", filename); + strcpy(newfpath, fpath); + strcat(newfpath, "-raw"); + + strcpy(newfilename, filename); + strcat(newfilename, "-raw"); + strcpy(oldfilename, filename); + + /* NOTE: recurses */ + writeblob(obj, newfpath, newfilename, filesize); + } else if (strcmp(get_ext(filename), "md-raw" ) == 0) { + fprintf(fp, " <a href=\"%s.html\">View rendered</a>", oldfilename); + } +#endif + + fputs(".</p><hr/>", fp); if (git_blob_is_binary((git_blob *)obj)) { fputs("<p>Binary file.</p>\n", fp); @@ -856,16 +876,6 @@ writeblob(git_object *obj, const char *fpath, const char *filename, git_off_t fi writeblobhtml(filename, fp, (git_blob *)obj); if (ferror(fp)) err(1, "fwrite"); - else if (htmlized) { - /* NOTE: recurses */ - char newfpath[PATH_MAX]; - strcat(newfpath, fpath); - char newfilename[PATH_MAX]; - strcat(newfilename, filename); - writeblob(obj, strcat(newfpath, "-raw"), - strcat(newfilename, "-raw"), filesize); - // TODO: Add view-raw button - } } writefooter(fp);