From 7e0f021a9aec35fd8e6725e87e3313b101d26f5e Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Sun, 27 Jan 2008 11:37:44 +0100 Subject: Initial import (2.0.2-6) --- reference/C/CONTRIB/SNIP/match.h | 107 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100755 reference/C/CONTRIB/SNIP/match.h (limited to 'reference/C/CONTRIB/SNIP/match.h') diff --git a/reference/C/CONTRIB/SNIP/match.h b/reference/C/CONTRIB/SNIP/match.h new file mode 100755 index 0000000..a2ee6b6 --- /dev/null +++ b/reference/C/CONTRIB/SNIP/match.h @@ -0,0 +1,107 @@ +/* + EPSHeader + + File: match.h + Author: J. Kercheval + Created: Sat, 01/05/1991 22:27:18 +*/ +/* + EPSRevision History + + J. Kercheval Wed, 02/20/1991 22:28:37 Released to Public Domain + J. Kercheval Sun, 03/10/1991 18:02:56 add is_valid_pattern + J. Kercheval Sun, 03/10/1991 18:25:48 add error_type in is_valid_pattern + J. Kercheval Sun, 03/10/1991 18:47:47 error return from matche() + J. Kercheval Tue, 03/12/1991 22:24:49 Released as V1.1 to Public Domain +*/ + +/* + Wildcard Pattern Matching +*/ + +#ifndef BOOLEAN +# define BOOLEAN int +# define TRUE 1 +# define FALSE 0 +#endif + +/* match defines */ +#define MATCH_PATTERN 6 /* bad pattern */ +#define MATCH_LITERAL 5 /* match failure on literal match */ +#define MATCH_RANGE 4 /* match failure on [..] construct */ +#define MATCH_ABORT 3 /* premature end of text string */ +#define MATCH_END 2 /* premature end of pattern string */ +#define MATCH_VALID 1 /* valid match */ + +/* pattern defines */ +#define PATTERN_VALID 0 /* valid pattern */ +#define PATTERN_ESC -1 /* literal escape at end of pattern */ +#define PATTERN_RANGE -2 /* malformed range in [..] construct */ +#define PATTERN_CLOSE -3 /* no end bracket in [..] construct */ +#define PATTERN_EMPTY -4 /* [..] contstruct is empty */ + +/*---------------------------------------------------------------------------- +* +* Match the pattern PATTERN against the string TEXT; +* +* match() returns TRUE if pattern matches, FALSE otherwise. +* matche() returns MATCH_VALID if pattern matches, or an errorcode +* as follows otherwise: +* +* MATCH_PATTERN - bad pattern +* MATCH_LITERAL - match failure on literal mismatch +* MATCH_RANGE - match failure on [..] construct +* MATCH_ABORT - premature end of text string +* MATCH_END - premature end of pattern string +* MATCH_VALID - valid match +* +* +* A match means the entire string TEXT is used up in matching. +* +* In the pattern string: +* `*' matches any sequence of characters (zero or more) +* `?' matches any character +* [SET] matches any character in the specified set, +* [!SET] or [^SET] matches any character not in the specified set. +* +* A set is composed of characters or ranges; a range looks like +* character hyphen character (as in 0-9 or A-Z). [0-9a-zA-Z_] is the +* minimal set of characters allowed in the [..] pattern construct. +* Other characters are allowed (ie. 8 bit characters) if your system +* will support them. +* +* To suppress the special syntactic significance of any of `[]*?!^-\', +* and match the character exactly, precede it with a `\'. +* +----------------------------------------------------------------------------*/ + +BOOLEAN match (char *pattern, char *text); + +int matche(register char *pattern, register char *text); + +/*---------------------------------------------------------------------------- +* +* Return TRUE if PATTERN has any special wildcard characters +* +----------------------------------------------------------------------------*/ + +BOOLEAN is_pattern (char *pattern); + +/*---------------------------------------------------------------------------- +* +* Return TRUE if PATTERN has is a well formed regular expression according +* to the above syntax +* +* error_type is a return code based on the type of pattern error. Zero is +* returned in error_type if the pattern is a valid one. error_type return +* values are as follows: +* +* PATTERN_VALID - pattern is well formed +* PATTERN_ESC - pattern has invalid escape ('\' at end of pattern) +* PATTERN_RANGE - [..] construct has a no end range in a '-' pair (ie [a-]) +* PATTERN_CLOSE - [..] construct has no end bracket (ie [abc-g ) +* PATTERN_EMPTY - [..] construct is empty (ie []) +* +----------------------------------------------------------------------------*/ + +BOOLEAN is_valid_pattern (char *pattern, int *error_type); -- cgit v1.2.3-54-g00ecf