X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/fe86b6d55ac470e6e832c53ea2c71e680efe5274..a3724ed39:/uip/picksbr.c?ds=inline diff --git a/uip/picksbr.c b/uip/picksbr.c index e6108ef7..ca330b96 100644 --- a/uip/picksbr.c +++ b/uip/picksbr.c @@ -1,6 +1,4 @@ - -/* - * picksbr.c -- routines to help pick along... +/* picksbr.c -- routines to help pick along... * * This code is Copyright (c) 2002, by the authors of nmh. See the * COPYRIGHT file in the root directory of the nmh distribution for @@ -64,7 +62,7 @@ DEFINE_SWITCH_ARRAY(PARSE, parswit); #define STAR 01 -#define LBSIZE 1024 +#define LBSIZE NMH_BUFSIZ #define ESIZE 1024 @@ -182,13 +180,19 @@ static struct nexus *parse(void); static struct nexus *nexp1(void); static struct nexus *nexp2(void); static struct nexus *nexp3(void); -static struct nexus *newnexus(int (*)()); +static struct nexus *newnexus(int (*)(struct nexus *n, + FILE *fp, int msgnum, long start, long stop)); -static int ORaction(); -static int ANDaction(); -static int NOTaction(); -static int GREPaction(); -static int TWSaction(); +static int ORaction(struct nexus *n, FILE *fp, int msgnum, + long start, long stop); +static int ANDaction(struct nexus *n, FILE *fp, int msgnum, + long start, long stop); +static int NOTaction(struct nexus *n, FILE *fp, int msgnum, + long start, long stop); +static int GREPaction(struct nexus *n, FILE *fp, int msgnum, + long start, long stop); +static int TWSaction(struct nexus *n, FILE *fp, int msgnum, + long start, long stop); int @@ -200,7 +204,7 @@ pcompile (char **vec, char *date) talked = 0; if ((head = parse ()) == NULL) - return (talked ? 0 : 1); + return !talked; if (*argp) { inform("%s unexpected", *argp); @@ -455,7 +459,8 @@ nexp3 (void) static struct nexus * -newnexus (int (*action)()) +newnexus(int (*action)(struct nexus *n, FILE *fp, int msgnum, + long start, long stop)) { struct nexus *p; @@ -465,15 +470,6 @@ newnexus (int (*action)()) } -#define args(a) a, fp, msgnum, start, stop -#define params args (n) -#define plist \ - struct nexus *n; \ - FILE *fp; \ - int msgnum; \ - long start, \ - stop; - int pmatches (FILE *fp, int msgnum, long start, long stop, int debug) { @@ -483,7 +479,7 @@ pmatches (FILE *fp, int msgnum, long start, long stop, int debug) if (!talked++ && debug) PRaction (head, 0); - return (*head->n_action) (args (head)); + return (*head->n_action)(head, fp, msgnum, start, stop); } @@ -529,30 +525,27 @@ PRaction (struct nexus *n, int level) static int -ORaction (params) -plist +ORaction(struct nexus *n, FILE *fp, int msgnum, long start, long stop) { - if ((*n->n_L_child->n_action) (args (n->n_L_child))) + if ((*n->n_L_child->n_action)(n->n_L_child, fp, msgnum, start, stop)) return 1; - return (*n->n_R_child->n_action) (args (n->n_R_child)); + return (*n->n_R_child->n_action)(n->n_R_child, fp, msgnum, start, stop); } static int -ANDaction (params) -plist +ANDaction(struct nexus *n, FILE *fp, int msgnum, long start, long stop) { - if (!(*n->n_L_child->n_action) (args (n->n_L_child))) + if (!(*n->n_L_child->n_action)(n->n_L_child, fp, msgnum, start, stop)) return 0; - return (*n->n_R_child->n_action) (args (n->n_R_child)); + return (*n->n_R_child->n_action)(n->n_R_child, fp, msgnum, start, stop); } static int -NOTaction (params) -plist +NOTaction(struct nexus *n, FILE *fp, int msgnum, long start, long stop) { - return (!(*n->n_L_child->n_action) (args (n->n_L_child))); + return (!(*n->n_L_child->n_action)(n->n_L_child, fp, msgnum, start, stop)); } @@ -647,8 +640,7 @@ cerror: ; static int -GREPaction (params) -plist +GREPaction(struct nexus *n, FILE *fp, int msgnum, long start, long stop) { int c, body, lf; long pos = start; @@ -683,21 +675,18 @@ plist --p2; break; } - else - lf = 0; + lf = 0; } if (c == '\n') { if (body) break; - else { - if (lf) { - body++; - break; - } - lf++; - /* Unfold by skipping the newline. */ - c = 0; - } + if (lf) { + body++; + break; + } + lf++; + /* Unfold by skipping the newline. */ + c = 0; } if (c && p1 < &linebuf[LBSIZE - 1]) *p1++ = c; @@ -843,7 +832,7 @@ tcompile (char *ap, struct tws *tb, int isafter) if ((tw = tws_parse (ap, isafter)) == NULL) return 0; - twscopy (tb, tw); + *tb = *tw; return 1; } @@ -930,12 +919,11 @@ tws_special (char *ap) static int -TWSaction (params) -plist +TWSaction(struct nexus *n, FILE *fp, int msgnum, long start, long stop) { int state; char *bp; - char buf[BUFSIZ], name[NAMESZ]; + char buf[NMH_BUFSIZ], name[NAMESZ]; struct tws *tw; m_getfld_state_t gstate = 0; NMH_UNUSED (stop);