URI: 
       tsv2agenda: show everything by default - 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 44e416da284ed08d3ed7b47f2d70a333433930f4
   DIR parent d1604d44d1926ce38a94073ad8d55b2c8a99d172
  HTML Author: Josuah Demangeon <me@josuah.net>
       Date:   Fri, 25 Jun 2021 22:46:59 +0200
       
       tsv2agenda: show everything by default
       
       Diffstat:
         M tsv2agenda.1                        |       2 +-
         M tsv2agenda.c                        |      46 ++++++++++++++++----------------
       
       2 files changed, 24 insertions(+), 24 deletions(-)
       ---
   DIR diff --git a/tsv2agenda.1 b/tsv2agenda.1
       @@ -31,7 +31,7 @@ the output (if not empty).
        .It Fl f Ar fromdate
        Show only events starting from
        .Ar fromdate .
       -By default the current time: showing all future events.
       +By default show everything from the beggining.
        .
        .It Fl t Ar todate
        Show only events up to
   DIR diff --git a/tsv2agenda.c b/tsv2agenda.c
       @@ -185,26 +185,26 @@ print(AgendaCtx *ctx, char **fields)
        }
        
        static void
       -tsv_to_agenda(AgendaCtx *ctx, FILE *fp)
       +tsv2agenda(FILE *fp)
        {
       -        char *ln1 = NULL, *ln2 = NULL;
       +        AgendaCtx ctx = {0};
       +        char *line = NULL;
                size_t sz1 = 0, sz2 = 0;
        
       -        if (ctx->linenum == 0) {
       +        if (ctx.linenum == 0) {
                        char *fields[FIELD_MAX];
        
       -                ctx->linenum++;
       -                getline(&ln1, &sz1, fp);
       +                ctx.linenum++;
       +                getline(&line, &sz1, fp);
                        if (ferror(fp))
                                err(1, "reading stdin: %s", strerror(errno));
                        if (feof(fp))
                                err(1, "empty input");
       -
       -                strchomp(ln1);
       -                ctx->fieldnum = strsplit(ln1, fields, FIELD_MAX, "\t");
       -                if (ctx->fieldnum == FIELD_MAX)
       +                strchomp(line);
       +                ctx.fieldnum = strsplit(line, fields, FIELD_MAX, "\t");
       +                if (ctx.fieldnum == FIELD_MAX)
                                err(1, "line 1: too many fields");
       -                if (ctx->fieldnum < FIELD_OTHER)
       +                if (ctx.fieldnum < FIELD_OTHER)
                                err(1, "line 1: not enough input columns");
                        if (strcasecmp(fields[0], "TYPE") != 0)
                                err(1, "line 1: 1st column is not \"TYPE\"");
       @@ -214,29 +214,33 @@ tsv_to_agenda(AgendaCtx *ctx, FILE *fp)
                                err(1, "line 1: 3rd column is not \"END\"");
                        if (strcasecmp(fields[3], "RECUR") != 0)
                                err(1, "line 1: 4th column is not \"RECUR\"");
       +
       +                free(line);
       +                line = NULL;
                }
        
                for (;;) {
                        char *fields[FIELD_MAX];
        
       -                ctx->linenum++;
       -                getline(&ln2, &sz2, fp);
       +                ctx.linenum++;
       +                getline(&line, &sz2, fp);
                        if (ferror(fp))
                                err(1, "reading stdin: %s", strerror(errno));
                        if (feof(fp))
                                break;
        
       -                strchomp(ln2);
       -                if (strsplit(ln2, fields, FIELD_MAX, "\t") != ctx->fieldnum)
       +                strchomp(line);
       +
       +                if (strsplit(line, fields, FIELD_MAX, "\t") != ctx.fieldnum)
                                err(1, "line %zd: bad number of columns",
       -                            ctx->linenum, strerror(errno));
       +                            ctx.linenum, strerror(errno));
        
       -                print(ctx, fields);
       +                print(&ctx, fields);
                }
                fputc('\n', stdout);
        
       -        free(ln1);
       -        free(ln2);
       +        free(line);
       +        line = NULL;
        }
        
        static void
       @@ -249,12 +253,8 @@ usage(void)
        int
        main(int argc, char **argv)
        {
       -        AgendaCtx ctx = {0};
                char c;
        
       -        if ((flag_from = time(NULL)) == (time_t)-1)
       -                err(1, "time: %s", strerror(errno));
       -
                if (pledge("stdio", "") < 0)
                        err(1, "pledge: %s", strerror(errno));
        
       @@ -280,6 +280,6 @@ main(int argc, char **argv)
                argc -= optind;
                argv += optind;
        
       -        tsv_to_agenda(&ctx, stdin);
       +        tsv2agenda(stdin);
                return 0;
        }