diff options
| author | Martin Stensgård <mastensg@mastensg.net> | 2025-07-08 23:21:23 +0200 |
|---|---|---|
| committer | Martin Stensgård <mastensg@mastensg.net> | 2025-07-08 23:21:23 +0200 |
| commit | 131e9525be948dab3446026d8d0f5602bcd5bba3 (patch) | |
| tree | bfd73fc1ef41591a1d230cef4ed21159035fe664 /import_booking.c | |
| parent | 7a567665cfb08169c140ff714cf46488183f831a (diff) | |
generic import_booking -> update
Diffstat (limited to 'import_booking.c')
| -rw-r--r-- | import_booking.c | 93 |
1 files changed, 0 insertions, 93 deletions
diff --git a/import_booking.c b/import_booking.c deleted file mode 100644 index 4fbb046..0000000 --- a/import_booking.c +++ /dev/null @@ -1,93 +0,0 @@ -#include <assert.h> -#include <err.h> -#include <stdio.h> - -#include <libical/ical.h> - -#include "sqlite/sqlite3.h" - -static const char *DATABASE = "booking.db"; - -static char *SCHEMA = "CREATE TABLE event (" - " start TIMESTAMP," - " end TIMESTAMP," - " summary TEXT" - ")"; - -static char * -read_stream(char *s, size_t size, void *d) -{ - return fgets(s, (int)size, (FILE *)d); -} - -static void -component(sqlite3 *db, icalcomponent *c) -{ - struct icaltimetype dts = icalcomponent_get_dtstart(c); - struct icaltimetype dte = icalcomponent_get_dtend(c); - - time_t start = icaltime_as_timet(dts); - time_t end = icaltime_as_timet(dte); - const char *summary = icalcomponent_get_summary(c); - - sqlite3_stmt *stmt = NULL; - const char *sql = "INSERT INTO event (start, end, summary) VALUES (" - "datetime(?, 'unixepoch')," - "datetime(?, 'unixepoch')" - ", ?)"; - if (sqlite3_prepare_v2(db, sql, -1, &stmt, NULL)) - errx(1, "sqlite3_prepare_v2"); - - if (sqlite3_bind_int64(stmt, 1, start)) - errx(1, "sqlite3_bind_int64"); - if (sqlite3_bind_int64(stmt, 2, end)) - errx(1, "sqlite3_bind_int64"); - if (sqlite3_bind_text(stmt, 3, summary, -1, SQLITE_STATIC)) - errx(1, "sqlite3_bind_text"); - if (SQLITE_DONE != sqlite3_step(stmt)) - errx(1, "sqlite3_step"); -} - -int -main(void) -{ - sqlite3 *db; - char *errmsg = NULL; - if (sqlite3_open(DATABASE, &db)) - errx(1, "sqlite3_open: %s", errmsg); - - if (sqlite3_exec(db, SCHEMA, NULL, NULL, &errmsg)) - errx(1, "sqlite3_exec: %s", errmsg); - - icalparser *parser = icalparser_new(); - assert(parser); - - FILE *stream = stdin; - assert(stream); - - if (sqlite3_exec(db, "BEGIN", NULL, NULL, &errmsg)) - errx(1, "sqlite3_exec: %s", errmsg); - icalparser_set_gen_data(parser, stream); - for (;;) { - char *line = icalparser_get_line(parser, read_stream); - if (!line) { - break; - } - icalcomponent *c = icalparser_add_line(parser, line); - if (!c) { - continue; - } - for (icalcompiter i = icalcomponent_begin_component( - c, ICAL_VEVENT_COMPONENT); - icalcompiter_deref(&i); icalcompiter_next(&i)) { - icalcomponent *ic = icalcompiter_deref(&i); - component(db, ic); - } - icalcomponent_free(c); - } - if (sqlite3_exec(db, "COMMIT", NULL, NULL, &errmsg)) - errx(1, "sqlite3_exec: %s", errmsg); - - icalparser_free(parser); - sqlite3_close(db); -} |
