diff options
author | mouring <mouring> | 2001-12-06 18:06:05 +0000 |
---|---|---|
committer | mouring <mouring> | 2001-12-06 18:06:05 +0000 |
commit | 17540365898596d6997c319237623913b277d81f (patch) | |
tree | 82d9f379031d07e163ba4a17e1d01e4e941c9d08 /match.c | |
parent | aed55fca0f1b0344d7fecc340c11717f3b4e8afb (diff) | |
download | openssh-17540365898596d6997c319237623913b277d81f.tar.gz |
- markus@cvs.openbsd.org 2001/12/05 16:54:51
[compat.c match.c match.h]
make theo and djm happy: bye bye regexp
Diffstat (limited to 'match.c')
-rw-r--r-- | match.c | 26 |
1 files changed, 20 insertions, 6 deletions
@@ -35,7 +35,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: match.c,v 1.14 2001/06/27 04:48:53 markus Exp $"); +RCSID("$OpenBSD: match.c,v 1.15 2001/12/05 16:54:51 markus Exp $"); #include "match.h" #include "xmalloc.h" @@ -104,14 +104,15 @@ match_pattern(const char *s, const char *pattern) } /* - * Tries to match the host name (which must be in all lowercase) against the + * Tries to match the string against the * comma-separated sequence of subpatterns (each possibly preceded by ! to * indicate negation). Returns -1 if negation matches, 1 if there is * a positive match, 0 if there is no match at all. */ int -match_hostname(const char *host, const char *pattern, u_int len) +match_pattern_list(const char *string, const char *pattern, u_int len, + int dolower) { char sub[1024]; int negated; @@ -134,7 +135,8 @@ match_hostname(const char *host, const char *pattern, u_int len) for (subi = 0; i < len && subi < sizeof(sub) - 1 && pattern[i] != ','; subi++, i++) - sub[subi] = isupper(pattern[i]) ? tolower(pattern[i]) : pattern[i]; + sub[subi] = dolower && isupper(pattern[i]) ? + tolower(pattern[i]) : pattern[i]; /* If subpattern too long, return failure (no match). */ if (subi >= sizeof(sub) - 1) return 0; @@ -146,8 +148,8 @@ match_hostname(const char *host, const char *pattern, u_int len) /* Null-terminate the subpattern. */ sub[subi] = '\0'; - /* Try to match the subpattern against the host name. */ - if (match_pattern(host, sub)) { + /* Try to match the subpattern against the string. */ + if (match_pattern(string, sub)) { if (negated) return -1; /* Negative */ else @@ -163,6 +165,18 @@ match_hostname(const char *host, const char *pattern, u_int len) } /* + * Tries to match the host name (which must be in all lowercase) against the + * comma-separated sequence of subpatterns (each possibly preceded by ! to + * indicate negation). Returns -1 if negation matches, 1 if there is + * a positive match, 0 if there is no match at all. + */ +int +match_hostname(const char *host, const char *pattern, u_int len) +{ + return match_pattern_list(host, pattern, len, 1); +} + +/* * returns 0 if we get a negative match for the hostname or the ip * or if we get no match at all. returns 1 otherwise. */ |