tical.h - ics2txt - convert icalendar .ics file to plain text HTML git clone git://bitreich.org/ics2txt git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/ics2txt DIR Log DIR Files DIR Refs DIR Tags DIR README --- tical.h (1806B) --- 1 #ifndef ICAL_H 2 #define ICAL_H 3 4 #include <stdio.h> 5 #include <time.h> 6 7 #include "map.h" 8 9 #define ICAL_NESTED_MAX 4 10 11 enum ical_err { 12 ICAL_ERR_OK, 13 ICAL_ERR_SYSTEM, 14 ICAL_ERR_END_MISMATCH, 15 ICAL_ERR_MISSING_BEGIN, 16 ICAL_ERR_MISSING_COLUMN, 17 ICAL_ERR_MISSING_SEMICOLUMN, 18 ICAL_ERR_MISSING_EQUAL, 19 ICAL_ERR_MIN_NESTED, 20 ICAL_ERR_MAX_NESTED, 21 22 ICAL_ERR_LENGTH, 23 }; 24 25 /* global propoerties for an iCalendar document as well as parsing state */ 26 27 struct ical_vcalendar { 28 time_t tzid; 29 struct ical_vnode *root; 30 struct ical_vnode *nested[ICAL_NESTED_MAX + 1]; 31 struct ical_vnode *current; 32 }; 33 34 /* element part of an iCalendar document with eventual nested childs */ 35 36 struct ical_vnode { 37 char name[32]; 38 struct map values; /*(struct ical_value *)*/ 39 struct map childs; /*(struct ical_vnode *)*/ 40 struct ical_vnode *next; 41 }; 42 43 /* one line whith the whole content unfolded */ 44 45 struct ical_value { 46 char *name, *value; 47 struct map param; 48 struct ical_value *next; 49 char buf[]; 50 }; 51 52 /** src/ical.c **/ 53 int ical_getline(char **line, char **ln, size_t *sz, FILE *fp); 54 char * ical_strerror(int i); 55 struct ical_value * ical_new_value(char const *line); 56 void ical_free_value(struct ical_value *value); 57 int ical_parse_value(struct ical_value *value); 58 struct ical_vnode * ical_new_vnode(char const *name); 59 void ical_free_vnode(struct ical_vnode *node); 60 int ical_push_nested(struct ical_vcalendar *vcal, struct ical_vnode *new); 61 struct ical_vnode * ical_pop_nested(struct ical_vcalendar *vcal); 62 int ical_begin_vnode(struct ical_vcalendar *vcal, char const *name); 63 int ical_end_vnode(struct ical_vcalendar *vcal, char const *name); 64 int ical_push_value(struct ical_vcalendar *vcal, struct ical_value *new); 65 void ical_free_vcalendar(struct ical_vcalendar *vcal); 66 int ical_read_vcalendar(struct ical_vcalendar *vcal, FILE *fp); 67 68 #endif