X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fical_dezonify.c;h=ea4b53ece8d458b3291684373343db7dbee054f9;hb=1b302cba797e9b8d6f94304f80c52ac63845503a;hp=2b9d6caf72265d916b59f211287a9e3cc550fcdf;hpb=af88c55d471866b7e5d720ce5d757fe1c2eb4a5b;p=citadel.git diff --git a/webcit/ical_dezonify.c b/webcit/ical_dezonify.c index 2b9d6caf7..ea4b53ece 100644 --- a/webcit/ical_dezonify.c +++ b/webcit/ical_dezonify.c @@ -13,10 +13,6 @@ #include "webcit.h" #include "webserver.h" - -#ifdef WEBCIT_WITH_CALENDAR_SERVICE - - /* * Figure out which time zone needs to be used for timestamps that are * not UTC and do not have a time zone specified. @@ -25,7 +21,7 @@ icaltimezone *get_default_icaltimezone(void) { icaltimezone *zone = NULL; - char *default_zone_name = serv_info.serv_default_cal_zone; + const char *default_zone_name = ChrPtr(WC->serv_info->serv_default_cal_zone); if (!zone) { zone = icaltimezone_get_builtin_timezone(default_zone_name); @@ -70,16 +66,32 @@ void ical_dezonify_backend(icalcomponent *cal, /* Convert it to an icaltimezone type. */ if (tzid != NULL) { +#ifdef DBG_ICAL lprintf(9, " * Stringy supplied timezone is: '%s'\n", tzid); +#endif if ( (!strcasecmp(tzid, "UTC")) || (!strcasecmp(tzid, "GMT")) ) { utc_declared_as_tzid = 1; +#ifdef DBG_ICAL lprintf(9, " * ...and we handle that internally.\n"); +#endif } else { + /* try attached first */ t = icalcomponent_get_timezone(cal, tzid); +#ifdef DBG_ICAL lprintf(9, " * ...and I %s have tzdata for that zone.\n", (t ? "DO" : "DO NOT") ); +#endif + /* then try built-in timezones */ + if (!t) { + t = icaltimezone_get_builtin_timezone(tzid); +#ifdef DBG_ICAL + if (t) { + lprintf(9, " * Using system tzdata!\n"); + } +#endif + } } } @@ -103,24 +115,34 @@ void ical_dezonify_backend(icalcomponent *cal, return; } +#ifdef DBG_ICAL lprintf(9, " * Was: %s\n", icaltime_as_ical_string(TheTime)); +#endif if (TheTime.is_utc) { +#ifdef DBG_ICAL lprintf(9, " * This property is ALREADY UTC.\n"); +#endif } else if (utc_declared_as_tzid) { +#ifdef DBG_ICAL lprintf(9, " * Replacing '%s' TZID with 'Z' suffix.\n", tzid); +#endif TheTime.is_utc = 1; } else { /* Do the conversion. */ if (t != NULL) { +#ifdef DBG_ICAL lprintf(9, " * Timezone prop found. Converting to UTC.\n"); +#endif } else { +#ifdef DBG_ICAL lprintf(9, " * Converting default timezone to UTC.\n"); +#endif } if (t == NULL) { @@ -131,7 +153,9 @@ void ical_dezonify_backend(icalcomponent *cal, } icalproperty_remove_parameter_by_kind(prop, ICAL_TZID_PARAMETER); +#ifdef DBG_ICAL lprintf(9, " * Now: %s\n", icaltime_as_ical_string(TheTime)); +#endif /* Now add the converted property back in. */ if (icalproperty_isa(prop) == ICAL_DTSTART_PROPERTY) { @@ -197,7 +221,9 @@ void ical_dezonify_recurse(icalcomponent *cal, icalcomponent *rcal) { void ical_dezonify(icalcomponent *cal) { icalcomponent *vt = NULL; +#ifdef DBG_ICAL lprintf(9, "ical_dezonify() started\n"); +#endif /* Convert all times to UTC */ ical_dezonify_recurse(cal, cal); @@ -209,8 +235,8 @@ void ical_dezonify(icalcomponent *cal) { icalcomponent_free(vt); } +#ifdef DBG_ICAL lprintf(9, "ical_dezonify() completed\n"); +#endif } - -#endif /* WEBCIT_WITH_CALENDAR_SERVICE */