xref: /plan9/sys/src/ape/cmd/pax/regexp.h (revision 9a747e4fd48b9f4522c70c07e8f882a15030f964)
1*9a747e4fSDavid du Colombier /*
2*9a747e4fSDavid du Colombier  * Definitions etc. for regexp(3) routines.
3*9a747e4fSDavid du Colombier  *
4*9a747e4fSDavid du Colombier  * Caveat:  this is V8 regexp(3) [actually, a reimplementation thereof],
5*9a747e4fSDavid du Colombier  * not the System V one.
6*9a747e4fSDavid du Colombier  */
7*9a747e4fSDavid du Colombier 
8*9a747e4fSDavid du Colombier #ifndef _PAX_REGEXP_H
9*9a747e4fSDavid du Colombier #define _PAX_REGEXP_H
10*9a747e4fSDavid du Colombier 
11*9a747e4fSDavid du Colombier #define NSUBEXP  10
12*9a747e4fSDavid du Colombier typedef struct regexp {
13*9a747e4fSDavid du Colombier 	char *startp[NSUBEXP];
14*9a747e4fSDavid du Colombier 	char *endp[NSUBEXP];
15*9a747e4fSDavid du Colombier 	char regstart;		/* Internal use only. */
16*9a747e4fSDavid du Colombier 	char reganch;		/* Internal use only. */
17*9a747e4fSDavid du Colombier 	char *regmust;		/* Internal use only. */
18*9a747e4fSDavid du Colombier 	int regmlen;		/* Internal use only. */
19*9a747e4fSDavid du Colombier 	char program[1];	/* Unwarranted chumminess with compiler. */
20*9a747e4fSDavid du Colombier } regexp;
21*9a747e4fSDavid du Colombier 
22*9a747e4fSDavid du Colombier 
23*9a747e4fSDavid du Colombier /*
24*9a747e4fSDavid du Colombier  * The first byte of the regexp internal "program" is actually this magic
25*9a747e4fSDavid du Colombier  * number; the start node begins in the second byte.
26*9a747e4fSDavid du Colombier  */
27*9a747e4fSDavid du Colombier #define	MAGIC	0234
28*9a747e4fSDavid du Colombier 
29*9a747e4fSDavid du Colombier extern regexp *regcomp();
30*9a747e4fSDavid du Colombier extern int regexec();
31*9a747e4fSDavid du Colombier extern void regsub();
32*9a747e4fSDavid du Colombier extern void regerror();
33*9a747e4fSDavid du Colombier 
34*9a747e4fSDavid du Colombier #endif /* _PAX_REGEXP_H */
35