From c374807e9d73014ce57eacbbaa56e05460288368 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Sat, 9 Feb 2019 00:19:58 +0100 Subject: Extend parsing to handle tree's of vcomponents. --- main.c | 35 ++++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 11 deletions(-) (limited to 'main.c') diff --git a/main.c b/main.c index c52b0554..6b52d96e 100644 --- a/main.c +++ b/main.c @@ -1,6 +1,7 @@ #include #include #include +#include #include "calendar.h" #include "macro.h" @@ -28,36 +29,48 @@ int main (int argc, char* argv[argc]) { exit (1); } - SNEW(vcomponent, cal); - read_vcalendar(&cal, args.argv[0]); + char* rootpath = args.argv[0]; + SNEW(vcomponent, root, "ROOT", rootpath); + read_vcalendar(&root, rootpath); arg_shift(&args); + vcomponent* cal = FCHILD(&root); + + assert(strcmp(root.type, "ROOT") == 0); + assert(strcmp(cal->type, "VCALENDAR") == 0); + if (args.argc == 0 || strcmp(args.argv[0], "-p") == 0) { printf("\nParsed calendar file containing [%u] events\n", - cal.components.length + root.components.length ); - for (size_t i = 0; i < cal.components.length; i++) { - char* filename = cal.components.items[i]->filename; + for (size_t i = 0; i < cal->components.length; i++) { + char* filename = cal->components.items[i]->filename; + vcomponent* ev = GET(VECT(vcomponent))(&cal->components, i); + + printf("TYPE = %s\n", ev->type); + if (strcmp(ev->type, "VEVENT") != 0) continue; printf("%3lu | %s | %s\n", i + 1, filename, - get_property(cal.components.items[i], "SUMMARY")->vals.cur->value->mem); + get_property(ev, "SUMMARY")->vals.cur->value->mem); } } else if (strcmp(args.argv[0], "-g") == 0) { if (arg_shift(&args) == 0) { - for (size_t i = 0; i < cal.components.length; i++) { + for (size_t i = 0; i < cal->components.length; i++) { char target[0xFF]; target[0] = '\0'; strcat(target, "/tmp/dot/"); - strcat(target, cal.components.items[i]->filename); + vcomponent* ev = GET(VECT(vcomponent))(&cal->components, i); + strcat(target, ev->filename); strcat(target, ".dot"); - create_graph(cal.components.items[i], target); + create_graph(ev, target); } } else { - create_graph(cal.components.items[0], args.argv[0]); + create_graph(GET(VECT(vcomponent))(&cal->components, 0), args.argv[0]); } } - FREE(vcomponent)(&cal); + + FREE(vcomponent)(&root); } -- cgit v1.2.3