X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/112b2080626c62fff27cf8aaa9ac2fb07eb50b74..8aab27f24de70acfbdcee31c634a4b1facf23b92:/html.c
diff --git a/html.c b/html.c
index bddb04d..4033200 100644
--- a/html.c
+++ b/html.c
@@ -35,6 +35,11 @@ char *fmt(const char *format, ...)
return buf[bufidx];
}
+void html_raw(const char *data, size_t size)
+{
+ write(htmlfd, data, size);
+}
+
void html(const char *txt)
{
write(htmlfd, txt, strlen(txt));
@@ -51,9 +56,16 @@ void htmlf(const char *format, ...)
html(buf);
}
-void html_txt(char *txt)
+void html_status(int code, const char *msg, int more_headers)
+{
+ htmlf("Status: %d %s\n", code, msg);
+ if (!more_headers)
+ html("\n");
+}
+
+void html_txt(const char *txt)
{
- char *t = txt;
+ const char *t = txt;
while(t && *t){
int c = *t;
if (c=='<' || c=='>' || c=='&') {
@@ -72,9 +84,9 @@ void html_txt(char *txt)
html(txt);
}
-void html_ntxt(int len, char *txt)
+void html_ntxt(int len, const char *txt)
{
- char *t = txt;
+ const char *t = txt;
while(t && *t && len--){
int c = *t;
if (c=='<' || c=='>' || c=='&') {
@@ -95,19 +107,53 @@ void html_ntxt(int len, char *txt)
html("...");
}
-void html_attr(char *txt)
+void html_attr(const char *txt)
{
- char *t = txt;
+ const char *t = txt;
while(t && *t){
int c = *t;
- if (c=='<' || c=='>' || c=='\'') {
+ if (c=='<' || c=='>' || c=='\'' || c=='\"') {
write(htmlfd, txt, t - txt);
if (c=='>')
html(">");
else if (c=='<')
html("<");
else if (c=='\'')
- html(""e;");
+ html("'");
+ else if (c=='"')
+ html(""");
+ txt = t+1;
+ }
+ t++;
+ }
+ if (t!=txt)
+ html(txt);
+}
+
+void html_url_path(const char *txt)
+{
+ const char *t = txt;
+ while(t && *t){
+ int c = *t;
+ if (c=='"' || c=='#' || c=='\'' || c=='?') {
+ write(htmlfd, txt, t - txt);
+ write(htmlfd, fmt("%%%2x", c), 3);
+ txt = t+1;
+ }
+ t++;
+ }
+ if (t!=txt)
+ html(txt);
+}
+
+void html_url_arg(const char *txt)
+{
+ const char *t = txt;
+ while(t && *t){
+ int c = *t;
+ if (c=='"' || c=='#' || c=='%' || c=='&' || c=='\'' || c=='+' || c=='?') {
+ write(htmlfd, txt, t - txt);
+ write(htmlfd, fmt("%%%2x", c), 3);
txt = t+1;
}
t++;
@@ -116,7 +162,7 @@ void html_attr(char *txt)
html(txt);
}
-void html_hidden(char *name, char *value)
+void html_hidden(const char *name, const char *value)
{
html("");
}
-void html_option(char *value, char *text, char *selected_value)
+void html_option(const char *value, const char *text, const char *selected_value)
{
html("