aboutsummaryrefslogtreecommitdiff
path: root/main.cpp
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@hornquist.se>2019-02-19 02:31:35 +0100
committerHugo Hörnquist <hugo@lysator.liu.se>2019-02-19 10:18:31 +0100
commit6f3c772939463c97a4a8a8371db42b8f4b181c68 (patch)
treef8010e9e49696505e22cd0dff3bd84089392a240 /main.cpp
parentI somehow got stuff to bulid, now it just doesn't link. (diff)
downloadcalp-6f3c772939463c97a4a8a8371db42b8f4b181c68.tar.gz
calp-6f3c772939463c97a4a8a8371db42b8f4b181c68.tar.xz
No idea, to tired.
Diffstat (limited to 'main.cpp')
-rw-r--r--main.cpp97
1 files changed, 97 insertions, 0 deletions
diff --git a/main.cpp b/main.cpp
new file mode 100644
index 00000000..1e2c960e
--- /dev/null
+++ b/main.cpp
@@ -0,0 +1,97 @@
+#include <cstring>
+
+#include <errno.h>
+// #include <stdio.h>
+#include <assert.h>
+
+#include "calendar.h"
+#include "vcal.h"
+// #include "graphs.h"
+#include "err.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) {
+ arg args = { .argc = argc, .argv = argv };
+
+ if (arg_shift(&args) == 0) {
+ ERR("Please give vdir or a vcalendar file as first argument");
+ exit (1);
+ }
+
+ char* rootpath = args.argv[0];
+ vcomponent root("ROOT", rootpath);
+ // SNEW(vcomponent, root, "ROOT", rootpath);
+ read_vcalendar(&root, rootpath);
+
+ arg_shift(&args);
+
+ if (args.argc == 0 || strcmp(args.argv[0], "-p") == 0) {
+ INFO_F("Parsed calendar file containing [%u] events",
+ static_cast<int>(root.components.size()));
+
+ puts("CAL : OBJ | Filename | Description");
+ puts("----------+----------+------------");
+
+ /* This loops over all VCALENDAR's in root */
+ for (size_t i = 0; i < root.components.size(); i++) {
+ vcomponent* cal = &root.components[i];
+ assert(cal->type == "VCALENDAR");
+
+ std::string filename = cal->filename;
+ /* This loop over all VEVENT's in the current VCALENDAR */
+ for (size_t j = 0; j < cal->components.size(); j++) {
+ vcomponent* ev = &cal->components[j];
+
+ if (ev->type == "VEVENT") continue;
+ std::cout << i + 1 << " " << j + 1 << std::endl;
+ // printf("%3lu : %3lu | %s | %s\n",
+ // i + 1, j + 1,
+ // filename,
+ // ev["SUMMARY"]->val.cur->value->key.mem);
+ }
+ }
+ }
+#if 0
+ else if (strcmp(args.argv[0], "-g") == 0) {
+ /* TODO self might be broken */
+ if (arg_shift(&args) == 0) {
+ for (size_t i = 0; i < root.components.length; i++) {
+ vcomponent* cal = GET(VECT(vcomponent))(&root.components, i);
+ assert(strcmp(cal->type, "VCALENDAR") == 0);
+
+ vcomponent* ev = FCHILD(cal);
+
+ char target[0xFF];
+ target[0] = '\0';
+ strcat(target, "/tmp/dot/");
+ strcat(target, ev->filename);
+ strcat(target, ".dot");
+ // create_graph(ev, target);
+ }
+ } else {
+ // create_graph(FCHILD(FCHILD(&root)), args.argv[0]);
+ INFO("Creating graph for single file");
+ INFO_F("output = %s\n", args.argv[0]);
+ create_graph_vcomponent(&root, args.argv[0]);
+ }
+ }
+
+ /*
+ char buf[0x20000];
+ FMT(vcomponent)(&root, buf);
+ puts(buf);
+ */
+#endif
+}