version 1.16, 2005/07/11 14:08:23 |
version 1.17, 2008/07/15 19:23:26 |
|
|
int |
int |
matchsender(char *str, int mesg) |
matchsender(char *str, int mesg) |
{ |
{ |
char *cp, *cp2, *backup; |
char *cp; |
|
|
if (!*str) /* null string matches nothing instead of everything */ |
if (!*str) /* null string matches nothing instead of everything */ |
return(0); |
return(0); |
backup = cp2 = nameof(&message[mesg - 1], 0); |
cp = nameof(&message[mesg - 1], 0); |
cp = str; |
return (strcasestr(cp, str) != NULL); |
while (*cp2) { |
|
if (*cp == 0) |
|
return(1); |
|
if (chraise(*cp++) != chraise(*cp2++)) { |
|
cp2 = ++backup; |
|
cp = str; |
|
} |
|
} |
|
return(*cp == 0); |
|
} |
} |
|
|
/* |
/* |
|
|
matchto(char *str, int mesg) |
matchto(char *str, int mesg) |
{ |
{ |
struct message *mp; |
struct message *mp; |
char *cp, *cp2, *backup, **to; |
char *cp, **to; |
|
|
str++; |
str++; |
|
|
|
|
mp = &message[mesg-1]; |
mp = &message[mesg-1]; |
|
|
for (to = to_fields; *to; to++) { |
for (to = to_fields; *to; to++) { |
cp = str; |
cp = hfield(*to, mp); |
cp2 = hfield(*to, mp); |
if (cp != NULL && strcasestr(cp, str) != NULL) |
if (cp2 != NULL) { |
return(1); |
backup = cp2; |
|
while (*cp2) { |
|
if (*cp == 0) |
|
return(1); |
|
if (chraise(*cp++) != chraise(*cp2++)) { |
|
cp2 = ++backup; |
|
cp = str; |
|
} |
|
} |
|
if (*cp == 0) |
|
return(1); |
|
} |
|
} |
} |
return(0); |
return(0); |
} |
} |
|
|
matchsubj(char *str, int mesg) |
matchsubj(char *str, int mesg) |
{ |
{ |
struct message *mp; |
struct message *mp; |
char *cp, *cp2, *backup; |
char *cp, *cp2; |
|
|
str++; |
str++; |
if (*str == '\0') |
if (*str == '\0') |
|
|
*/ |
*/ |
if (value("searchheaders") && (cp = strchr(str, ':'))) { |
if (value("searchheaders") && (cp = strchr(str, ':'))) { |
/* Check for special case "/To:" */ |
/* Check for special case "/To:" */ |
if (chraise(str[0]) == 'T' && chraise(str[1]) == 'O' && |
if (strncasecmp(str, "to:", 3) == 0) |
str[2] == ':') |
|
return(matchto(cp, mesg)); |
return(matchto(cp, mesg)); |
*cp++ = '\0'; |
*cp++ = '\0'; |
cp2 = hfield(*str ? str : "subject", mp); |
cp2 = hfield(*str ? str : "subject", mp); |
cp[-1] = ':'; |
cp[-1] = ':'; |
str = cp; |
str = cp; |
|
cp = cp2; |
} else { |
} else { |
cp = str; |
cp = hfield("subject", mp); |
cp2 = hfield("subject", mp); |
|
} |
} |
if (cp2 == NULL) |
if (cp == NULL) |
return(0); |
return(0); |
backup = cp2; |
|
while (*cp2) { |
return (strcasestr(cp, str) != NULL); |
if (*cp == 0) |
|
return(1); |
|
if (chraise(*cp++) != chraise(*cp2++)) { |
|
cp2 = ++backup; |
|
cp = str; |
|
} |
|
} |
|
return(*cp == 0); |
|
} |
} |
|
|
/* |
/* |