]> www.infradead.org Git - users/dwmw2/ews-sync.git/commitdiff
Convert process_time() to GError
authorDavid Woodhouse <dwmw2@infradead.org>
Tue, 20 Jul 2010 23:14:43 +0000 (00:14 +0100)
committerDavid Woodhouse <dwmw2@infradead.org>
Tue, 20 Jul 2010 23:14:43 +0000 (00:14 +0100)
calitem_to_ical.c

index f900d04bdc7f61f0056672c97b1a70777ac38dfe..4ab1df4dce1104209486e787597cacb08772c55f 100644 (file)
@@ -34,7 +34,7 @@ int process_dailyrecurrence(xmlNode *xml_node, struct icalrecurrencetype *ical_r
 int process_organizer(icalcomponent *comp, xmlNode *xml_node, GError **error);
 int process_required_attendees(icalcomponent *comp, xmlNode *xml_node, GError **error);
 int process_optional_attendees(icalcomponent *comp, xmlNode *xml_node, GError **error);
-int process_time(icalcomponent *comp, xmlNode *xml_node, icaltimetype *ical_time, GError **error);
+gboolean process_time(icalcomponent *comp, xmlNode *xml_node, icaltimetype *ical_time, GError **error);
 gboolean process_truefalse(icalcomponent *comp, xmlNode *xml_node, gboolean *val, GError **error);
 gboolean process_location(icalcomponent *comp, xmlNode *xml_node, GError **error);
 gboolean process_sequence(icalcomponent *comp, xmlNode *xml_node, GError **error);
@@ -87,11 +87,13 @@ icalcomponent *ews_calitem_to_ical(xmlNode *xml_node, GError **error)
                        process_required_attendees(comp, xml_node, error);
                else if (!strcmp((char *)xml_node->name, "OptionalAttendees"))
                        process_optional_attendees(comp, xml_node, error);
-               else if (!strcmp((char *)xml_node->name, "Start"))
-                       process_time(comp, xml_node, &dtstart, error);
-               else if (!strcmp((char *)xml_node->name, "End"))
-                       process_time(comp, xml_node, &dtend, error);
-               else if (!strcmp((char *)xml_node->name, "Body")) {
+               else if (!strcmp((char *)xml_node->name, "Start")) {
+                       if (!process_time(comp, xml_node, &dtstart, error))
+                               goto err;
+               } else if (!strcmp((char *)xml_node->name, "End")) {
+                       if (!process_time(comp, xml_node, &dtend, error))
+                               goto err;
+               } else if (!strcmp((char *)xml_node->name, "Body")) {
                        if (!process_body(comp, xml_node, error))
                                goto err;
                } else if (!strcmp((char *)xml_node->name, "Location")) {
@@ -316,14 +318,18 @@ int process_optional_attendees(icalcomponent *comp, xmlNode *xml_node, GError **
        return 0;
 }
 
-int process_time(icalcomponent *comp, xmlNode *xml_node, icaltimetype *ical_time, GError **error)
+gboolean process_time(icalcomponent *comp, xmlNode *xml_node, icaltimetype *ical_time, GError **error)
 {
        char *ews_time = (char *)xmlNodeGetContent(xml_node);
 
-       if (!ews_time)
-               return -1;
+       if (!ews_time) {
+               g_set_error(error, EWS_ERROR, EWS_ERROR_PARSE,
+                           "<%s> node is empty", xml_node->name);
+               return FALSE;
+       }
+
        *ical_time = icaltime_from_string(ews_time);
-       return 0;
+       return TRUE;
 }
 
 gboolean process_truefalse(icalcomponent *comp, xmlNode *xml_node, gboolean *val, GError **error)
@@ -385,6 +391,7 @@ gboolean process_body(icalcomponent *comp, xmlNode *xml_node, GError **error)
                            "<%s> node is empty", xml_node->name);
                return FALSE;
        }
+
        icalcomponent_set_description(comp, body);
        return TRUE;
 }
@@ -485,7 +492,7 @@ int process_deleted_occurrences(icalcomponent *comp, xmlNode *xml_node,
                }
                count++;
                deletia = realloc(deletia, sizeof(icaltimetype) * count);
-               if (process_time(comp, xml_node2, &deletia[count-1], error)) {
+               if (!process_time(comp, xml_node2, &deletia[count-1], error)) {
                        free(deletia);
                        return -1;
                }