summaryrefslogtreecommitdiff
path: root/check_ical.c
diff options
context:
space:
mode:
authorMartin Stensgård <mastensg@mastensg.net>2025-04-18 18:06:33 +0200
committerMartin Stensgård <mastensg@mastensg.net>2025-04-18 18:06:33 +0200
commit6888113d42ba2e1e4c0690e82e61092872cdffb3 (patch)
treec4e55e435534829b39b022f0576e7561355b7813 /check_ical.c
parent156827816395ff0ccf9535f502c6d80736244c41 (diff)
check_ical: parse events
Diffstat (limited to 'check_ical.c')
-rw-r--r--check_ical.c52
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);
+}