summaryrefslogtreecommitdiff
path: root/util.c
diff options
context:
space:
mode:
Diffstat (limited to 'util.c')
-rw-r--r--util.c43
1 files changed, 9 insertions, 34 deletions
diff --git a/util.c b/util.c
index 1404498..4837070 100644
--- a/util.c
+++ b/util.c
@@ -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("&lt;", fp); break;
+ case '>': fputs("&gt;", fp); break;
+ case '\'': fputs("&apos;", fp); break;
+ case '&': fputs("&amp;", fp); break;
+ case '"': fputs("&quot;", 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("&lt;", fp);
- case '>': return fputs("&gt;", fp);
- case '\'': return fputs("&apos;", fp);
- case '&': return fputs("&amp;", fp);
- case '"': return fputs("&quot;", 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.