[BACK]Return to list.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / mail

Diff for /src/usr.bin/mail/list.c between version 1.16 and 1.17

version 1.16, 2005/07/11 14:08:23 version 1.17, 2008/07/15 19:23:26
Line 650 
Line 650 
 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);  
 }  }
   
 /*  /*
Line 677 
Line 668 
 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++;
   
Line 687 
Line 678 
         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);
 }  }
Line 719 
Line 698 
 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')
Line 733 
Line 712 
          */           */
         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);  
 }  }
   
 /*  /*

Legend:
Removed from v.1.16  
changed lines
  Added in v.1.17