diff options
author | 2008-07-17 13:33:56 -0400 | |
---|---|---|
committer | 2008-07-17 13:33:56 -0400 | |
commit | 2e00cd0bdfadfab33a3c802994c8c0e5cf565174 (patch) | |
tree | e468f73f825fba86812b997da7f918a261ef30ef /src/c/lacweb.c | |
parent | 1676fa257dfb1f2569d6ffcdb1aea4c5a50dbae1 (diff) |
Proper escaping of cdata
Diffstat (limited to 'src/c/lacweb.c')
-rw-r--r-- | src/c/lacweb.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/c/lacweb.c b/src/c/lacweb.c index fef9ed4c..bccadbdc 100644 --- a/src/c/lacweb.c +++ b/src/c/lacweb.c @@ -72,6 +72,7 @@ void lw_write(lw_context ctx, const char* s) { lw_write_unsafe(ctx, s); } + char *lw_Basis_attrifyInt(lw_Basis_int n) { return "0"; } @@ -207,3 +208,33 @@ lw_Basis_float lw_unurlifyFloat(char **s) { lw_Basis_string lw_unurlifyString(char **s) { return ""; } + + +char *lw_Basis_htmlifyString(lw_Basis_string s) { + return ""; +} + +void lw_Basis_htmlifyString_w(lw_context ctx, lw_Basis_string s) { + lw_check(ctx, strlen(s) * 5); + + for (; *s; s++) { + char c = *s; + + switch (c) { + case '<': + lw_write_unsafe(ctx, "<"); + break; + case '&': + lw_write_unsafe(ctx, "&"); + break; + default: + if (isprint(c)) + lw_writec_unsafe(ctx, c); + else { + lw_write_unsafe(ctx, "&#"); + lw_Basis_attrifyInt_w_unsafe(ctx, c); + lw_writec_unsafe(ctx, ';'); + } + } + } +} |