X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/e87e89633383b8b75c68c98be3e0c14212109de2..112b2080626c62fff27cf8aaa9ac2fb07eb50b74:/html.c diff --git a/html.c b/html.c index 98ffaf9..bddb04d 100644 --- a/html.c +++ b/html.c @@ -11,6 +11,7 @@ #include #include #include +#include int htmlfd = STDOUT_FILENO; @@ -56,9 +57,7 @@ void html_txt(char *txt) while(t && *t){ int c = *t; if (c=='<' || c=='>' || c=='&') { - *t = '\0'; - html(txt); - *t = c; + write(htmlfd, txt, t - txt); if (c=='>') html(">"); else if (c=='<') @@ -79,9 +78,7 @@ void html_ntxt(int len, char *txt) while(t && *t && len--){ int c = *t; if (c=='<' || c=='>' || c=='&') { - *t = '\0'; - html(txt); - *t = c; + write(htmlfd, txt, t - txt); if (c=='>') html(">"); else if (c=='<') @@ -92,12 +89,8 @@ void html_ntxt(int len, char *txt) } t++; } - if (t!=txt) { - char c = *t; - *t = '\0'; - html(txt); - *t = c; - } + if (t!=txt) + write(htmlfd, txt, t - txt); if (len<0) html("..."); } @@ -108,9 +101,7 @@ void html_attr(char *txt) while(t && *t){ int c = *t; if (c=='<' || c=='>' || c=='\'') { - *t = '\0'; - html(txt); - *t = c; + write(htmlfd, txt, t - txt); if (c=='>') html(">"); else if (c=='<') @@ -178,8 +169,11 @@ int html_include(const char *filename) char buf[4096]; size_t len; - if (!(f = fopen(filename, "r"))) + if (!(f = fopen(filename, "r"))) { + fprintf(stderr, "[cgit] Failed to include file %s: %s (%d).\n", + filename, strerror(errno), errno); return -1; + } while((len = fread(buf, 1, 4096, f)) > 0) write(htmlfd, buf, len); fclose(f);