]> www.infradead.org Git - users/dwmw2/ews-sync.git/commitdiff
Handle timezones (like Arizona) which don't do DST
authorDavid Woodhouse <dwmw2@infradead.org>
Sun, 18 Jul 2010 23:22:09 +0000 (00:22 +0100)
committerDavid Woodhouse <dwmw2@infradead.org>
Sun, 18 Jul 2010 23:22:09 +0000 (00:22 +0100)
ews2ical.c

index 2e29eb56d41213476ae1d51dde28242b5d7e4adb..e8277be659626237f07fc6ace758f40f5e9922eb 100644 (file)
@@ -1063,6 +1063,7 @@ icaltimezone *get_meeting_timezone(xmlNode *xml_node)
 {
        icalcomponent *comp = NULL, *dst_zone = NULL, *std_zone = NULL;
        icalproperty *prop;
+       icaltimezone *z;
        const char *tzname = NULL;
 
        int std_offset, dst_offset;
@@ -1106,8 +1107,6 @@ icaltimezone *get_meeting_timezone(xmlNode *xml_node)
        }
 
        if (std_zone && dst_zone) {
-               icaltimezone *z;
-
                prop = icalproperty_new_tzoffsetfrom(dst_offset);
                icalcomponent_add_property(std_zone, prop);
 
@@ -1116,10 +1115,20 @@ icaltimezone *get_meeting_timezone(xmlNode *xml_node)
 
                icalcomponent_add_component(comp, std_zone);
                icalcomponent_add_component(comp, dst_zone);
+       } else {
+               if (!std_zone) {
+                       std_zone = icalcomponent_new(ICAL_XSTANDARD_COMPONENT);
 
-               z = icaltimezone_new();
-               icaltimezone_set_component(z, comp);
-               return z;
-       }
-       return NULL;
+                       prop = icalproperty_new_tzoffsetto(std_offset);
+                       icalcomponent_add_property(std_zone, prop);
+
+                       prop = icalproperty_new_tzoffsetfrom(std_offset);
+                       icalcomponent_add_property(std_zone, prop);
+               }
+               icalcomponent_add_component(comp, std_zone);
+       }               
+
+       z = icaltimezone_new();
+       icaltimezone_set_component(z, comp);
+       return z;
 }