From 649ade4fb2c588355e89aa060b4d5954f77579e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Thu, 17 Jan 2019 00:20:06 +0100 Subject: Further work. --- vcal.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 vcal.c (limited to 'vcal.c') diff --git a/vcal.c b/vcal.c new file mode 100644 index 00000000..a40080fe --- /dev/null +++ b/vcal.c @@ -0,0 +1,45 @@ +#include "vcal.h" + +#include + +int copy_vevent(vevent* dest, vevent* src) { + copy_strbuf(&dest->dtstart , &src->dtstart); + copy_strbuf(&dest->dtend , &src->dtend); + copy_strbuf(&dest->summary , &src->summary); + copy_strbuf(&dest->description , &src->description); + return 0; +} + +int free_vevent (vevent* ev) { + free_string(&ev->dtstart); + free_string(&ev->dtend); + free_string(&ev->summary); + free_string(&ev->description); + return 0; +} + +int push_event(vcalendar* cal, vevent* ev) { + if (cal->n_events + 1> cal->alloc) { + cal->alloc <<= 1; + } + cal->events = realloc(cal->events, cal->alloc); + copy_vevent(&cal->events[cal->n_events], ev); + cal->n_events++; + return 0; +} + +int init_vcalendar(vcalendar* cal) { + cal->events = malloc(sizeof(*cal->events)); + cal->alloc = 1; + cal->n_events = 0; + return 0; +} + +int free_vcalendar (vcalendar* cal) { + for (size_t i = 0; i < cal->n_events; i++) { + vevent* v = & cal->events[i]; + free_vevent(v); + free(v); + } + return 0; +} -- cgit v1.2.3