+
+// FIXME retrieve this from the server
+#define default_zone_name ""
+
+// Everything below here is generated with this command:
+// cproto -f2 *.c 2>/dev/null |sed 's/^\/\*/\n\/\//g' | sed 's/\ \*\/$//g'
+
+
+// admin_functions.c
+void try_login(struct http_transaction *, struct ctdlsession *);
+void logout(struct http_transaction *, struct ctdlsession *);
+void whoami(struct http_transaction *, struct ctdlsession *);
+void biff(struct http_transaction *, struct ctdlsession *);
+void ctdl_a(struct http_transaction *, struct ctdlsession *);
+
+// caldav_reports.c
+void caldav_xml_start(void *, const char *, const char **);
+void caldav_xml_end(void *, const char *);
+void caldav_xml_chardata(void *, const XML_Char *, int);
+StrBuf *fetch_ical(struct ctdlsession *, long);
+void cal_multiget_out(long, StrBuf *, StrBuf *, StrBuf *);
+void caldav_report_one_item(struct http_transaction *, struct ctdlsession *, StrBuf *, StrBuf *);
+int caldav_time_range_filter_matches(icalcomponent *, char *, char *);
+int caldav_apply_filters(void *, Array *, int);
+void caldav_report(struct http_transaction *, struct ctdlsession *);
+
+// ctdlclient.c
+int ctdl_read_binary(struct ctdlsession *, char *, int);
+int ctdl_readline(struct ctdlsession *, char *, int);
+StrBuf *ctdl_readtextmsg(struct ctdlsession *);
+ssize_t ctdl_write(struct ctdlsession *, const void *, size_t);
+void ctdl_printf(struct ctdlsession *, const char *, ...);
+int uds_connectsock(char *);
+void extract_auth(struct http_transaction *, char *, int);
+int login_to_citadel(struct ctdlsession *, char *, char *);
+struct ctdlsession *connect_to_citadel(struct http_transaction *);
+void disconnect_from_citadel(struct ctdlsession *);
+
+// ctdl_commands.c
+void serv_info(struct http_transaction *, struct ctdlsession *);
+void ctdl_c(struct http_transaction *, struct ctdlsession *);
+
+// ctdlfunctions.c
+void ctdl_delete_msgs(struct ctdlsession *, long *, int);
+
+// floor_functions.c
+void floor_list(struct http_transaction *, struct ctdlsession *);
+void ctdl_f(struct http_transaction *, struct ctdlsession *);
+
+// forum_view.c
+void setup_for_forum_view(struct ctdlsession *);
+JsonValue *json_tokenize_recipients(const char *, long, char *);
+void json_render_one_message(struct http_transaction *, struct ctdlsession *, long);
+
+// html2html.c
+void stripquotes(char *);
+void extract_charset_from_meta(char *, char *, char *);
+StrBuf *html2html(const char *, int, char *, long, StrBuf *);
+void UrlizeText(StrBuf *, StrBuf *, StrBuf *);
+void url(char *, size_t);
+
+// http.c
+int client_write(struct client_handle *, char *, int);
+int client_read(struct client_handle *, char *, int);
+int client_readline(struct client_handle *, char *, int);
+void client_printf(struct client_handle *, const char *, ...);
+void add_response_header(struct http_transaction *, char *, char *);
+void perform_one_http_transaction(struct client_handle *);
+char *header_val(struct http_transaction *, char *);
+char *get_url_param(struct http_transaction *, char *);
+
+// ical_dezonify.c
+icaltimezone *get_default_icaltimezone(void);
+void ical_dezonify_backend(icalcomponent *, icalcomponent *, icalproperty *);
+void ical_dezonify_recurse(icalcomponent *, icalcomponent *);
+void ical_dezonify(icalcomponent *);
+
+// main.c
+int main(int, char **);
+
+// messages.c
+long locate_message_by_uid(struct ctdlsession *, char *);
+void dav_delete_message(struct http_transaction *, struct ctdlsession *, long);
+void dav_move_or_copy_message(struct http_transaction *, struct ctdlsession *, long, int);
+void dav_get_message(struct http_transaction *, struct ctdlsession *, long);
+void dav_put_message(struct http_transaction *, struct ctdlsession *, char *, long);
+void download_mime_component(struct http_transaction *, struct ctdlsession *, long, char *);
+
+// request.c