iics2tree.c - ics2txt - convert icalendar .ics file to plain text Err bitreich.org 70 hgit clone git://bitreich.org/ics2txt git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/ics2txt URL:git://bitreich.org/ics2txt git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/ics2txt bitreich.org 70 1Log /scm/ics2txt/log.gph bitreich.org 70 1Files /scm/ics2txt/files.gph bitreich.org 70 1Refs /scm/ics2txt/refs.gph bitreich.org 70 1Tags /scm/ics2txt/tag bitreich.org 70 1README /scm/ics2txt/file/README.md.gph bitreich.org 70 i--- Err bitreich.org 70 iics2tree.c (1959B) Err bitreich.org 70 i--- Err bitreich.org 70 i 1 #include Err bitreich.org 70 i 2 #include Err bitreich.org 70 i 3 #include Err bitreich.org 70 i 4 #include Err bitreich.org 70 i 5 #include Err bitreich.org 70 i 6 #include Err bitreich.org 70 i 7 #include "ical.h" Err bitreich.org 70 i 8 #include "util.h" Err bitreich.org 70 i 9 Err bitreich.org 70 i 10 #ifndef __OpenBSD__ Err bitreich.org 70 i 11 #define pledge(...) 0 Err bitreich.org 70 i 12 #endif Err bitreich.org 70 i 13 Err bitreich.org 70 i 14 static void Err bitreich.org 70 i 15 print_ruler(int level) Err bitreich.org 70 i 16 { Err bitreich.org 70 i 17 while (level-- > 0) Err bitreich.org 70 i 18 fprintf(stdout, ": "); Err bitreich.org 70 i 19 } Err bitreich.org 70 i 20 Err bitreich.org 70 i 21 static int Err bitreich.org 70 i 22 fn_field_name(IcalParser *p, char *name) Err bitreich.org 70 i 23 { Err bitreich.org 70 i 24 print_ruler(ical_get_level(p)); Err bitreich.org 70 i 25 printf("name %s\n", name); Err bitreich.org 70 i 26 fflush(stdout); Err bitreich.org 70 i 27 return 0; Err bitreich.org 70 i 28 } Err bitreich.org 70 i 29 Err bitreich.org 70 i 30 static int Err bitreich.org 70 i 31 fn_block_begin(IcalParser *p, char *name) Err bitreich.org 70 i 32 { Err bitreich.org 70 i 33 print_ruler(ical_get_level(p) - 1); Err bitreich.org 70 i 34 printf("begin %s\n", name); Err bitreich.org 70 i 35 fflush(stdout); Err bitreich.org 70 i 36 return 0; Err bitreich.org 70 i 37 } Err bitreich.org 70 i 38 Err bitreich.org 70 i 39 static int Err bitreich.org 70 i 40 fn_param_value(IcalParser *p, char *name, char *value) Err bitreich.org 70 i 41 { Err bitreich.org 70 i 42 print_ruler(ical_get_level(p) + 1); Err bitreich.org 70 i 43 printf("param %s=%s\n", name, value); Err bitreich.org 70 i 44 fflush(stdout); Err bitreich.org 70 i 45 return 0; Err bitreich.org 70 i 46 } Err bitreich.org 70 i 47 Err bitreich.org 70 i 48 static int Err bitreich.org 70 i 49 fn_field_value(IcalParser *p, char *name, char *value) Err bitreich.org 70 i 50 { Err bitreich.org 70 i 51 size_t len; Err bitreich.org 70 i 52 (void)name; Err bitreich.org 70 i 53 Err bitreich.org 70 i 54 if (ical_get_value(p, value, &len) < 0) Err bitreich.org 70 i 55 return -1; Err bitreich.org 70 i 56 print_ruler(ical_get_level(p) + 1); Err bitreich.org 70 i 57 if (strcasecmp(name, "DTSTART") == 0 || Err bitreich.org 70 i 58 strcasecmp(name, "DTSTAMP") == 0 || Err bitreich.org 70 i 59 strcasecmp(name, "DTEND") == 0) { Err bitreich.org 70 i 60 time_t t; Err bitreich.org 70 i 61 if (ical_get_time(p, value, &t) != 0) Err bitreich.org 70 i 62 warn("%s: %s", p->errmsg, value); Err bitreich.org 70 i 63 printf("epoch %lld\n", t); Err bitreich.org 70 i 64 } else { Err bitreich.org 70 i 65 printf("value %s\n", value); Err bitreich.org 70 i 66 } Err bitreich.org 70 i 67 fflush(stdout); Err bitreich.org 70 i 68 return 0; Err bitreich.org 70 i 69 } Err bitreich.org 70 i 70 Err bitreich.org 70 i 71 int Err bitreich.org 70 i 72 main(int argc, char **argv) Err bitreich.org 70 i 73 { Err bitreich.org 70 i 74 IcalParser p = {0}; Err bitreich.org 70 i 75 arg0 = *argv++; Err bitreich.org 70 i 76 Err bitreich.org 70 i 77 if (pledge("stdio", "") < 0) Err bitreich.org 70 i 78 err(1, "pledge: %s", strerror(errno)); Err bitreich.org 70 i 79 Err bitreich.org 70 i 80 p.fn_field_name = fn_field_name; Err bitreich.org 70 i 81 p.fn_block_begin = fn_block_begin; Err bitreich.org 70 i 82 p.fn_param_value = fn_param_value; Err bitreich.org 70 i 83 p.fn_field_value = fn_field_value; Err bitreich.org 70 i 84 Err bitreich.org 70 i 85 if (*argv == NULL) { Err bitreich.org 70 i 86 if (ical_parse(&p, stdin) < 0) Err bitreich.org 70 i 87 err(1, "parsing stdin:%d: %s", p.linenum, p.errmsg); Err bitreich.org 70 i 88 } Err bitreich.org 70 i 89 Err bitreich.org 70 i 90 for (; *argv != NULL; argv++, argc--) { Err bitreich.org 70 i 91 FILE *fp; Err bitreich.org 70 i 92 Err bitreich.org 70 i 93 debug("converting \"%s\"", *argv); Err bitreich.org 70 i 94 if ((fp = fopen(*argv, "r")) == NULL) Err bitreich.org 70 i 95 err(1, "opening %s", *argv); Err bitreich.org 70 i 96 if (ical_parse(&p, fp) < 0) Err bitreich.org 70 i 97 err(1, "parsing %s:%d: %s", *argv, p.linenum, p.errmsg); Err bitreich.org 70 i 98 fclose(fp); Err bitreich.org 70 i 99 } Err bitreich.org 70 i 100 return 0; Err bitreich.org 70 i 101 } Err bitreich.org 70 .