static void proc_line(struct prln_ctx_s ctx, char *line, size_t llen) { struct dt_dt_s d; do { char buf[64U]; char *sp, *tp; char *bp = buf; const char *const ep = buf + sizeof(buf); /* find first occurrence then */ d = dt_io_find_strpdt2( line, llen, ctx.ndl, &sp, &tp, ctx.fromz); /* print line, first thing */ safe_write(ctx.outfd, line, llen); /* extend by separator */ *bp++ = '\001'; /* check if line matches */ if (!dt_unk_p(d)) { /* match! */ if (!dt_sandwich_only_t_p(d)) { bp += dt_strfdt(bp, ep - bp, "%F", d); } *bp++ = '\001'; if (!dt_sandwich_only_d_p(d)) { bp += dt_strfdt(bp, ep - bp, "%T", d); } } else { /* just two empty fields then, innit? */ *bp++ = '\001'; } /* finalise the line and print */ *bp++ = '\n'; safe_write(ctx.outfd, buf, bp - buf); } while (0); return; }
static __attribute__((unused)) void __pr_val(struct dexkv_s *kv) { switch (kv->sp.spfl) { case DT_SPFL_N_DCNT_MON: fputs("%d ", stdout); break; case DT_SPFL_N_MON: case DT_SPFL_S_MON: fputs("%b ", stdout); break; case DT_SPFL_N_YEAR: fputs("%Y ", stdout); break; case DT_SPFL_N_DCNT_WEEK: case DT_SPFL_S_WDAY: fputs("%a ", stdout); break; case DT_SPFL_N_WCNT_MON: fputs("%c ", stdout); break; case DT_SPFL_N_DCNT_YEAR: fputs("%D ", stdout); break; case DT_SPFL_N_WCNT_YEAR: fputs("%C ", stdout); break; default: break; } switch (kv->op) { case OP_LT: fputs("< ", stdout); break; case OP_LE: fputs("<= ", stdout); break; case OP_GT: fputs("> ", stdout); break; case OP_GE: fputs(">= ", stdout); break; case OP_NE: fputs("!= ", stdout); break; case OP_EQ: default: fputs("== ", stdout); break; } switch (kv->sp.spfl) { case DT_SPFL_N_STD: { char buf[32]; dt_strfdt(buf, sizeof(buf), NULL, kv->d); fputs(buf, stdout); break; } case DT_SPFL_N_DCNT_MON: fprintf(stdout, "%02d", kv->s); break; case DT_SPFL_N_MON: case DT_SPFL_S_MON: if (kv->s >= 0 && kv->s <= 12) { fputs(__abbr_mon[kv->s], stdout); } break; case DT_SPFL_N_YEAR: fprintf(stdout, "%04d", kv->s); break; case DT_SPFL_N_DCNT_WEEK: case DT_SPFL_S_WDAY: if (kv->s >= 0 && kv->s <= 7) { fputs(__abbr_wday[kv->s], stdout); } break; case DT_SPFL_N_WCNT_MON: case DT_SPFL_N_WCNT_YEAR: fprintf(stdout, "%02d", kv->s); break; case DT_SPFL_N_DCNT_YEAR: fprintf(stdout, "%03d", kv->s); break; default: break; } return; }