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

Diff for /src/usr.bin/ssh/match.c between version 1.3 and 1.4

version 1.3, 1999/11/24 00:26:02 version 1.4, 1999/11/24 19:53:48
Line 18 
Line 18 
   
 #include "ssh.h"  #include "ssh.h"
   
 /* Returns true if the given string matches the pattern (which may contain  /*
    ? and * as wildcards), and zero if it does not match. */   * Returns true if the given string matches the pattern (which may contain ?
    * and * as wildcards), and zero if it does not match.
    */
   
 int  int
 match_pattern(const char *s, const char *pattern)  match_pattern(const char *s, const char *pattern)
Line 29 
Line 31 
                 if (!*pattern)                  if (!*pattern)
                         return !*s;                          return !*s;
   
                 /* Process '*'. */  
                 if (*pattern == '*') {                  if (*pattern == '*') {
                         /* Skip the asterisk. */                          /* Skip the asterisk. */
                         pattern++;                          pattern++;
Line 40 
Line 41 
   
                         /* If next character in pattern is known, optimize. */                          /* If next character in pattern is known, optimize. */
                         if (*pattern != '?' && *pattern != '*') {                          if (*pattern != '?' && *pattern != '*') {
                                 /* Look instances of the next character in                                  /*
                                    pattern, and try to match starting from                                   * Look instances of the next character in
                                    those. */                                   * pattern, and try to match starting from
                                    * those.
                                    */
                                 for (; *s; s++)                                  for (; *s; s++)
                                         if (*s == *pattern &&                                          if (*s == *pattern &&
                                             match_pattern(s + 1, pattern + 1))                                              match_pattern(s + 1, pattern + 1))
Line 50 
Line 53 
                                 /* Failed. */                                  /* Failed. */
                                 return 0;                                  return 0;
                         }                          }
                         /* Move ahead one character at a time and try to                          /*
                            match at each position. */                           * Move ahead one character at a time and try to
                            * match at each position.
                            */
                         for (; *s; s++)                          for (; *s; s++)
                                 if (match_pattern(s, pattern))                                  if (match_pattern(s, pattern))
                                         return 1;                                          return 1;
                         /* Failed. */                          /* Failed. */
                         return 0;                          return 0;
                 }                  }
                 /* There must be at least one more character in the                  /*
                    string.  If we are at the end, fail. */                   * There must be at least one more character in the string.
                    * If we are at the end, fail.
                    */
                 if (!*s)                  if (!*s)
                         return 0;                          return 0;
   
                 /* Check if the next character of the string is                  /* Check if the next character of the string is acceptable. */
                    acceptable. */  
                 if (*pattern != '?' && *pattern != *s)                  if (*pattern != '?' && *pattern != *s)
                         return 0;                          return 0;
   
                 /* Move to the next character, both in string and in                  /* Move to the next character, both in string and in pattern. */
                    pattern. */  
                 s++;                  s++;
                 pattern++;                  pattern++;
         }          }

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4