From 94ddbec88e57fe742f219a30145650165887f22c Mon Sep 17 00:00:00 2001 From: Xavier Del Campo Romero Date: Sat, 27 Sep 2025 20:48:55 +0200 Subject: html: Make html_encode public Among other reasons, this function can be useful to sanitize user-generated content before assigning it do a node. --- doc/man3/html_encode.3 | 45 +++++++++++++++++++++++++++++++++++++++++++++ html.c | 2 +- include/libweb/html.h | 1 + 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 doc/man3/html_encode.3 diff --git a/doc/man3/html_encode.3 b/doc/man3/html_encode.3 new file mode 100644 index 0000000..bf7695b --- /dev/null +++ b/doc/man3/html_encode.3 @@ -0,0 +1,45 @@ +.TH HTML_ENCODE 3 2025-09-28 0.4.0 "libweb Library Reference" + +.SH NAME +html_encode \- Encodes a string as HTML + +.SH SYNOPSIS +.LP +.nf +#include +.P +char *html_encode(const char *\fIs\fP); +.fi + +.SH DESCRIPTION +The +.IR html_encode () +function encodes the null-terminated string given by +.IR s , +replacing HTML reserved symbols, such as +.I < +or +.IR > , +into their equivalents, such as +.I > +or +.IR < . + +.SH RETURN VALUE +On success, a valid pointer to a HTML-encoded, null-terminated +string is returned. On failure, a null pointer is returned. + +.SH ERRORS +No errors are defined. + +.SH SEE ALSO +.BR html_node_set_value (3), +.BR libweb_html (7). + +.SH COPYRIGHT +Copyright (C) 2023-2025 libweb contributors +.P +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. diff --git a/html.c b/html.c index 094b00c..4af536e 100644 --- a/html.c +++ b/html.c @@ -23,7 +23,7 @@ struct html_node static int serialize_siblings(struct dynstr *, const struct html_node *, unsigned); -static char *html_encode(const char *s) +char *html_encode(const char *s) { struct dynstr d; diff --git a/include/libweb/html.h b/include/libweb/html.h index e62575e..37be86e 100644 --- a/include/libweb/html.h +++ b/include/libweb/html.h @@ -5,6 +5,7 @@ struct html_node *html_node_alloc(const char *element); void html_node_free(struct html_node *n); +char *html_encode(const char *s); int html_node_set_value(struct html_node *n, const char *val); int html_node_set_value_unescaped(struct html_node *n, const char *val); int html_node_add_attr(struct html_node *n, const char *attr, const char *val); -- cgit v1.2.3