source: trunk/src/emx/include/regex.h@ 2017

Last change on this file since 2017 was 1697, checked in by bird, 21 years ago

imported FreeBSD 5.3 code and broke stuff.

  • Property cvs2svn:cvs-rev set to 1.3
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 4.2 KB
Line 
1/* regex.h,v 1.2 2004/09/14 22:27:35 bird Exp */
2/** @file
3 * FreeBSD 5.3
4 */
5/*-
6 * Copyright (c) 1992 Henry Spencer.
7 * Copyright (c) 1992, 1993
8 * The Regents of the University of California. All rights reserved.
9 *
10 * This code is derived from software contributed to Berkeley by
11 * Henry Spencer of the University of Toronto.
12 *
13 * Redistribution and use in source and binary forms, with or without
14 * modification, are permitted provided that the following conditions
15 * are met:
16 * 1. Redistributions of source code must retain the above copyright
17 * notice, this list of conditions and the following disclaimer.
18 * 2. Redistributions in binary form must reproduce the above copyright
19 * notice, this list of conditions and the following disclaimer in the
20 * documentation and/or other materials provided with the distribution.
21 * 3. All advertising materials mentioning features or use of this software
22 * must display the following acknowledgement:
23 * This product includes software developed by the University of
24 * California, Berkeley and its contributors.
25 * 4. Neither the name of the University nor the names of its contributors
26 * may be used to endorse or promote products derived from this software
27 * without specific prior written permission.
28 *
29 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
30 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
31 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
32 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
33 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
34 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
35 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
36 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
37 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
38 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
39 * SUCH DAMAGE.
40 *
41 * @(#)regex.h 8.2 (Berkeley) 1/3/94
42 * $FreeBSD: src/include/regex.h,v 1.11 2004/07/12 06:07:26 tjr Exp $
43 */
44
45#ifndef _REGEX_H_
46#define _REGEX_H_
47
48#include <sys/cdefs.h>
49#include <sys/_types.h>
50
51/* types */
52typedef __off_t regoff_t;
53
54#if !defined(_SIZE_T_DECLARED) && !defined(_SIZE_T) /* bird: emx */
55typedef __size_t size_t;
56#define _SIZE_T_DECLARED
57#define _SIZE_T /* bird: emx */
58#endif
59
60typedef struct {
61 int re_magic;
62 size_t re_nsub; /* number of parenthesized subexpressions */
63 __const char *re_endp; /* end pointer for REG_PEND */
64 struct re_guts *re_g; /* none of your business :-) */
65} regex_t;
66
67typedef struct {
68 regoff_t rm_so; /* start of match */
69 regoff_t rm_eo; /* end of match */
70} regmatch_t;
71
72/* regcomp() flags */
73#define REG_BASIC 0000
74#define REG_EXTENDED 0001
75#define REG_ICASE 0002
76#define REG_NOSUB 0004
77#define REG_NEWLINE 0010
78#define REG_NOSPEC 0020
79#define REG_PEND 0040
80#define REG_DUMP 0200
81
82/* regerror() flags */
83#define REG_ENOSYS (-1)
84#define REG_NOMATCH 1
85#define REG_BADPAT 2
86#define REG_ECOLLATE 3
87#define REG_ECTYPE 4
88#define REG_EESCAPE 5
89#define REG_ESUBREG 6
90#define REG_EBRACK 7
91#define REG_EPAREN 8
92#define REG_EBRACE 9
93#define REG_BADBR 10
94#define REG_ERANGE 11
95#define REG_ESPACE 12
96#define REG_BADRPT 13
97#define REG_EMPTY 14
98#define REG_ASSERT 15
99#define REG_INVARG 16
100#define REG_ILLSEQ 17
101#define REG_ATOI 255 /* convert name to number (!) */
102#define REG_ITOA 0400 /* convert number to name (!) */
103
104/* regexec() flags */
105#define REG_NOTBOL 00001
106#define REG_NOTEOL 00002
107#define REG_STARTEND 00004
108#define REG_TRACE 00400 /* tracing of execution */
109#define REG_LARGE 01000 /* force large representation */
110#define REG_BACKR 02000 /* force use of backref code */
111
112__BEGIN_DECLS
113int regcomp(regex_t * __restrict, const char * __restrict, int);
114size_t regerror(int, const regex_t * __restrict, char * __restrict, size_t);
115/*
116 * XXX forth parameter should be `regmatch_t [__restrict]', but isn't because
117 * of a bug in GCC 3.2 (when -std=c99 is specified) which perceives this as a
118 * syntax error.
119 */
120int regexec(const regex_t * __restrict, const char * __restrict, size_t,
121 regmatch_t * __restrict, int);
122void regfree(regex_t *);
123__END_DECLS
124
125#endif /* !_REGEX_H_ */
Note: See TracBrowser for help on using the repository browser.