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

index 776538fbbaca56b2e451c740663b93683cb3aa2c..f900d04bdc7f61f0056672c97b1a70777ac38dfe 100644 (file)
@@ -36,10 +36,10 @@ int process_required_attendees(icalcomponent *comp, xmlNode *xml_node, GError **
 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_truefalse(icalcomponent *comp, xmlNode *xml_node, gboolean *val, GError **error);
-int process_location(icalcomponent *comp, xmlNode *xml_node, GError **error);
-int process_sequence(icalcomponent *comp, xmlNode *xml_node, GError **error);
-int process_body(icalcomponent *comp, xmlNode *xml_node, GError **error);
-int process_subject(icalcomponent *comp, xmlNode *xml_node, GError **error);
+gboolean process_location(icalcomponent *comp, xmlNode *xml_node, GError **error);
+gboolean process_sequence(icalcomponent *comp, xmlNode *xml_node, GError **error);
+gboolean process_body(icalcomponent *comp, xmlNode *xml_node, GError **error);
+gboolean process_subject(icalcomponent *comp, xmlNode *xml_node, GError **error);
 int process_recurrence(icalcomponent *comp, xmlNode *xml_node, icaltimezone *zone, GError **error);
 int process_deleted_occurrences(icalcomponent *comp, xmlNode *xml_node,
                                icaltimetype **deletia, int *count, GError **error);
@@ -91,13 +91,16 @@ icalcomponent *ews_calitem_to_ical(xmlNode *xml_node, GError **error)
                        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"))
-                       process_body(comp, xml_node, error);
-               else if (!strcmp((char *)xml_node->name, "Location"))
-                       process_location(comp, xml_node, error);
-               else if (!strcmp((char *)xml_node->name, "Subject"))
-                       process_subject(comp, xml_node, error);
-               else if (!strcmp((char *)xml_node->name, "Recurrence"))
+               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")) {
+                       if (!process_location(comp, xml_node, error))
+                               goto err;
+               } else if (!strcmp((char *)xml_node->name, "Subject")) {
+                       if (!process_subject(comp, xml_node, error))
+                               goto err;
+               } else if (!strcmp((char *)xml_node->name, "Recurrence"))
                        process_recurrence(comp, xml_node, icaltz, error);
                else if (!strcmp((char *)xml_node->name, "DeletedOccurrences"))
                        process_deleted_occurrences(comp, xml_node, &deletia, &deletia_count, error);
@@ -108,9 +111,10 @@ icalcomponent *ews_calitem_to_ical(xmlNode *xml_node, GError **error)
                                goto err;
                } else if (!strcmp((char *)xml_node->name, "ReminderMinutesBeforeStart"))
                        process_reminder_mins(comp, xml_node, error);
-               else if (!strcmp((char *)xml_node->name, "AppointmentSequenceNumber"))
-                       process_sequence(comp, xml_node, error);
-               else if (!strcmp((char *)xml_node->name, "ParentFolderId") ||
+               else if (!strcmp((char *)xml_node->name, "AppointmentSequenceNumber")) {
+                       if (!process_sequence(comp, xml_node, error))
+                               goto err;
+               } else if (!strcmp((char *)xml_node->name, "ParentFolderId") ||
                         !strcmp((char *)xml_node->name, "DateTimeReceived") ||
                         !strcmp((char *)xml_node->name, "Size") ||
                         !strcmp((char *)xml_node->name, "IsSubmitted") ||
@@ -344,64 +348,59 @@ gboolean process_truefalse(icalcomponent *comp, xmlNode *xml_node, gboolean *val
        return TRUE;
 }
 
-int process_location (icalcomponent *comp, xmlNode *xml_node, GError **error)
+gboolean process_location (icalcomponent *comp, xmlNode *xml_node, GError **error)
 {
        const char *loc = (char *)xmlNodeGetContent(xml_node);
 
-       if (!loc)
-               return -1;
+       if (!loc) {
+               g_set_error(error, EWS_ERROR, EWS_ERROR_PARSE,
+                           "<%s> node is empty", xml_node->name);
+               return FALSE;
+       }
+
        icalcomponent_set_location(comp, loc);
-       return 0;
+       return TRUE;
 }
 
-int process_sequence (icalcomponent *comp, xmlNode *xml_node, GError **error)
+gboolean process_sequence (icalcomponent *comp, xmlNode *xml_node, GError **error)
 {
        const char *seq = (char *)xmlNodeGetContent(xml_node);
 
-       if (!seq)
-               return -1;
+       if (!seq) {
+               g_set_error(error, EWS_ERROR, EWS_ERROR_PARSE,
+                           "<%s> node is empty", xml_node->name);
+               return FALSE;
+       }               
+
        icalcomponent_set_sequence(comp, strtol(seq, NULL, 10));
-       return 0;
+       return TRUE;
 }
 
-int process_body(icalcomponent *comp, xmlNode *xml_node, GError **error)
+gboolean process_body(icalcomponent *comp, xmlNode *xml_node, GError **error)
 {
        const char *body = (char *)xmlNodeGetContent(xml_node);
 
-       if (!body)
-               return -1;
-
-       if (!strncasecmp(body, "<html", 5)) {
-#if 0 /* XX: libical doesn't seem to escape this properly */
-               icalproperty *prop;
-               icalparameter *param;
-
-               prop = icalproperty_new_x(body);
-               icalproperty_set_x_name(prop, "X-ALT-DESC");
-
-               param = icalparameter_new_fmttype("text/html");
-               icalproperty_add_parameter(prop, param);
-               icalcomponent_add_property(comp, prop);
-#endif
-               /* FIXME: html2text */
-               icalcomponent_set_description(comp, body);
-       } else {
-               icalcomponent_set_description(comp, body);
+       if (!body) {
+               g_set_error(error, EWS_ERROR, EWS_ERROR_PARSE,
+                           "<%s> node is empty", xml_node->name);
+               return FALSE;
        }
-
-
-       return 0;
+       icalcomponent_set_description(comp, body);
+       return TRUE;
 }
 
-int process_subject(icalcomponent *comp, xmlNode *xml_node, GError **error)
+gboolean process_subject(icalcomponent *comp, xmlNode *xml_node, GError **error)
 {
        const char *subject = (char *)xmlNodeGetContent(xml_node);
 
-       if (!subject)
-               return -1;
+       if (!subject) {
+               g_set_error(error, EWS_ERROR, EWS_ERROR_PARSE,
+                           "<%s> node is empty", xml_node->name);
+               return FALSE;
+       }
 
        icalcomponent_set_summary(comp, subject);
-       return 0;
+       return TRUE;
 }