From: Art Cancro Date: Tue, 19 Mar 2024 23:56:32 +0000 (-0400) Subject: Bring ical_dezonify() into caldav_reports.c X-Git-Tag: v999~23 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=a88a550cf8b88924645686b5c2fea78c4e0bcb66 Bring ical_dezonify() into caldav_reports.c Make a local copy of events being compared, dezonify them. Now gotta write the rest. --- diff --git a/webcit-ng/server/caldav_reports.c b/webcit-ng/server/caldav_reports.c index 9dece4c79..22c90fea6 100644 --- a/webcit-ng/server/caldav_reports.c +++ b/webcit-ng/server/caldav_reports.c @@ -259,11 +259,15 @@ void caldav_report_one_item(struct http_transaction *h, struct ctdlsession *c, S // Compare function for "time-range" tests (RFC4791 section 9.9) // Returns nonzero if the supplied icalcomponent occurs within the specified time range -int caldav_time_range_filter_matches(icalcomponent *cal, char *start_str, char *end_str) { +int caldav_time_range_filter_matches(icalcomponent *supplied_cal, char *start_str, char *end_str) { struct icaltimetype start = (start_str ? icaltime_from_string(start_str) : icaltime_null_time()); struct icaltimetype end = (end_str ? icaltime_from_string(end_str) : icaltime_null_time()); + // make a local copy of the component because we are going to modify it by converting times to UTC + icalcomponent *cal = icalcomponent_new_clone(supplied_cal); + ical_dezonify(cal); + syslog(LOG_DEBUG, "\033[7mcaldav_time_range_filter_matches()\033[0m : Does this %s fall between %s and %s ?", icalcomponent_kind_to_string(icalcomponent_isa(cal)), start_str, @@ -279,7 +283,8 @@ int caldav_time_range_filter_matches(icalcomponent *cal, char *start_str, char * icaltimetype dte = icalcomponent_get_dtend(cal); syslog(LOG_DEBUG, "component end: \033[36m%s\033[0m", icaltime_as_ical_string_r(dte)); - return(0); // reject everything for now + icalcomponent_free(cal); + return(0); // FIXME reject everything for now } diff --git a/webcit-ng/server/webcit.h b/webcit-ng/server/webcit.h index 4c5c1588a..e422849a4 100644 --- a/webcit-ng/server/webcit.h +++ b/webcit-ng/server/webcit.h @@ -140,9 +140,13 @@ enum { #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 *); @@ -157,6 +161,8 @@ 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 @@ -204,6 +210,12 @@ 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 **); @@ -291,3 +303,5 @@ char *http_datestring(time_t); void spawn_another_worker_thread(int *); void worker_entry(int *); int webserver(char *, int, int); + +