]> www.infradead.org Git - users/dwmw2/ews-sync.git/commitdiff
Add DailyRecurrence
authorDavid Woodhouse <dwmw2@infradead.org>
Sat, 17 Jul 2010 16:31:05 +0000 (17:31 +0100)
committerDavid Woodhouse <dwmw2@infradead.org>
Sat, 17 Jul 2010 16:31:05 +0000 (17:31 +0100)
ews2ical.c

index bd3c8835b0dc61fe2092748e871d76fddf1af2ae..980536303d59164e38e785956aa80a379bd0dd14 100644 (file)
@@ -314,9 +314,10 @@ int process_recurrence(xmlNode *xml_node)
        xmlNode *xml_node2;
        const char *weekly_interval = NULL;
        const char *weekday = NULL;
-       const char *end_date = NULL;
+       const char *daily_interval = NULL;
        const char *day_of_month = NULL;
        const char *month = NULL;
+       const char *end_date = NULL;
        const char *nr_recurrences = NULL;
 
        for (xml_node = xml_node->children; xml_node; xml_node = xml_node->next) {
@@ -332,6 +333,14 @@ int process_recurrence(xmlNode *xml_node)
                                else if (!strcmp((char *)xml_node2->name, "DaysOfWeek"))
                                        weekday = (char *)xmlNodeGetContent(xml_node2);
                        }
+               } else if (!strcmp((char *)xml_node->name, "DailyRecurrence")) {
+                       for (xml_node2 = xml_node->children; xml_node2;
+                            xml_node2 = xml_node2->next) {
+                               if (xml_node2->type != XML_ELEMENT_NODE)
+                                       continue;
+                               if (!strcmp((char *)xml_node2->name, "Interval"))
+                                       daily_interval = (char *)xmlNodeGetContent(xml_node2);
+                       }
                } else if (!strcmp((char *)xml_node->name, "AbsoluteYearlyRecurrence")) {
                        for (xml_node2 = xml_node->children; xml_node2;
                             xml_node2 = xml_node2->next) {
@@ -342,6 +351,12 @@ int process_recurrence(xmlNode *xml_node)
                                else if (!strcmp((char *)xml_node2->name, "Month"))
                                        month = (char *)xmlNodeGetContent(xml_node2);
                        }
+               } else if (!strcmp((char *)xml_node->name, "RelativeYearlyRecurrence")) {
+                       fprintf(stderr, "Cannot yet handle %s\n", xml_node->name);
+               } else if (!strcmp((char *)xml_node->name, "AbsoluteMonthlyRecurrence")) {
+                       fprintf(stderr, "Cannot yet handle %s\n", xml_node->name);
+               } else if (!strcmp((char *)xml_node->name, "RelativeMonthlyRecurrence")) {
+                       fprintf(stderr, "Cannot yet handle %s\n", xml_node->name);
                } else if (!strcmp((char *)xml_node->name, "EndDateRecurrence")) {
                        for (xml_node2 = xml_node->children; xml_node2;
                             xml_node2 = xml_node2->next) {
@@ -360,7 +375,9 @@ int process_recurrence(xmlNode *xml_node)
                        }
                }
        }
-       if (day_of_month && month) {
+       if (daily_interval) {
+               fprintf(calfile, "RRULE:FREQ=DAILY;INTERVAL=%s", daily_interval);
+       } else if (day_of_month && month) {
                int monthnr;
                for (monthnr = 0; monthnr < 12; monthnr++)
                        if (!strcmp(month, months[monthnr]))