diff options
Diffstat (limited to 'util.c')
-rw-r--r-- | util.c | 43 |
1 files changed, 9 insertions, 34 deletions
@@ -200,47 +200,22 @@ strtotime(const char *s, time_t *t) return 0; } +/* Escape characters below as HTML 2.0 / XML 1.0. */ void -print(const char *s, FILE *fp, int (*fn)(int, FILE *)) -{ - for (; *s; s++) - fn((int)*s, fp); -} - -/* Unescape / decode fields printed by string_print_encoded() - * "\\" to "\", "\t", to TAB, "\n" to newline. Unrecognised escape sequences - * are ignored: "\z" etc. Call `fn` on each escaped character. */ -void -decodefield(const char *s, FILE *fp, int (*fn)(int, FILE *)) +xmlencode(const char *s, FILE *fp) { for (; *s; s++) { - if (*s == '\\') { - switch (*(++s)) { - case '\\': fn('\\', fp); break; - case 't': fn('\t', fp); break; - case 'n': fn('\n', fp); break; - case '\0': return; - } - } else { - fn((int)*s, fp); + switch(*s) { + case '<': fputs("<", fp); break; + case '>': fputs(">", fp); break; + case '\'': fputs("'", fp); break; + case '&': fputs("&", fp); break; + case '"': fputs(""", fp); break; + default: fputc(*s, fp); } } } -/* Escape characters below as HTML 2.0 / XML 1.0. */ -int -xmlencode(int c, FILE *fp) -{ - switch(c) { - case '<': return fputs("<", fp); - case '>': return fputs(">", fp); - case '\'': return fputs("'", fp); - case '&': return fputs("&", fp); - case '"': return fputs(""", fp); - } - return fputc(c, fp); -} - /* Some implementations of basename(3) return a pointer to a static * internal buffer (OpenBSD). Others modify the contents of `path` (POSIX). * This is a wrapper function that is compatible with both versions. |