summaryrefslogtreecommitdiff
path: root/match.c
diff options
context:
space:
mode:
authormouring <mouring>2001-12-06 18:06:05 +0000
committermouring <mouring>2001-12-06 18:06:05 +0000
commit17540365898596d6997c319237623913b277d81f (patch)
tree82d9f379031d07e163ba4a17e1d01e4e941c9d08 /match.c
parentaed55fca0f1b0344d7fecc340c11717f3b4e8afb (diff)
downloadopenssh-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.c26
1 files changed, 20 insertions, 6 deletions
diff --git a/match.c b/match.c
index 188b9a41..ca4d92c4 100644
--- a/match.c
+++ b/match.c
@@ -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.
*/