#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
match_pattern(const char *s, const char *pattern)
if (!*pattern)
return !*s;
- /* Process '*'. */
if (*pattern == '*') {
/* Skip the asterisk. */
pattern++;
/* If next character in pattern is known, optimize. */
if (*pattern != '?' && *pattern != '*') {
- /* Look instances of the next character in
- pattern, and try to match starting from
- those. */
+ /*
+ * Look instances of the next character in
+ * pattern, and try to match starting from
+ * those.
+ */
for (; *s; s++)
if (*s == *pattern &&
match_pattern(s + 1, pattern + 1))
/* Failed. */
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++)
if (match_pattern(s, pattern))
return 1;
/* Failed. */
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)
return 0;
- /* Check if the next character of the string is
- acceptable. */
+ /* Check if the next character of the string is acceptable. */
if (*pattern != '?' && *pattern != *s)
return 0;
- /* Move to the next character, both in string and in
- pattern. */
+ /* Move to the next character, both in string and in pattern. */
s++;
pattern++;
}