Format match_pattern().

git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@714 7dcaeef0-15fb-0310-b436-a5af3365683c
This commit is contained in:
Andreas Schneider
2009-05-05 07:11:21 +00:00
parent dc07d46cca
commit 1a280d859d

View File

@@ -39,20 +39,22 @@
* vim: ts=2 sw=2 et cindent * vim: ts=2 sw=2 et cindent
*/ */
#include <sys/types.h>
#include <ctype.h> #include <ctype.h>
#include <string.h> #include <string.h>
#include <sys/types.h>
#include "libssh/priv.h" #include "libssh/priv.h"
/* /*
* Returns true if the given string matches the pattern (which may contain ? * Returns true if the given string matches the pattern (which may contain ?
* and * as wildcards), and zero if it does not match. * and * as wildcards), and zero if it does not match.
*/ */
static int match_pattern(const char *s, const char *pattern) { static int match_pattern(const char *s, const char *pattern) {
for (;;) { for (;;) {
/* If at end of pattern, accept if also at end of string. */ /* If at end of pattern, accept if also at end of string. */
if (!*pattern) if (!*pattern) {
return !*s; return !*s;
}
if (*pattern == '*') { if (*pattern == '*') {
/* Skip the asterisk. */ /* Skip the asterisk. */
@@ -70,9 +72,9 @@ static int match_pattern(const char *s, const char *pattern) {
* those. * 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))
return 1; return 1;
}
/* Failed. */ /* Failed. */
return 0; return 0;
} }
@@ -80,9 +82,11 @@ static int match_pattern(const char *s, const char *pattern) {
* Move ahead one character at a time and try to * Move ahead one character at a time and try to
* match at each position. * 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;
} }
@@ -90,17 +94,20 @@ static int match_pattern(const char *s, const char *pattern) {
* There must be at least one more character in the string. * There must be at least one more character in the string.
* If we are at the end, fail. * If we are at the end, fail.
*/ */
if (!*s) if (!*s) {
return 0; 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) if (*pattern != '?' && *pattern != *s) {
return 0; 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++; s++;
pattern++; pattern++;
} }
/* NOTREACHED */ /* NOTREACHED */
} }