StrBufXMLEscAppend(ReportOut, Caldata, NULL, 0, 0);
StrBufAppendPrintf(ReportOut, "</C:calendar-data>");
StrBufAppendPrintf(ReportOut, "</D:prop>");
- FreeStrBuf(&Caldata);
- Caldata = NULL;
}
else {
// syslog(LOG_DEBUG, "caldav_report_one_item(%s) 404 not found", ChrPtr(ThisHref));
}
cal_multiget_out(msgnum, ThisHref, Caldata, ReportOut);
+
+ if (Caldata != NULL) {
+ FreeStrBuf(&Caldata);
+ }
}
XML_Parse(xp, h->request_body, h->request_body_length, 1);
XML_ParserFree(xp);
- if (crp.Chardata != NULL) { // Discard any trailing chardata ... normally nothing here
+ if (crp.Chardata != NULL) { // Discard any trailing chardata ... normally nothing here
FreeStrBuf(&crp.Chardata);
crp.Chardata = NULL;
}
long m;
memcpy(&m, array_get_element_at(msglist, i), sizeof(long));
- // Begin -- evaluate the calendar item
+ // load and parse one calendar item
+ StrBuf *one_item = fetch_ical(c, m);
+ icalcomponent *cal = icalcomponent_new_from_string(ChrPtr(one_item));
- syslog(LOG_DEBUG, "evaluating message %ld", m);
- StrBuf *one_item;
- one_item = fetch_ical(c, m);
- syslog(LOG_DEBUG, "calendar item:\n---\n\033[33m%s\n---\033[0m", ChrPtr(one_item));
- FreeStrBuf(&one_item);
+ // qualify will be set to nonzero if this calendar item is a match for the QUERY.
+ int qualify = 0;
+
+ // this is a horrible temporary hack to output every item (for now)
+ qualify = 1;
- // End - evaluate the calendar item
+ // Did this calendar item match the query? If so, output it.
+ if (qualify) {
+ // FIXME need to populate the Href instead of NULL
+ cal_multiget_out(m, NULL, one_item, ReportOut);
+ }
+
+ icalcomponent_free(cal);
+ FreeStrBuf(&one_item);
}
array_free(msglist);