diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2019-01-17 00:20:06 +0100 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2019-01-17 00:20:06 +0100 |
commit | 649ade4fb2c588355e89aa060b4d5954f77579e5 (patch) | |
tree | 337943cf7e23069bcbfac4a973dee0a59784a0ba /vcal.c | |
parent | Fix memory leak. (diff) | |
download | calp-649ade4fb2c588355e89aa060b4d5954f77579e5.tar.gz calp-649ade4fb2c588355e89aa060b4d5954f77579e5.tar.xz |
Further work.
Diffstat (limited to 'vcal.c')
-rw-r--r-- | vcal.c | 45 |
1 files changed, 45 insertions, 0 deletions
@@ -0,0 +1,45 @@ +#include "vcal.h" + +#include <string.h> + +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; +} |