Diff for /embedaddon/rsync/lib/wildmatch.c between versions 1.1.1.1 and 1.1.1.2

version 1.1.1.1, 2012/02/17 15:09:30 version 1.1.1.2, 2021/03/17 00:32:36
Line 53 Line 53
 #define ISUPPER(c) (ISASCII(c) && isupper(c))  #define ISUPPER(c) (ISASCII(c) && isupper(c))
 #define ISXDIGIT(c) (ISASCII(c) && isxdigit(c))  #define ISXDIGIT(c) (ISASCII(c) && isxdigit(c))
   
   extern int ignore_case;
   
 #ifdef WILD_TEST_ITERATIONS  #ifdef WILD_TEST_ITERATIONS
 int wildmatch_iteration_count;  int wildmatch_iteration_count;
 #endif  #endif
Line 72  static int dowild(const uchar *p, const uchar *text, c Line 74  static int dowild(const uchar *p, const uchar *text, c
     for ( ; (p_ch = *p) != '\0'; text++, p++) {      for ( ; (p_ch = *p) != '\0'; text++, p++) {
         int matched, special;          int matched, special;
         uchar t_ch, prev_ch;          uchar t_ch, prev_ch;
           if (ignore_case && ISUPPER(p_ch))
               p_ch = tolower(p_ch);
         while ((t_ch = *text) == '\0') {          while ((t_ch = *text) == '\0') {
             if (*a == NULL) {              if (*a == NULL) {
                 if (p_ch != '*')                  if (p_ch != '*')
Line 237  static int dowild(const uchar *p, const uchar *text, c Line 241  static int dowild(const uchar *p, const uchar *text, c
  * of "text" and any strings in array "a". */   * of "text" and any strings in array "a". */
 static int doliteral(const uchar *s, const uchar *text, const uchar*const *a)  static int doliteral(const uchar *s, const uchar *text, const uchar*const *a)
 {  {
       uchar s_ch, t_ch;
     for ( ; *s != '\0'; text++, s++) {      for ( ; *s != '\0'; text++, s++) {
         while (*text == '\0') {          while (*text == '\0') {
             if ((text = *a++) == NULL)              if ((text = *a++) == NULL)
                 return FALSE;                  return FALSE;
         }          }
        if (*text != *s)        s_ch = *s;
         t_ch = *text;
         if (ignore_case) {
             if (ISUPPER(s_ch))
                 s_ch = tolower(s_ch);
             if (ISUPPER(t_ch))
                 t_ch = tolower(t_ch);
         }
         if (t_ch != s_ch)
             return FALSE;              return FALSE;
     }      }
   
Line 288  static const uchar *trailing_N_elements(const uchar*co Line 301  static const uchar *trailing_N_elements(const uchar*co
 int wildmatch(const char *pattern, const char *text)  int wildmatch(const char *pattern, const char *text)
 {  {
     static const uchar *nomore[1]; /* A NULL pointer. */      static const uchar *nomore[1]; /* A NULL pointer. */
       int ret;
 #ifdef WILD_TEST_ITERATIONS  #ifdef WILD_TEST_ITERATIONS
     wildmatch_iteration_count = 0;      wildmatch_iteration_count = 0;
 #endif  #endif
    return dowild((const uchar*)pattern, (const uchar*)text, nomore) == TRUE;    force_lower_case = ignore_case;
     ret = dowild((const uchar*)pattern, (const uchar*)text, nomore) == TRUE;
     force_lower_case = 0;
     return ret;
 }  }
   
 /* Match the "pattern" against the forced-to-lower-case "text" string. */  /* Match the "pattern" against the forced-to-lower-case "text" string. */
Line 331  int wildmatch_array(const char *pattern, const char*co Line 348  int wildmatch_array(const char *pattern, const char*co
     if (!text)      if (!text)
         return FALSE;          return FALSE;
   
       force_lower_case = ignore_case;
   
     if ((matched = dowild(p, text, a)) != TRUE && where < 0      if ((matched = dowild(p, text, a)) != TRUE && where < 0
      && matched != ABORT_ALL) {       && matched != ABORT_ALL) {
         while (1) {          while (1) {
             if (*text == '\0') {              if (*text == '\0') {
                 if ((text = (uchar*)*a++) == NULL)                  if ((text = (uchar*)*a++) == NULL)
                    return FALSE;                    break;
                 continue;                  continue;
             }              }
             if (*text++ == '/' && (matched = dowild(p, text, a)) != FALSE              if (*text++ == '/' && (matched = dowild(p, text, a)) != FALSE
Line 344  int wildmatch_array(const char *pattern, const char*co Line 363  int wildmatch_array(const char *pattern, const char*co
                 break;                  break;
         }          }
     }      }
   
       force_lower_case = 0;
   
     return matched == TRUE;      return matched == TRUE;
 }  }
   

Removed from v.1.1.1.1  
changed lines
  Added in v.1.1.1.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>