From 4a2abe7bf4c05db91093e4a2d29d27430316bc05 Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Wed, 6 Mar 2024 12:29:36 +0000 Subject: Add ls.cgi, prepare for 0.0.4.0 Signed-off-by: Laurent Bercot --- src/libtipidee/deps-lib/tipidee | 1 + src/libtipidee/tipidee_util_htmlescape.c | 38 ++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 src/libtipidee/tipidee_util_htmlescape.c (limited to 'src/libtipidee') diff --git a/src/libtipidee/deps-lib/tipidee b/src/libtipidee/deps-lib/tipidee index 33f9f2f..b0b2c08 100644 --- a/src/libtipidee/deps-lib/tipidee +++ b/src/libtipidee/deps-lib/tipidee @@ -42,6 +42,7 @@ tipidee_rql_read.o tipidee_uri_parse.o tipidee_util_chunked_read.o tipidee_util_defaulttext.o +tipidee_util_htmlescape.o tipidee_util_httpdate.o tipidee_util_parse_range.o -lskarnet diff --git a/src/libtipidee/tipidee_util_htmlescape.c b/src/libtipidee/tipidee_util_htmlescape.c new file mode 100644 index 0000000..1dfd552 --- /dev/null +++ b/src/libtipidee/tipidee_util_htmlescape.c @@ -0,0 +1,38 @@ +/* ISC license. */ + +#include + +#include + +struct htmlescape_s +{ + char c ; + char const *code ; +} ; + +static struct htmlescape_s const table[] = +{ + { .c = '\"', .code = """ }, + { .c = '&', .code = "&" }, + { .c = '\'', .code = "'" }, + { .c = '<', .code = "<" }, + { .c = '>', .code = ">" }, +} ; + +static int htmlescape_cmp (void const *a, void const *b) +{ + char aa = *((char const *)a) ; + char bb = ((struct htmlescape_s const *)b)->c ; + return aa < bb ? -1 : aa > bb ; +} + +char const *tipidee_util_htmlescape (char const *s) +{ + struct htmlescape_s const *p = bsearch( + s, + table, + sizeof(table) / sizeof(struct htmlescape_s), + sizeof(struct htmlescape_s), + &htmlescape_cmp) ; + return p ? p->code : s ; +} -- cgit v1.3.1