X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fpick.c;h=984d80bdf20bf4581ce47ff78bdc962bd10cac1e;hp=819d81a247399dacaea06a9f771cde48fc278cf2;hb=a1a744d898ec8842871dca302e6ae54d9233413f;hpb=e16d5bfc58d8b0dfe61701cd4d6b1732e837d60a diff --git a/uip/pick.c b/uip/pick.c index 819d81a..984d80b 100644 --- a/uip/pick.c +++ b/uip/pick.c @@ -381,6 +381,7 @@ static struct swit parswit[] = { static char linebuf[LBSIZE + 1]; +static char decoded_linebuf[LBSIZE + 1]; /* the magic array for case-independence */ static char cc[] = { @@ -1016,8 +1017,17 @@ plist p1 = linebuf; p2 = n->n_expbuf; + /* + ** Attempt to decode as a MIME header. If it's the + ** last header, body will be 1 and lf will be at least 1. + */ + if ((body == 0 || lf > 0) && decode_rfc2047(linebuf, + decoded_linebuf, sizeof decoded_linebuf)) { + p1 = decoded_linebuf; + } + if (n->n_circf) { - if (advance(p1, p2)) + if (advance(p1, p2)) return 1; continue; } @@ -1242,7 +1252,6 @@ plist 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); @@ -1256,11 +1265,9 @@ plist } if (!mh_strcasecmp(name, n->n_datef)) break; - if (state != FLDEOF) - continue; + continue; case BODY: - case BODYEOF: case FILEEOF: case LENERR: case FMTERR: