summaryrefslogtreecommitdiff
path: root/reference/C/CONTRIB/SNIP/match.h
diff options
context:
space:
mode:
Diffstat (limited to 'reference/C/CONTRIB/SNIP/match.h')
-rwxr-xr-xreference/C/CONTRIB/SNIP/match.h107
1 files changed, 107 insertions, 0 deletions
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);