tical.h - ics2txt - convert icalendar .ics file to plain text
(HTM) 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