|
|
add function to print a single line, ignoring \r and \n - stagit - static git page generator |
|
|
 |
git clone git://git.codemadness.org/stagit (git://git.codemadness.org) |
|
|
 |
Log |
|
|
 |
Files |
|
|
 |
Refs |
|
|
 |
README |
|
|
 |
LICENSE |
|
|
|
--- |
|
|
 |
commit 295e4b8cb95114bb74b582c7332bc4c171f36dd3 |
|
|
 |
parent 995f7d5c5d8e396b06e70b1497ac96df63ffec36 |
|
|
 |
Author: Hiltjo Posthuma <hiltjo@codemadness.org> (mailto://) |
application/vnd.lotus-organizer |
|
|
Date: Thu, 25 Mar 2021 18:13:13 +0100 |
|
|
|
|
|
|
|
add function to print a single line, ignoring \r and \n |
|
|
|
|
|
|
|
This can happen when there is no newline at end of file in the diff which is |
|
|
|
served by libgit2 as: |
|
|
|
|
|
|
|
"\n\ No newline at end of file\n". |
|
|
|
|
|
|
|
Diffstat: |
|
|
|
M stagit.c | 23 ++++++++++++++++++++++- |
|
|
|
|
|
|
|
1 file changed, 22 insertions(+), 1 deletion(-) |
|
|
|
--- |
|
|
 |
diff --git a/stagit.c b/stagit.c |
|
|
|
@@ -377,6 +377,26 @@ xmlencode(FILE *fp, const char *s, size_t len) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
+/* Escape characters below as HTML 2.0 / XML 1.0, ignore printing '\n', '\r' */ |
|
|
|
+void |
|
|
|
+xmlencodeline(FILE *fp, const char *s, size_t len) |
|
|
|
+{ |
|
|
|
+ size_t i; |
|
|
|
+ |
|
|
|
+ for (i = 0; *s && i < len; s++, i++) { |
|
|
|
+ switch(*s) { |
|
|
|
+ case '<': fputs("<", fp); break; |
|
|
|
+ case '>': fputs(">", fp); break; |
|
|
|
+ case '\'': fputs("'", fp); break; |
|
|
|
+ case '&': fputs("&", fp); break; |
|
|
|
+ case '"': fputs(""", fp); break; |
|
|
|
+ case '\r': break; /* ignore CR */ |
|
|
|
+ case '\n': break; /* ignore LF */ |
|
|
|
+ default: putc(*s, fp); |
|
|
|
+ } |
|
|
|
+ } |
|
|
|
+} |
|
|
|
+ |
|
|
|
int |
|
|
|
mkdirp(const char *path) |
|
|
|
{ |
|
|
|
@@ -678,7 +698,8 @@ printshowfile(FILE *fp, struct commitinfo *ci) |
|
|
|
i, j, k, i, j, k); |
|
|
|
else |
|
|
|
putc(' ', fp); |
|
|
|
- xmlencode(fp, line->content, line->content_len); |
|
|
|
+ xmlencodeline(fp, line->content, line->content_len); |
|
|
|
+ putc('\n', fp); |
|
|
|
if (line->old_lineno == -1 || line->new_lineno == -1) |
|
|
|
fputs("</a>", fp); |
|
|
|
} |
|