X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/53bc747d311d18642fa3ad0cc0de34f3899ed1f4..4b4a62d507adc61e20e75e2748301ef307a6c95f:/html.c?ds=inline diff --git a/html.c b/html.c index ed6cefc..8c45ba6 100644 --- a/html.c +++ b/html.c @@ -6,6 +6,8 @@ * (see COPYING for full license text) */ +#include "cgit.h" +#include "html.h" #include #include #include @@ -39,7 +41,7 @@ static const char* url_escape_table[256] = { "%fe", "%ff" }; -int htmlfd = STDOUT_FILENO; +static int htmlfd = STDOUT_FILENO; char *fmt(const char *format, ...) { @@ -63,12 +65,13 @@ char *fmt(const char *format, ...) void html_raw(const char *data, size_t size) { - write(htmlfd, data, size); + if (write(htmlfd, data, size) != size) + fprintf(stderr, "[html.c] html output truncated.\n"); } void html(const char *txt) { - write(htmlfd, txt, strlen(txt)); + html_raw(txt, strlen(txt)); } void htmlf(const char *format, ...) @@ -92,7 +95,7 @@ void html_status(int code, const char *msg, int more_headers) void html_txt(const char *txt) { const char *t = txt; - while(t && *t){ + while (t && *t) { int c = *t; if (c == '<' || c == '>' || c == '&') { html_raw(txt, t - txt); @@ -113,7 +116,7 @@ void html_txt(const char *txt) void html_ntxt(int len, const char *txt) { const char *t = txt; - while(t && *t && len--){ + while (t && *t && len--) { int c = *t; if (c == '<' || c == '>' || c == '&') { html_raw(txt, t - txt); @@ -136,7 +139,7 @@ void html_ntxt(int len, const char *txt) void html_attr(const char *txt) { const char *t = txt; - while(t && *t){ + while (t && *t) { int c = *t; if (c == '<' || c == '>' || c == '\'' || c == '\"' || c == '&') { html_raw(txt, t - txt); @@ -161,7 +164,7 @@ void html_attr(const char *txt) void html_url_path(const char *txt) { const char *t = txt; - while(t && *t){ + while (t && *t) { unsigned char c = *t; const char *e = url_escape_table[c]; if (e && c != '+' && c != '&') { @@ -178,7 +181,7 @@ void html_url_path(const char *txt) void html_url_arg(const char *txt) { const char *t = txt; - while(t && *t){ + while (t && *t) { unsigned char c = *t; const char *e = url_escape_table[c]; if (c == ' ') @@ -260,13 +263,13 @@ int html_include(const char *filename) filename, strerror(errno), errno); return -1; } - while((len = fread(buf, 1, 4096, f)) > 0) + while ((len = fread(buf, 1, 4096, f)) > 0) html_raw(buf, len); fclose(f); return 0; } -int hextoint(char c) +static int hextoint(char c) { if (c >= 'a' && c <= 'f') return 10 + c - 'a'; @@ -278,7 +281,7 @@ int hextoint(char c) return -1; } -char *convert_query_hexchar(char *txt) +static char *convert_query_hexchar(char *txt) { int d1, d2, n; n = strlen(txt); @@ -305,12 +308,8 @@ int http_parse_querystring(const char *txt_, void (*fn)(const char *name, const if (!txt_) return 0; - o = t = txt = strdup(txt_); - if (t == NULL) { - printf("Out of memory\n"); - exit(1); - } - while((c=*t) != '\0') { + o = t = txt = xstrdup(txt_); + while ((c=*t) != '\0') { if (c == '=') { *t = '\0'; value = t + 1;