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);
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);
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") ||
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;
}