From: David Woodhouse Date: Sat, 17 Jul 2010 16:31:05 +0000 (+0100) Subject: Add DailyRecurrence X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=0be4e5c6e8a10a6bab6011d283e45b289dc4fbe5;p=users%2Fdwmw2%2Fews-sync.git Add DailyRecurrence --- diff --git a/ews2ical.c b/ews2ical.c index bd3c883..9805363 100644 --- a/ews2ical.c +++ b/ews2ical.c @@ -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]))