diff options
author | Damien Miller <djm@mindrot.org> | 1999-11-25 00:26:21 +1100 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 1999-11-25 00:26:21 +1100 |
commit | 95def09838fc61b37b6ea7cd5c234a465b4b129b (patch) | |
tree | 042744f76f40a326b873cb1c3690a6d7d966bc3e /match.c | |
parent | 4d2f15f895f4c795afc008aeff3fd2ceffbc44f4 (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.c | 125 |
1 files changed, 62 insertions, 63 deletions
@@ -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 */ } |