summaryrefslogtreecommitdiff
path: root/match.c
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>1999-11-25 00:26:21 +1100
committerDamien Miller <djm@mindrot.org>1999-11-25 00:26:21 +1100
commit95def09838fc61b37b6ea7cd5c234a465b4b129b (patch)
tree042744f76f40a326b873cb1c3690a6d7d966bc3e /match.c
parent4d2f15f895f4c795afc008aeff3fd2ceffbc44f4 (diff)
- Merged very large OpenBSD source code reformat
- OpenBSD CVS updates - [channels.c cipher.c compat.c log-client.c scp.c serverloop.c] [ssh.h sshd.8 sshd.c] syslog changes: * Unified Logmessage for all auth-types, for success and for failed * Standard connections get only ONE line in the LOG when level==LOG: Auth-attempts are logged only, if authentication is: a) successfull or b) with passwd or c) we had more than AUTH_FAIL_LOG failues * many log() became verbose() * old behaviour with level=VERBOSE - [readconf.c readconf.h ssh.1 ssh.h sshconnect.c sshd.c] tranfer s/key challenge/response data in SSH_SMSG_AUTH_TIS_CHALLENGE messages. allows use of s/key in windows (ttssh, securecrt) and ssh-1.2.27 clients without 'ssh -v', ok: niels@ - [sshd.8] -V, for fallback to openssh in SSH2 compatibility mode - [sshd.c] fix sigchld race; cjc5@po.cwru.edu
Diffstat (limited to 'match.c')
-rw-r--r--match.c125
1 files changed, 62 insertions, 63 deletions
diff --git a/match.c b/match.c
index b7a7d338..c0729dd8 100644
--- a/match.c
+++ b/match.c
@@ -1,78 +1,77 @@
/*
-
-match.c
-
-Author: Tatu Ylonen <ylo@cs.hut.fi>
-
-Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
- All rights reserved
-
-Created: Thu Jun 22 01:17:50 1995 ylo
-
-Simple pattern matching, with '*' and '?' as wildcards.
-
-*/
+ *
+ * match.c
+ *
+ * Author: Tatu Ylonen <ylo@cs.hut.fi>
+ *
+ * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
+ * All rights reserved
+ *
+ * Created: Thu Jun 22 01:17:50 1995 ylo
+ *
+ * Simple pattern matching, with '*' and '?' as wildcards.
+ *
+ */
#include "includes.h"
-RCSID("$Id: match.c,v 1.1 1999/10/27 03:42:44 damien Exp $");
+RCSID("$Id: match.c,v 1.2 1999/11/24 13:26:22 damien Exp $");
#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. */
-
-int match_pattern(const char *s, const char *pattern)
-{
- while (1)
- {
- /* If at end of pattern, accept if also at end of string. */
- if (!*pattern)
- return !*s;
- /* Process '*'. */
- if (*pattern == '*')
- {
- /* Skip the asterisk. */
- pattern++;
+int
+match_pattern(const char *s, const char *pattern)
+{
+ for (;;) {
+ /* If at end of pattern, accept if also at end of string. */
+ if (!*pattern)
+ return !*s;
- /* If at end of pattern, accept immediately. */
- if (!*pattern)
- return 1;
+ /* 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. */
- for (; *s; s++)
- if (*s == *pattern &&
- match_pattern(s + 1, pattern + 1))
- return 1;
- /* Failed. */
- return 0;
- }
+ /* If at end of pattern, accept immediately. */
+ if (!*pattern)
+ return 1;
- /* 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;
- }
+ /* 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. */
+ for (; *s; s++)
+ if (*s == *pattern &&
+ match_pattern(s + 1, pattern + 1))
+ return 1;
+ /* Failed. */
+ return 0;
+ }
+ /* 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. */
+ if (!*s)
+ return 0;
- /* 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. */
+ if (*pattern != '?' && *pattern != *s)
+ return 0;
- /* 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. */
- s++;
- pattern++;
- }
- /*NOTREACHED*/
+ /* Move to the next character, both in string and in
+ pattern. */
+ s++;
+ pattern++;
+ }
+ /* NOTREACHED */
}