From 6888113d42ba2e1e4c0690e82e61092872cdffb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Stensg=C3=A5rd?= Date: Fri, 18 Apr 2025 18:06:33 +0200 Subject: check_ical: parse events --- check_ical.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 check_ical.c (limited to 'check_ical.c') diff --git a/check_ical.c b/check_ical.c new file mode 100644 index 0000000..6cddeb3 --- /dev/null +++ b/check_ical.c @@ -0,0 +1,52 @@ +#include +#include + +#include + +char * +read_stream(char *s, size_t size, void *d) +{ + return fgets(s, (int)size, (FILE *)d); +} + +int +main(void) +{ + icalparser *parser = icalparser_new(); + assert(parser); + + FILE *stream = stdin; + assert(stream); + + icalparser_set_gen_data(parser, stream); + for (;;) { + char *line = icalparser_get_line(parser, read_stream); + if (!line) { + break; + } + + icalcomponent *comp = icalparser_add_line(parser, line); + if (!comp) { + continue; + } + + for (icalcompiter i = icalcomponent_begin_component( + comp, ICAL_VEVENT_COMPONENT); + icalcompiter_deref(&i); icalcompiter_next(&i)) { + icalcomponent *c = icalcompiter_deref(&i); + + struct icaltimetype dts = icalcomponent_get_dtstart(c); + printf("%02u-%02u-%02u ", dts.year, dts.month, + dts.day); + printf("%02u:%02u ", dts.hour, dts.minute); + + const char *sum = icalcomponent_get_summary(c); + assert(sum); + printf("%s\n", sum); + } + + icalcomponent_free(comp); + } + + icalparser_free(parser); +} -- cgit v1.2.3