X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fpicksbr.c;h=e021055ebb110e8b55e6a5896bcb074fc31504e7;hp=ffacb5db38f051c199b5a05fe66f39bba4b28dae;hb=5b792c4424571f05bc2008e3109797d18d7d00d1;hpb=8e5be81f784682822f5e868c1bf3c8624682bd23 diff --git a/uip/picksbr.c b/uip/picksbr.c index ffacb5d..e021055 100644 --- a/uip/picksbr.c +++ b/uip/picksbr.c @@ -247,27 +247,27 @@ parse(void) if (*++cp == '-') goto header; switch (smatch(cp, parswit)) { - case AMBIGSW: - ambigsw(cp, parswit); - talked++; - return NULL; - case UNKWNSW: - fprintf(stderr, "-%s unknown\n", cp); - talked++; - return NULL; + case AMBIGSW: + ambigsw(cp, parswit); + talked++; + return NULL; + case UNKWNSW: + fprintf(stderr, "-%s unknown\n", cp); + talked++; + return NULL; - case PROR: - o = newnexus(ORaction); - o->n_L_child = n; - if ((o->n_R_child = parse())) - return o; - padvise(NULL, "missing disjunctive"); - return NULL; + case PROR: + o = newnexus(ORaction); + o->n_L_child = n; + if ((o->n_R_child = parse())) + return o; + padvise(NULL, "missing disjunctive"); + return NULL; header: ; - default: - prvarg(); - return n; + default: + prvarg(); + return n; } } @@ -288,27 +288,27 @@ nexp1(void) if (*++cp == '-') goto header; switch (smatch(cp, parswit)) { - case AMBIGSW: - ambigsw(cp, parswit); - talked++; - return NULL; - case UNKWNSW: - fprintf(stderr, "-%s unknown\n", cp); - talked++; - return NULL; + case AMBIGSW: + ambigsw(cp, parswit); + talked++; + return NULL; + case UNKWNSW: + fprintf(stderr, "-%s unknown\n", cp); + talked++; + return NULL; - case PRAND: - o = newnexus(ANDaction); - o->n_L_child = n; - if ((o->n_R_child = nexp1())) - return o; - padvise(NULL, "missing conjunctive"); - return NULL; + case PRAND: + o = newnexus(ANDaction); + o->n_L_child = n; + if ((o->n_R_child = nexp1())) + return o; + padvise(NULL, "missing conjunctive"); + return NULL; header: ; - default: - prvarg(); - return n; + default: + prvarg(); + return n; } } @@ -330,26 +330,26 @@ nexp2(void) if (*++cp == '-') goto header; switch (smatch(cp, parswit)) { - case AMBIGSW: - ambigsw(cp, parswit); - talked++; - return NULL; - case UNKWNSW: - fprintf(stderr, "-%s unknown\n", cp); - talked++; - return NULL; + case AMBIGSW: + ambigsw(cp, parswit); + talked++; + return NULL; + case UNKWNSW: + fprintf(stderr, "-%s unknown\n", cp); + talked++; + return NULL; - case PRNOT: - n = newnexus(NOTaction); - if ((n->n_L_child = nexp3())) - return n; - padvise(NULL, "missing negation"); - return NULL; + case PRNOT: + n = newnexus(NOTaction); + if ((n->n_L_child = nexp3())) + return n; + padvise(NULL, "missing negation"); + return NULL; header: ; - default: - prvarg(); - return nexp3(); + default: + prvarg(); + return nexp3(); } } @@ -374,100 +374,93 @@ nexp3(void) goto header; } switch (i = smatch(cp, parswit)) { - case AMBIGSW: - ambigsw(cp, parswit); - talked++; - return NULL; - case UNKWNSW: - fprintf(stderr, "-%s unknown\n", cp); - talked++; - return NULL; + case AMBIGSW: + ambigsw(cp, parswit); + talked++; + return NULL; + case UNKWNSW: + fprintf(stderr, "-%s unknown\n", cp); + talked++; + return NULL; - case PRLBR: - if ((n = parse()) == NULL) { - padvise(NULL, "missing group"); - return NULL; - } - if ((cp = nxtarg()) == NULL) { - padvise(NULL, "missing -rbrace"); - return NULL; - } - if (*cp++ == '-' && smatch(cp, parswit) == PRRBR) - return n; - padvise(NULL, "%s unexpected", --cp); + case PRLBR: + if ((n = parse()) == NULL) { + padvise(NULL, "missing group"); return NULL; - - default: - prvarg(); + } + if ((cp = nxtarg()) == NULL) { + padvise(NULL, "missing -rbrace"); return NULL; + } + if (*cp++ == '-' && smatch(cp, parswit) == PRRBR) + return n; + padvise(NULL, "%s unexpected", --cp); + return NULL; + + default: + prvarg(); + return NULL; - case PRCC: - case PRDATE: - case PRFROM: - case PRTO: - case PRSUBJ: - strncpy(temp, parswit[i].sw, sizeof(temp)); - temp[sizeof(temp) - 1] = '\0'; - dp = *brkstring(temp, " ", NULL); + case PRCC: + case PRDATE: + case PRFROM: + case PRTO: + case PRSUBJ: + strncpy(temp, parswit[i].sw, sizeof(temp)); + temp[sizeof(temp) - 1] = '\0'; + dp = *brkstring(temp, " ", NULL); header: ; - if (!(cp = nxtarg())) { /* allow -xyz arguments */ - padvise(NULL, "missing argument to %s", - argp[-2]); - return NULL; - } - n = newnexus(GREPaction); - n->n_header = 1; - snprintf(buffer, sizeof(buffer), "^%s[ \t]*:.*%s", - dp, cp); - dp = buffer; - goto pattern; - - case PRSRCH: - n = newnexus(GREPaction); - n->n_header = 0; - if (!(cp = nxtarg())) { /* allow -xyz arguments */ - padvise(NULL, "missing argument to %s", - argp[-2]); - return NULL; - } - dp = cp; + if (!(cp = nxtarg())) { /* allow -xyz arguments */ + padvise(NULL, "missing argument to %s", argp[-2]); + return NULL; + } + n = newnexus(GREPaction); + n->n_header = 1; + snprintf(buffer, sizeof(buffer), "^%s[ \t]*:.*%s", dp, cp); + dp = buffer; + goto pattern; + + case PRSRCH: + n = newnexus(GREPaction); + n->n_header = 0; + if (!(cp = nxtarg())) { /* allow -xyz arguments */ + padvise(NULL, "missing argument to %s", argp[-2]); + return NULL; + } + dp = cp; pattern: ; - if (!gcompile(n, dp)) { - padvise(NULL, "pattern error in %s %s", - argp[-2], cp); - return NULL; - } - n->n_patbuf = getcpy(dp); - return n; + if (!gcompile(n, dp)) { + padvise(NULL, "pattern error in %s %s", argp[-2], cp); + return NULL; + } + n->n_patbuf = getcpy(dp); + return n; + + case PROTHR: + padvise(NULL, "internal error!"); + return NULL; - case PROTHR: - padvise(NULL, "internal error!"); + case PRDATF: + if (!(datesw = nxtarg()) || *datesw == '-') { + padvise(NULL, "missing argument to %s", + argp[-2]); return NULL; + } + return nexp3(); - case PRDATF: - if (!(datesw = nxtarg()) || *datesw == '-') { - padvise(NULL, "missing argument to %s", - argp[-2]); - return NULL; - } - return nexp3(); - - case PRAFTR: - case PRBEFR: - if (!(cp = nxtarg())) { /* allow -xyz arguments */ - padvise(NULL, "missing argument to %s", - argp[-2]); - return NULL; - } - n = newnexus(TWSaction); - n->n_datef = datesw; - if (!tcompile(cp, &n->n_tws, n->n_after = - i == PRAFTR)) { - padvise(NULL, "unable to parse %s %s", - argp[-2], cp); - return NULL; - } - return n; + case PRAFTR: + case PRBEFR: + if (!(cp = nxtarg())) { /* allow -xyz arguments */ + padvise(NULL, "missing argument to %s", argp[-2]); + return NULL; + } + n = newnexus(TWSaction); + n->n_datef = datesw; + if (!tcompile(cp, &n->n_tws, n->n_after = i == PRAFTR)) { + padvise(NULL, "unable to parse %s %s", argp[-2], cp); + return NULL; + } + return n; } } @@ -597,66 +590,66 @@ gcompile(struct nexus *n, char *astr) if ((c = *sp++) != '*') lastep = ep; switch (c) { - case '\0': - *ep++ = CEOF; - return 1; + case '\0': + *ep++ = CEOF; + return 1; - case '.': - *ep++ = CDOT; - continue; + case '.': + *ep++ = CDOT; + continue; - case '*': - if (lastep == 0) - goto defchar; - *lastep |= STAR; - continue; + case '*': + if (lastep == 0) + goto defchar; + *lastep |= STAR; + continue; - case '$': - if (*sp != '\0') - goto defchar; - *ep++ = CDOL; - continue; + case '$': + if (*sp != '\0') + goto defchar; + *ep++ = CDOL; + continue; - case '[': - *ep++ = CCL; - *ep++ = 0; - cclcnt = 0; - if ((c = *sp++) == '^') { - c = *sp++; - ep[-2] = NCCL; - } - if (c == '-') { - *ep++ = c; - cclcnt++; - c = *sp++; - } - do { - if (c == '-' && *sp != '\0' && *sp != ']') { - for (c = ep[-1]+1; c < *sp; c++) { - *ep++ = c; - cclcnt++; - if (c == '\0' || ep >= dp) - goto cerror; - } - } else { - *ep++ = c; - cclcnt++; + case '[': + *ep++ = CCL; + *ep++ = 0; + cclcnt = 0; + if ((c = *sp++) == '^') { + c = *sp++; + ep[-2] = NCCL; + } + if (c == '-') { + *ep++ = c; + cclcnt++; + c = *sp++; + } + do { + if (c == '-' && *sp != '\0' && *sp != ']') { + for (c = ep[-1]+1; c < *sp; c++) { + *ep++ = c; + cclcnt++; if (c == '\0' || ep >= dp) goto cerror; } - } while ((c = *sp++) != ']'); - if (cclcnt > 255) - goto cerror; - lastep[1] = cclcnt; - continue; + } else { + *ep++ = c; + cclcnt++; + if (c == '\0' || ep >= dp) + goto cerror; + } + } while ((c = *sp++) != ']'); + if (cclcnt > 255) + goto cerror; + lastep[1] = cclcnt; + continue; case '\\': if ((c = *sp++) == '\0') - goto cerror; - defchar: - default: - *ep++ = CCHR; - *ep++ = c; + goto cerror; +defchar: + default: + *ep++ = CCHR; + *ep++ = c; } } @@ -758,70 +751,70 @@ advance(char *alp, char *aep) ep = (unsigned char *)aep; for (;;) switch (*ep++) { - case CCHR: - if (*ep++ == *lp++ || ep[-1] == cc[lp[-1]]) - continue; - return 0; - - case CDOT: - if (*lp++) - continue; - return 0; - - case CDOL: - if (*lp == 0) - continue; - return 0; - - case CEOF: - return 1; + case CCHR: + if (*ep++ == *lp++ || ep[-1] == cc[lp[-1]]) + continue; + return 0; - case CCL: - if (cclass(ep, *lp++, 1)) { - ep += *ep + 1; - continue; - } - return 0; + case CDOT: + if (*lp++) + continue; + return 0; - case NCCL: - if (cclass(ep, *lp++, 0)) { - ep += *ep + 1; - continue; - } - return 0; - - case CDOT | STAR: - curlp = lp; - while (*lp++) - continue; - goto star; - - case CCHR | STAR: - curlp = lp; - while (*lp++ == *ep || cc[lp[-1]] == *ep) - continue; - ep++; - goto star; - - case CCL | STAR: - case NCCL | STAR: - curlp = lp; - while (cclass(ep, *lp++, ep[-1] == (CCL | STAR))) - continue; + case CDOL: + if (*lp == 0) + continue; + return 0; + + case CEOF: + return 1; + + case CCL: + if (cclass(ep, *lp++, 1)) { + ep += *ep + 1; + continue; + } + return 0; + + case NCCL: + if (cclass(ep, *lp++, 0)) { ep += *ep + 1; - goto star; - - star: - do { - lp--; - if (advance(lp, ep)) - return (1); - } while (lp > curlp); - return 0; - - default: - admonish(NULL, "advance() botch -- you lose big"); - return 0; + continue; + } + return 0; + + case CDOT | STAR: + curlp = lp; + while (*lp++) + continue; + goto star; + + case CCHR | STAR: + curlp = lp; + while (*lp++ == *ep || cc[lp[-1]] == *ep) + continue; + ep++; + goto star; + + case CCL | STAR: + case NCCL | STAR: + curlp = lp; + while (cclass(ep, *lp++, ep[-1] == (CCL | STAR))) + continue; + ep += *ep + 1; + goto star; + +star: + do { + lp--; + if (advance(lp, ep)) + return (1); + } while (lp > curlp); + return 0; + + default: + admonish(NULL, "advance() botch -- you lose big"); + return 0; } } @@ -950,35 +943,35 @@ plist fseek(fp, start, SEEK_SET); for (state = FLD, bp = NULL;;) { switch (state = m_getfld(state, name, buf, sizeof buf, fp)) { - case FLD: - case FLDEOF: - case FLDPLUS: - if (bp != NULL) - free(bp), bp = NULL; - bp = getcpy(buf); - while (state == FLDPLUS) { - state = m_getfld(state, name, buf, - sizeof buf, fp); - bp = add(buf, bp); - } - if (!mh_strcasecmp(name, n->n_datef)) - break; - if (state != FLDEOF) - continue; - - case BODY: - case BODYEOF: - case FILEEOF: - case LENERR: - case FMTERR: - if (state == LENERR || state == FMTERR) - advise(NULL, "format error in message %d", msgnum); - if (bp != NULL) - free(bp); - return 0; - - default: - adios(NULL, "internal error -- you lose"); + case FLD: + case FLDEOF: + case FLDPLUS: + if (bp != NULL) + free(bp), bp = NULL; + bp = getcpy(buf); + while (state == FLDPLUS) { + state = m_getfld(state, name, buf, + sizeof buf, fp); + bp = add(buf, bp); + } + if (!mh_strcasecmp(name, n->n_datef)) + break; + if (state != FLDEOF) + continue; + + case BODY: + case BODYEOF: + case FILEEOF: + case LENERR: + case FMTERR: + if (state == LENERR || state == FMTERR) + advise(NULL, "format error in message %d", msgnum); + if (bp != NULL) + free(bp); + return 0; + + default: + adios(NULL, "internal error -- you lose"); } break; }