Home
always keep the key and value together - 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 --- DIR commit 7a6ceff37018ad2f867397aee9f3b3289f16427f DIR parent 775c76c450eed349600344550bbb6c140bdf1811 HTML Author: Josuah Demangeon <me@josuah.net> Date: Sun, 28 Jun 2020 20:41:06 +0200 always keep the key and value together Diffstat: M ics2tree.c | 39 ++++++++++++------------------- M src/map.c | 5 ++--- 2 files changed, 17 insertions(+), 27 deletions(-) --- DIR diff --git a/ics2tree.c b/ics2tree.c @@ -7,12 +7,18 @@ #include "util.h" void +print_ruler(int level) +{ + for (int i = 0; i < level; i++) + fprintf(stdout, ": "); +} + +void print_ical_tree_param(struct map_entry *entry, int level) { if (entry == NULL) return; - for (int i = 0; i < level; i++) - printf(": "); + print_ruler(level); fprintf(stdout, "param %s=%s\n", entry->key, (char *)entry->value); } @@ -21,8 +27,7 @@ print_ical_tree_value(struct ical_value *value, int level) { if (value == NULL) return; - for (int i = 0; i < level; i++) - printf(": "); + print_ruler(level); fprintf(stdout, "value %s:%s\n", value->name, value->value); for (size_t i = 0; i < value->param.len; i++) print_ical_tree_param(value->param.entry + i, level + 1); @@ -34,12 +39,13 @@ print_ical_tree_vnode(struct ical_vnode *node, int level) { if (node == NULL) return; - for (int i = 0; i < level; i++) - printf(": "); - fprintf(stdout, "node %p %s child=%p next=%p\n", node, node->name, node->child, node->next); + print_ruler(level); + fprintf(stdout, "node %p %s child=%lu next=%p\n", + (void *)node, node->name, node->child.len, (void *)node->next); for (size_t i = 0; i < node->values.len; i++) print_ical_tree_value(node->values.entry[i].value, level + 1); - print_ical_tree_vnode(node->child, level + 1); + for (size_t i = 0; i < node->child.len; i++) + print_ical_tree_vnode(node->child.entry[i].value, level + 1); print_ical_tree_vnode(node->next, level); } @@ -53,31 +59,16 @@ print_ical_tree(FILE *fp) die("reading ical file: %s", ical_strerror(e)); print_ical_tree_vnode(vcal.root, 0); - fprintf(stdout, ".\n"); + fprintf(stdout, ": end\n"); fflush(stdout); ical_free_vcalendar(&vcal); return 0; } -void -print_header(void) -{ - char *fields[] = { "", NULL }; - - printf("%s\t%s", "beg", "end"); - - for (char **f = fields; *f != NULL; f++) { - fprintf(stdout, "\t%s", *f); - } - fprintf(stdout, "\n"); -} - int main(int argc, char **argv) { - print_header(); - log_arg0 = *argv++; if (*argv == NULL) { DIR diff --git a/src/map.c b/src/map.c @@ -50,9 +50,8 @@ map_set(struct map *map, char *key, void *value) map->len++; insert = map->entry + i; - e = map->entry + map->len - 1 - 1; - for (; e >= insert; e--) - e[1].key = e[0].key; + for (e = map->entry + map->len - 2; e >= insert; e--) + e[1] = e[0]; insert->key = key; insert->value = value;