// webcit.h - "header of headers"
//
-// Copyright (c) 1996-2023 by the citadel.org team
+// Copyright (c) 1996-2024 by the citadel.org team
//
-// This program is open source software. You can redistribute it and/or
-// modify it under the terms of the GNU General Public License, version 3.
+// This program is open source software. Use, duplication, or
+// disclosure is subject to the GNU General Public License v3.
+
+// uncomment one or more of these to see raw http transactions
+//#define DEBUG_HTTP
+//#define REQUEST_BODY_TO_STDERR
+//#define RESPONSE_BODY_TO_STDERR
+#define DEBUG_XML_PARSE
#define SHOW_ME_VAPPEND_PRINTF
#include <openssl/rand.h>
#include <expat.h>
#define _(x) x // temporary hack until we add i18n back in
-//#define DEBUG_HTTP // uncomment to debug HTTP headers
// XML_StopParser is present in expat 2.x
-#if XML_MAJOR_VERSION > 1
-#define HAVE_XML_STOPPARSER
+#if XML_MAJOR_VERSION < 2
+#error WebCit requires expat v2.0 or newer.
#endif
struct client_handle { // this gets passed up the stack from the webserver to the application code
#define DAV_COPY 1 // they are the values used in the Citadel Server MOVE command
+// 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 caldav_xml_end(void *, const char *);
void caldav_xml_chardata(void *, const XML_Char *, int);
StrBuf *fetch_ical(struct ctdlsession *, long);
-void caldav_response(struct http_transaction *, struct ctdlsession *, StrBuf *, StrBuf *);
+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 *);
-void XXXXXXXXXXXXXX(struct http_transaction *, struct ctdlsession *, char *);
// ctdlclient.c
int ctdl_read_binary(struct ctdlsession *, char *, int);
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 **);
void spawn_another_worker_thread(int *);
void worker_entry(int *);
int webserver(char *, int, int);
+
+