diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2019-02-03 13:27:20 +0100 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2019-02-03 13:27:20 +0100 |
commit | 1fd1232450a215a37915e3657964f2dad7ce72d6 (patch) | |
tree | 907cb87e027c12ffd550081513340db5aef3589a /main.c | |
parent | Made .x files secoundary in makefile. (diff) | |
download | calp-1fd1232450a215a37915e3657964f2dad7ce72d6.tar.gz calp-1fd1232450a215a37915e3657964f2dad7ce72d6.tar.xz |
Add graphviz output for TRIE's.
Add simple output in dot format for trie structures. Along with a
slightly updated main which handles a few more command line arguments.
Also updated makefile to generate pdf's from dot files and dot-files
from parse.
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 41 |
1 files changed, 34 insertions, 7 deletions
@@ -1,25 +1,52 @@ #include <errno.h> +#include <stdio.h> +#include <string.h> #include "calendar.h" #include "macro.h" #include "vcal.h" -#include "stdio.h" +#include "graphs.h" + +typedef struct { + int argc; + char** argv; +} arg; + +int arg_shift (arg* a) { + if (a->argc == 0) return 0; + + ++a->argv; + return --a->argc; + +} int main (int argc, char* argv[argc]) { - if (argc < 2) { + arg args = { .argc = argc, .argv = argv }; + + if (arg_shift(&args) == 0) { puts("Please give vdir as first argument"); exit (1); } SNEW(vcalendar, cal); - read_vcalendar(&cal, argv[1]); + read_vcalendar(&cal, args.argv[0]); + arg_shift(&args); - printf("\nParsed calendar file containing [%lu] events\n", - cal.n_events); - for (size_t i = 0; i < cal.n_events; i++) { - printf("%3lu. %s\n", i + 1, get_property(cal.events[i], "SUMMARY")->val.mem); + if (args.argc == 0 || strcmp(args.argv[0], "-p") == 0) { + printf("\nParsed calendar file containing [%lu] events\n", + cal.n_events); + for (size_t i = 0; i < cal.n_events; i++) { + printf("%3lu. %s\n", i + 1, get_property(cal.events[i], "SUMMARY")->val.mem); + } + } else if (strcmp(args.argv[0], "-g") == 0) { + if (arg_shift(&args) == 0) { + create_graph(cal.events[0], "graph.dot"); + } else { + create_graph(cal.events[0], args.argv[0]); + } } + free_vcalendar(&cal); } |