diff options
author | Hugo Hörnquist <hugo@hornquist.se> | 2019-02-19 02:31:35 +0100 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2019-02-19 10:18:31 +0100 |
commit | 6f3c772939463c97a4a8a8371db42b8f4b181c68 (patch) | |
tree | f8010e9e49696505e22cd0dff3bd84089392a240 /main.cpp | |
parent | I somehow got stuff to bulid, now it just doesn't link. (diff) | |
download | calp-6f3c772939463c97a4a8a8371db42b8f4b181c68.tar.gz calp-6f3c772939463c97a4a8a8371db42b8f4b181c68.tar.xz |
No idea, to tired.
Diffstat (limited to 'main.cpp')
-rw-r--r-- | main.cpp | 97 |
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 +} |