diff options
| author | Martin Stensgård <mastensg@mastensg.net> | 2025-04-18 18:06:33 +0200 |
|---|---|---|
| committer | Martin Stensgård <mastensg@mastensg.net> | 2025-04-18 18:06:33 +0200 |
| commit | 6888113d42ba2e1e4c0690e82e61092872cdffb3 (patch) | |
| tree | c4e55e435534829b39b022f0576e7561355b7813 /check_ical.c | |
| parent | 156827816395ff0ccf9535f502c6d80736244c41 (diff) | |
check_ical: parse events
Diffstat (limited to 'check_ical.c')
| -rw-r--r-- | check_ical.c | 52 |
1 files changed, 52 insertions, 0 deletions
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 <assert.h> +#include <stdlib.h> + +#include <libical/ical.h> + +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); +} |
