X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Fpick.c;h=aba0c028d6a3422a45c6cb8821c799ef30c30e87;hb=20597014bd0a3a6afa0244e5ee6531c59bc8fceb;hp=25bd6b6a052f208c43f53b251e95b81222b08ec4;hpb=e5579d23f1d5dcfaf9b7ecb2819e3a0f0b2ab3fa;p=mmh diff --git a/uip/pick.c b/uip/pick.c index 25bd6b6..aba0c02 100644 --- a/uip/pick.c +++ b/uip/pick.c @@ -1088,26 +1088,29 @@ GREPaction(struct field *f, int msgnum, void *data) { struct grep_data *g = data; int ret; - char *buf; + char buf[BUFSIZ]; if (!g->header && *f->name) { return FALSE; } /* check for the right field */ - if (g->header && *g->header && mh_strcasecmp(g->header, f->name)==0) { + if (!(g->header && *g->header && mh_strcasecmp(g->header, f->name)==0)) { return FALSE; } - ret = regexec(g->preg, f->value, 0, NULL, 0) == REG_NOMATCH; + if(decode_rfc2047(f->value, buf, sizeof(buf))) { + ret = regexec(g->preg, buf, 0, NULL, 0); + } else { + ret = regexec(g->preg, f->value, 0, NULL, 0); + } switch (ret) { case 0: return TRUE; case REG_NOMATCH: return FALSE; default: - buf = mh_xcalloc(BUFSIZ, sizeof(char)); - regerror(ret, g->preg, buf, BUFSIZ*sizeof(char)); + regerror(ret, g->preg, buf, sizeof(buf)); fprintf(stderr, "%s\n", buf); return FALSE; } @@ -1282,7 +1285,6 @@ DATEfree(struct nexus **n) } dd = (*n)->data; - mh_free0(&dd->datef); mh_free0(n); }