ical.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
---
ical.h (1170B)
---
1 #ifndef ICAL_H
2 #define ICAL_H
3
4 #include <stdio.h>
5 #include <time.h>
6
7 #define ICAL_STACK_SIZE 10
8
9 typedef enum {
10 ICAL_BLOCK_VEVENT,
11 ICAL_BLOCK_VTODO,
12 ICAL_BLOCK_VJOURNAL,
13 ICAL_BLOCK_VFREEBUSY,
14 ICAL_BLOCK_VALARM,
15 ICAL_BLOCK_OTHER,
16 } IcalBlock;
17
18 typedef struct {
19 char name[32];
20 char tzid[32];
21 } IcalStack;
22
23 typedef struct IcalParser IcalParser;
24 struct IcalParser {
25 /* function called while parsing in this order */
26 int (*fn_field_name)(IcalParser *, char *);
27 int (*fn_param_name)(IcalParser *, char *);
28 int (*fn_param_value)(IcalParser *, char *, char *);
29 int (*fn_field_value)(IcalParser *, char *, char *);
30 int (*fn_block_begin)(IcalParser *, char *);
31 int (*fn_block_end)(IcalParser *, char *);
32 /* if returning non-zero then halt the parser */
33
34 int base64;
35 char *errmsg;
36 size_t linenum;
37 char *tzid;
38 IcalBlock blocktype;
39 IcalStack stack[ICAL_STACK_SIZE], *current;
40 };
41
42 extern char *ical_block_name[ICAL_BLOCK_OTHER + 1];
43
44 int ical_parse(IcalParser *, FILE *);
45 int ical_get_level(IcalParser *);
46 int ical_get_time(IcalParser *, char *, time_t *);
47 int ical_get_value(IcalParser *, char *, size_t *);
48 int ical_err(IcalParser *, char *);
49
50 #endif