aboutsummaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2019-02-03 13:27:20 +0100
committerHugo Hörnquist <hugo@lysator.liu.se>2019-02-03 13:27:20 +0100
commit1fd1232450a215a37915e3657964f2dad7ce72d6 (patch)
tree907cb87e027c12ffd550081513340db5aef3589a /main.c
parentMade .x files secoundary in makefile. (diff)
downloadcalp-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 '')
-rw-r--r--main.c41
1 files changed, 34 insertions, 7 deletions
diff --git a/main.c b/main.c
index 9ee1288b..27385b55 100644
--- a/main.c
+++ b/main.c
@@ -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);
}