VSF Documented
regex.h
Go to the documentation of this file.
1/* $OpenBSD: regex.h,v 1.7 2012/12/05 23:19:57 deraadt Exp $ */
2/* $NetBSD: regex.h,v 1.4.6.1 1996/06/10 18:57:07 explorer Exp $ */
3
4/*-
5 * Copyright (c) 1992 Henry Spencer.
6 * Copyright (c) 1992, 1993
7 * The Regents of the University of California. All rights reserved.
8 *
9 * This code is derived from software contributed to Berkeley by
10 * Henry Spencer of the University of Toronto.
11 *
12 * Redistribution and use in source and binary forms, with or without
13 * modification, are permitted provided that the following conditions
14 * are met:
15 * 1. Redistributions of source code must retain the above copyright
16 * notice, this list of conditions and the following disclaimer.
17 * 2. Redistributions in binary form must reproduce the above copyright
18 * notice, this list of conditions and the following disclaimer in the
19 * documentation and/or other materials provided with the distribution.
20 * 3. Neither the name of the University nor the names of its contributors
21 * may be used to endorse or promote products derived from this software
22 * without specific prior written permission.
23 *
24 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
25 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34 * SUCH DAMAGE.
35 *
36 * @(#)regex.h 8.1 (Berkeley) 6/2/93
37 */
38
39#ifndef _REGEX_H_
40#define _REGEX_H_
41
42#include <sys/types.h>
43
44/* types */
46
47typedef struct {
49 size_t re_nsub; /* number of parenthesized subexpressions */
50 const char *re_endp; /* end pointer for REG_PEND */
51 struct re_guts *re_g; /* none of your business :-) */
52} regex_t;
53
54typedef struct {
55 regoff_t rm_so; /* start of match */
56 regoff_t rm_eo; /* end of match */
58
59/* regcomp() flags */
60#define REG_BASIC 0000
61#define REG_EXTENDED 0001
62#define REG_ICASE 0002
63#define REG_NOSUB 0004
64#define REG_NEWLINE 0010
65#define REG_NOSPEC 0020
66#define REG_PEND 0040
67#define REG_DUMP 0200
68
69/* regerror() flags */
70#define REG_NOMATCH 1
71#define REG_BADPAT 2
72#define REG_ECOLLATE 3
73#define REG_ECTYPE 4
74#define REG_EESCAPE 5
75#define REG_ESUBREG 6
76#define REG_EBRACK 7
77#define REG_EPAREN 8
78#define REG_EBRACE 9
79#define REG_BADBR 10
80#define REG_ERANGE 11
81#define REG_ESPACE 12
82#define REG_BADRPT 13
83#define REG_EMPTY 14
84#define REG_ASSERT 15
85#define REG_INVARG 16
86#define REG_ATOI 255 /* convert name to number (!) */
87#define REG_ITOA 0400 /* convert number to name (!) */
88
89/* regexec() flags */
90#define REG_NOTBOL 00001
91#define REG_NOTEOL 00002
92#define REG_STARTEND 00004
93#define REG_TRACE 00400 /* tracing of execution */
94#define REG_LARGE 01000 /* force large representation */
95#define REG_BACKR 02000 /* force use of backref code */
96
97#if VSF_LINUX_APPLET_USE_REGEX == ENABLED
98typedef struct vsf_linux_regex_vplt_t {
100
106# ifndef __VSF_APPLET__
108# endif
109#endif
110
111#if defined(__VSF_APPLET__) && (defined(__VSF_APPLET_LIB__) || defined(__VSF_APPLET_LINUX_REGEX_LIB__))\
112 && VSF_APPLET_CFG_ABI_PATCH != ENABLED && VSF_LINUX_APPLET_USE_REGEX == ENABLED
113
114#ifndef VSF_LINUX_APPLET_REGEX_VPLT
115# if VSF_LINUX_USE_APPLET == ENABLED
116# define VSF_LINUX_APPLET_REGEX_VPLT \
117 ((vsf_linux_regex_vplt_t *)(VSF_LINUX_APPLET_VPLT->regex_vplt))
118# else
119# define VSF_LINUX_APPLET_REGEX_VPLT \
120 ((vsf_linux_regex_vplt_t *)vsf_vplt((void *)0))
121# endif
122#endif
123
124#define VSF_LINUX_APPLET_REGEX_ENTRY(__NAME) \
125 VSF_APPLET_VPLT_ENTRY_FUNC_ENTRY(VSF_LINUX_APPLET_REGEX_VPLT, __NAME)
126#define VSF_LINUX_APPLET_REGEX_IMP(...) \
127 VSF_APPLET_VPLT_ENTRY_FUNC_IMP(VSF_LINUX_APPLET_REGEX_VPLT, __VA_ARGS__)
128
129VSF_LINUX_APPLET_REGEX_IMP(regcomp, int, regex_t *preg, const char *regex, int cflags) {
131 return VSF_LINUX_APPLET_REGEX_ENTRY(regcomp)(preg, regex, cflags);
132}
133VSF_LINUX_APPLET_REGEX_IMP(regerror, size_t, int errcode, const regex_t *preg, char *errbuf, size_t errbuf_size) {
135 return VSF_LINUX_APPLET_REGEX_ENTRY(regerror)(errcode, preg, errbuf, errbuf_size);
136}
137VSF_LINUX_APPLET_REGEX_IMP(regexec, int, const regex_t *preg, const char *string, size_t nmatch, regmatch_t pmatch[], int eflags) {
139 return VSF_LINUX_APPLET_REGEX_ENTRY(regexec)(preg, string, nmatch, pmatch, eflags);
140}
141VSF_LINUX_APPLET_REGEX_IMP(regfree, void, regex_t *preg) {
143 VSF_LINUX_APPLET_REGEX_ENTRY(regfree)(preg);
144}
145
146#else // __VSF_APPLET__ && VSF_LINUX_APPLET_USE_GLOB
147
149int regcomp(regex_t *, const char *, int);
150size_t regerror(int, const regex_t *, char *, size_t);
151int regexec(const regex_t *, const char *, size_t, regmatch_t [], int);
154
155#endif
156
157#endif /* !_REGEX_H_ */
#define __END_DECLS
Definition getopt.h:43
#define __BEGIN_DECLS
Definition getopt.h:42
long off_t
Definition types.h:95
void regfree(regex_t *)
__VSF_VPLT_DECORATOR__ vsf_linux_regex_vplt_t vsf_linux_regex_vplt
Definition vsf_linux.c:5301
int regexec(const regex_t *, const char *, size_t, regmatch_t[], int)
__BEGIN_DECLS int regcomp(regex_t *, const char *, int)
off_t regoff_t
Definition regex.h:45
size_t regerror(int, const regex_t *, char *, size_t)
Definition regex.h:47
size_t re_nsub
Definition regex.h:49
struct re_guts * re_g
Definition regex.h:51
int re_magic
Definition regex.h:48
const char * re_endp
Definition regex.h:50
Definition regex.h:54
regoff_t rm_eo
Definition regex.h:56
regoff_t rm_so
Definition regex.h:55
Definition regex.h:98
vsf_vplt_info_t info
Definition regex.h:99
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(regerror)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(regexec)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(regcomp)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(regfree)
Definition vsf_cfg.h:95
#define __VSF_VPLT_DECORATOR__
Definition vsf_cfg.h:93
#define VSF_APPLET_VPLT_ENTRY_FUNC_TRACE()
Definition vsf_cfg.h:165