add function to print a single line, ignoring \r and \n - stagit - static git p… | |
git clone git://git.codemadness.org/stagit | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 295e4b8cb95114bb74b582c7332bc4c171f36dd3 | |
parent 995f7d5c5d8e396b06e70b1497ac96df63ffec36 | |
Author: Hiltjo Posthuma <[email protected]> | |
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… | |
+ putc('\n', fp); | |
if (line->old_lineno == -1 || line->new_lineno… | |
fputs("</a>", fp); | |
} |