itsv2agenda: add line wrapping - 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
1commit d1604d44d1926ce38a94073ad8d55b2c8a99d172 /scm/ics2txt/commit/d1604d44d1926ce38a94073ad8d55b2c8a99d172.gph bitreich.org 70
1parent 3b9f2bbdc0b786d3732555f8e7a001f40eaa59c6 /scm/ics2txt/commit/3b9f2bbdc0b786d3732555f8e7a001f40eaa59c6.gph bitreich.org 70
hAuthor: Josuah Demangeon <me@josuah.net> URL:mailto:me@josuah.net bitreich.org 70
iDate: Fri, 25 Jun 2021 20:18:33 +0200 Err bitreich.org 70
i Err bitreich.org 70
itsv2agenda: add line wrapping Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i M tsv2agenda.c | 50 ++++++++++++++++++++++++------- Err bitreich.org 70
i Err bitreich.org 70
i1 file changed, 39 insertions(+), 11 deletions(-) Err bitreich.org 70
i--- Err bitreich.org 70
1diff --git a/tsv2agenda.c b/tsv2agenda.c /scm/ics2txt/file/tsv2agenda.c.gph bitreich.org 70
i@@ -106,20 +106,48 @@ print_header(AgendaCtx *ctx, struct tm *beg, struct tm *end, size_t *num) Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i static void Err bitreich.org 70
i-print_row(AgendaCtx *ctx, char *line, struct tm *beg, struct tm *end, size_t *num) Err bitreich.org 70
i+unescape(char const *s, char *d) Err bitreich.org 70
i { Err bitreich.org 70
i+ for (; *s != '\0'; s++) { Err bitreich.org 70
i+ if (*s == '\\') { Err bitreich.org 70
i+ s++; Err bitreich.org 70
i+ *d++ = (*s == 'n') ? '\n' : (*s == 't') ? ' ' : *s; Err bitreich.org 70
i+ } else { Err bitreich.org 70
i+ if (*s == '\\') Err bitreich.org 70
i+ debug("s='%c'", *s); Err bitreich.org 70
i+ *d++ = *s; Err bitreich.org 70
i+ } Err bitreich.org 70
i+ } Err bitreich.org 70
i+ *d = '\0'; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+static void Err bitreich.org 70
i+print_row(AgendaCtx *ctx, char *s, struct tm *beg, struct tm *end, size_t *num) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ unescape(s, s); Err bitreich.org 70
i+ Err bitreich.org 70
i print_header(ctx, beg, end, num); Err bitreich.org 70
i- for (char *cp = line; *cp != '\0'; cp++) { Err bitreich.org 70
i- if (*cp == '\\') { Err bitreich.org 70
i- switch (*++cp) { Err bitreich.org 70
i- case 'n': Err bitreich.org 70
i- fputc('\n', stdout); Err bitreich.org 70
i- print_header(ctx, beg, end, num); Err bitreich.org 70
i- fputs(": ", stdout); Err bitreich.org 70
i- continue; Err bitreich.org 70
i- } Err bitreich.org 70
i+ for (size_t i, n = 0; *s != '\0'; s++) { Err bitreich.org 70
i+ switch (*s) { Err bitreich.org 70
i+ case '\n': Err bitreich.org 70
i+newline: Err bitreich.org 70
i+ fputc('\n', stdout); Err bitreich.org 70
i+ print_header(ctx, beg, end, num); Err bitreich.org 70
i+ fputs(": ", stdout); Err bitreich.org 70
i+ n = 0; Err bitreich.org 70
i+ break; Err bitreich.org 70
i+ case ' ': Err bitreich.org 70
i+ case '\t': Err bitreich.org 70
i+ i = strcspn(s + 1, " \t\n"); Err bitreich.org 70
i+ if (n + i > 70) Err bitreich.org 70
i+ goto newline; Err bitreich.org 70
i+ fputc(' ', stdout); Err bitreich.org 70
i+ n++; Err bitreich.org 70
i+ break; Err bitreich.org 70
i+ default: Err bitreich.org 70
i+ fputc(*s, stdout); Err bitreich.org 70
i+ n++; Err bitreich.org 70
i } Err bitreich.org 70
i- fputc(*cp, stdout); Err bitreich.org 70
i } Err bitreich.org 70
i fputc('\n', stdout); Err bitreich.org 70
i } Err bitreich.org 70
.
Response:
text/plain