vsprintf(wbuf, format, arg_ptr);
va_end(arg_ptr);
- write(WC->http_sock, wbuf, strlen(wbuf));
+ client_write(wbuf, strlen(wbuf));
}
}
+/*
+ * Copy a string, escaping characters for JavaScript strings.
+ */
+void jsesc(char *target, char *strbuf)
+{
+ int a;
+ strcpy(target, "");
+
+ for (a = 0; a < strlen(strbuf); ++a) {
+ if (strbuf[a] == '<')
+ strcat(target, "[");
+ else if (strbuf[a] == '>')
+ strcat(target, "]");
+ else if (strbuf[a] == '\"')
+ strcat(target, """);
+ else if (strbuf[a] == '&')
+ strcat(target, "&;");
+ else if (strbuf[a] == '\'')
+ strcat(target, "\\'");
+ else {
+ strncat(target, &strbuf[a], 1);
+ }
+ }
+}
+
+void jsescputs(char *strbuf)
+{
+ char outbuf[SIZ];
+
+ jsesc(outbuf, strbuf);
+ wprintf("%s", outbuf);
+}
+
+
/*
(long) length,
SERVER
);
- write(WC->http_sock, thing, (size_t)length);
+ client_write(thing, (size_t)length);
}
strcpy(content_type, "image/jpeg");
else if (!strncasecmp(&what[strlen(what) - 4], ".png", 4))
strcpy(content_type, "image/png");
+ else if (!strncasecmp(&what[strlen(what) - 4], ".ico", 4))
+ strcpy(content_type, "image/x-icon");
else if (!strncasecmp(&what[strlen(what) - 5], ".html", 5))
strcpy(content_type, "text/html");
else if (!strncasecmp(&what[strlen(what) - 4], ".wml", 4))
char buf[SIZ];
int a, b;
int ContentLength = 0;
- int BytesRead;
+ int BytesRead = 0;
char ContentType[512];
char *content;
char *content_end;
ContentType, ContentLength);
body_start = strlen(content);
+/***** old version
BytesRead = 0;
while (BytesRead < ContentLength) {
a=read(WC->http_sock, &content[BytesRead+body_start],
if (a <= 0) BytesRead = ContentLength;
else BytesRead += a;
}
+*******/
+
+ /* Now we're daring and read it all at once. */
+ client_read(WC->http_sock, &content[BytesRead+body_start], ContentLength);
if (!strncasecmp(ContentType,
"application/x-www-form-urlencoded", 33)) {
edit_me();
} else if (!strcasecmp(action, "display_siteconfig")) {
display_siteconfig();
+ } else if (!strcasecmp(action, "chat_recv")) {
+ chat_recv();
+ } else if (!strcasecmp(action, "chat_send")) {
+ chat_send();
} else if (!strcasecmp(action, "page_popup")) {
page_popup();
} else if (!strcasecmp(action, "siteconfig")) {
} else if (!strcasecmp(action, "select_user_to_edit")) {
select_user_to_edit(NULL, NULL);
} else if (!strcasecmp(action, "display_edituser")) {
- display_edituser(NULL);
+ display_edituser(NULL, 0);
} else if (!strcasecmp(action, "edituser")) {
edituser();
} else if (!strcasecmp(action, "create_user")) {