#include "ical_dezonify.h"
+/*
+ * Figure out which time zone needs to be used for timestamps that are
+ * not UTC and do not have a time zone specified.
+ *
+ * FIXME - most sites are not in New York :)
+ */
+icaltimezone *get_default_icaltimezone(void) {
+
+ icaltimezone *zone = NULL;
+
+/*
+ This doesn't even belong here.
+ I'm just keeping it here until I put it somewhere permanent.
+
+ icalarray *zones;
+ int i;
+ zones = icaltimezone_get_builtin_timezones();
+ for (i = 0; i < zones->num_elements; i++) {
+ lprintf(CTDL_DEBUG, "%s\n", icaltimezone_get_location(icalarray_element_at(zones, i)));
+ }
+ */
+
+ if (!zone) {
+ zone = icaltimezone_get_builtin_timezone(config.c_default_cal_zone);
+ }
+ if (!zone) {
+ zone = icaltimezone_get_utc_timezone();
+ }
+ return zone;
+}
+
+
/*
* Back end function for ical_dezonify()
*
return;
}
+ lprintf(CTDL_DEBUG, " * Was: %s\n", icaltime_as_ical_string(TheTime));
if (TheTime.is_utc) {
lprintf(CTDL_DEBUG, " * This property is ALREADY UTC.\n");
}
/* Do the conversion. */
if (t != NULL) {
lprintf(CTDL_DEBUG, " * Timezone prop found. Converting to UTC.\n");
- icaltimezone_convert_time(&TheTime,
- t,
- icaltimezone_get_utc_timezone()
- );
- TheTime.is_utc = 1;
}
else {
- lprintf(CTDL_DEBUG, " * Not UTC but no tzid found; WTF??\n");
+ lprintf(CTDL_DEBUG, " * Converting default timezone to UTC.\n");
}
+
+ if (t == NULL) {
+ t = get_default_icaltimezone();
+ }
+
+ icaltimezone_convert_time(&TheTime,
+ t,
+ icaltimezone_get_utc_timezone()
+ );
+ TheTime.is_utc = 1;
}
+
icalproperty_remove_parameter_by_kind(prop, ICAL_TZID_PARAMETER);
+ lprintf(CTDL_DEBUG, " * Now: %s\n", icaltime_as_ical_string(TheTime));
/* Now add the converted property back in. */
if (icalproperty_isa(prop) == ICAL_DTSTART_PROPERTY) {