summaryrefslogtreecommitdiff
path: root/src/c
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2008-07-17 13:33:56 -0400
committerGravatar Adam Chlipala <adamc@hcoop.net>2008-07-17 13:33:56 -0400
commit2e00cd0bdfadfab33a3c802994c8c0e5cf565174 (patch)
treee468f73f825fba86812b997da7f918a261ef30ef /src/c
parent1676fa257dfb1f2569d6ffcdb1aea4c5a50dbae1 (diff)
Proper escaping of cdata
Diffstat (limited to 'src/c')
-rw-r--r--src/c/lacweb.c31
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, "&lt;");
+ break;
+ case '&':
+ lw_write_unsafe(ctx, "&amp;");
+ 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, ';');
+ }
+ }
+ }
+}