=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/mail/list.c,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- src/usr.bin/mail/list.c 2005/07/11 14:08:23 1.16 +++ src/usr.bin/mail/list.c 2008/07/15 19:23:26 1.17 @@ -1,4 +1,4 @@ -/* $OpenBSD: list.c,v 1.16 2005/07/11 14:08:23 millert Exp $ */ +/* $OpenBSD: list.c,v 1.17 2008/07/15 19:23:26 martynas Exp $ */ /* $NetBSD: list.c,v 1.7 1997/07/09 05:23:36 mikel Exp $ */ /* @@ -34,7 +34,7 @@ #if 0 static const char sccsid[] = "@(#)list.c 8.4 (Berkeley) 5/1/95"; #else -static const char rcsid[] = "$OpenBSD: list.c,v 1.16 2005/07/11 14:08:23 millert Exp $"; +static const char rcsid[] = "$OpenBSD: list.c,v 1.17 2008/07/15 19:23:26 martynas Exp $"; #endif #endif /* not lint */ @@ -650,21 +650,12 @@ int matchsender(char *str, int mesg) { - char *cp, *cp2, *backup; + char *cp; if (!*str) /* null string matches nothing instead of everything */ return(0); - backup = cp2 = nameof(&message[mesg - 1], 0); - cp = str; - while (*cp2) { - if (*cp == 0) - return(1); - if (chraise(*cp++) != chraise(*cp2++)) { - cp2 = ++backup; - cp = str; - } - } - return(*cp == 0); + cp = nameof(&message[mesg - 1], 0); + return (strcasestr(cp, str) != NULL); } /* @@ -677,7 +668,7 @@ matchto(char *str, int mesg) { struct message *mp; - char *cp, *cp2, *backup, **to; + char *cp, **to; str++; @@ -687,21 +678,9 @@ mp = &message[mesg-1]; for (to = to_fields; *to; to++) { - cp = str; - cp2 = hfield(*to, mp); - if (cp2 != NULL) { - backup = cp2; - while (*cp2) { - if (*cp == 0) - return(1); - if (chraise(*cp++) != chraise(*cp2++)) { - cp2 = ++backup; - cp = str; - } - } - if (*cp == 0) - return(1); - } + cp = hfield(*to, mp); + if (cp != NULL && strcasestr(cp, str) != NULL) + return(1); } return(0); } @@ -719,7 +698,7 @@ matchsubj(char *str, int mesg) { struct message *mp; - char *cp, *cp2, *backup; + char *cp, *cp2; str++; if (*str == '\0') @@ -733,29 +712,20 @@ */ if (value("searchheaders") && (cp = strchr(str, ':'))) { /* Check for special case "/To:" */ - if (chraise(str[0]) == 'T' && chraise(str[1]) == 'O' && - str[2] == ':') + if (strncasecmp(str, "to:", 3) == 0) return(matchto(cp, mesg)); *cp++ = '\0'; cp2 = hfield(*str ? str : "subject", mp); cp[-1] = ':'; str = cp; + cp = cp2; } else { - cp = str; - cp2 = hfield("subject", mp); + cp = hfield("subject", mp); } - if (cp2 == NULL) + if (cp == NULL) return(0); - backup = cp2; - while (*cp2) { - if (*cp == 0) - return(1); - if (chraise(*cp++) != chraise(*cp2++)) { - cp2 = ++backup; - cp = str; - } - } - return(*cp == 0); + + return (strcasestr(cp, str) != NULL); } /*