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);
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")) {
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)
"<%s> node is empty", xml_node->name);
return FALSE;
}
+
icalcomponent_set_description(comp, body);
return TRUE;
}
}
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;
}