1f0957ccaSPeter Wemm /* $NetBSD: regex.h,v 1.1.1.2 2008/05/18 14:31:38 aymeric Exp $ */ 2f0957ccaSPeter Wemm 3f0957ccaSPeter Wemm /*- 4f0957ccaSPeter Wemm * Copyright (c) 1992 Henry Spencer. 5f0957ccaSPeter Wemm * Copyright (c) 1992, 1993 6f0957ccaSPeter Wemm * The Regents of the University of California. All rights reserved. 7f0957ccaSPeter Wemm * 8f0957ccaSPeter Wemm * This code is derived from software contributed to Berkeley by 9f0957ccaSPeter Wemm * Henry Spencer of the University of Toronto. 10f0957ccaSPeter Wemm * 11f0957ccaSPeter Wemm * Redistribution and use in source and binary forms, with or without 12f0957ccaSPeter Wemm * modification, are permitted provided that the following conditions 13f0957ccaSPeter Wemm * are met: 14f0957ccaSPeter Wemm * 1. Redistributions of source code must retain the above copyright 15f0957ccaSPeter Wemm * notice, this list of conditions and the following disclaimer. 16f0957ccaSPeter Wemm * 2. Redistributions in binary form must reproduce the above copyright 17f0957ccaSPeter Wemm * notice, this list of conditions and the following disclaimer in the 18f0957ccaSPeter Wemm * documentation and/or other materials provided with the distribution. 19c271fa92SBaptiste Daroussin * 3. Neither the name of the University nor the names of its contributors 20f0957ccaSPeter Wemm * may be used to endorse or promote products derived from this software 21f0957ccaSPeter Wemm * without specific prior written permission. 22f0957ccaSPeter Wemm * 23f0957ccaSPeter Wemm * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 24f0957ccaSPeter Wemm * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 25f0957ccaSPeter Wemm * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 26f0957ccaSPeter Wemm * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 27f0957ccaSPeter Wemm * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 28f0957ccaSPeter Wemm * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 29f0957ccaSPeter Wemm * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 30f0957ccaSPeter Wemm * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31f0957ccaSPeter Wemm * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 32f0957ccaSPeter Wemm * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33f0957ccaSPeter Wemm * SUCH DAMAGE. 34f0957ccaSPeter Wemm * 35f0957ccaSPeter Wemm * @(#)regex.h 8.1 (Berkeley) 6/2/93 36f0957ccaSPeter Wemm */ 37f0957ccaSPeter Wemm 38f0957ccaSPeter Wemm #ifndef _REGEX_H_ 39f0957ccaSPeter Wemm #define _REGEX_H_ 40f0957ccaSPeter Wemm 41f0957ccaSPeter Wemm #ifdef __REGEX_PRIVATE 42f0957ccaSPeter Wemm #include "config.h" 43f0957ccaSPeter Wemm #include "../common/multibyte.h" 44f0957ccaSPeter Wemm #endif 45f0957ccaSPeter Wemm 46f0957ccaSPeter Wemm /* types */ 47f0957ccaSPeter Wemm typedef off_t regoff_t; 48f0957ccaSPeter Wemm 49f0957ccaSPeter Wemm typedef struct { 50f0957ccaSPeter Wemm int re_magic; 51f0957ccaSPeter Wemm size_t re_nsub; /* number of parenthesized subexpressions */ 52f0957ccaSPeter Wemm const RCHAR_T *re_endp; /* end pointer for REG_PEND */ 53f0957ccaSPeter Wemm struct re_guts *re_g; /* none of your business :-) */ 54f0957ccaSPeter Wemm } regex_t; 55f0957ccaSPeter Wemm 56f0957ccaSPeter Wemm typedef struct { 57f0957ccaSPeter Wemm regoff_t rm_so; /* start of match */ 58f0957ccaSPeter Wemm regoff_t rm_eo; /* end of match */ 59f0957ccaSPeter Wemm } regmatch_t; 60f0957ccaSPeter Wemm 61f0957ccaSPeter Wemm /* regcomp() flags */ 62f0957ccaSPeter Wemm #define REG_BASIC 0000 63f0957ccaSPeter Wemm #define REG_EXTENDED 0001 64f0957ccaSPeter Wemm #define REG_ICASE 0002 65f0957ccaSPeter Wemm #define REG_NOSUB 0004 66f0957ccaSPeter Wemm #define REG_NEWLINE 0010 67f0957ccaSPeter Wemm #define REG_NOSPEC 0020 68f0957ccaSPeter Wemm #define REG_PEND 0040 69f0957ccaSPeter Wemm #define REG_DUMP 0200 70f0957ccaSPeter Wemm 71f0957ccaSPeter Wemm /* regerror() flags */ 72f0957ccaSPeter Wemm #define REG_NOMATCH 1 73f0957ccaSPeter Wemm #define REG_BADPAT 2 74f0957ccaSPeter Wemm #define REG_ECOLLATE 3 75f0957ccaSPeter Wemm #define REG_ECTYPE 4 76f0957ccaSPeter Wemm #define REG_EESCAPE 5 77f0957ccaSPeter Wemm #define REG_ESUBREG 6 78f0957ccaSPeter Wemm #define REG_EBRACK 7 79f0957ccaSPeter Wemm #define REG_EPAREN 8 80f0957ccaSPeter Wemm #define REG_EBRACE 9 81f0957ccaSPeter Wemm #define REG_BADBR 10 82f0957ccaSPeter Wemm #define REG_ERANGE 11 83f0957ccaSPeter Wemm #define REG_ESPACE 12 84f0957ccaSPeter Wemm #define REG_BADRPT 13 85f0957ccaSPeter Wemm #define REG_EMPTY 14 86f0957ccaSPeter Wemm #define REG_ASSERT 15 87f0957ccaSPeter Wemm #define REG_INVARG 16 88f0957ccaSPeter Wemm #define REG_ATOI 255 /* convert name to number (!) */ 89f0957ccaSPeter Wemm #define REG_ITOA 0400 /* convert number to name (!) */ 90f0957ccaSPeter Wemm 91f0957ccaSPeter Wemm /* regexec() flags */ 92f0957ccaSPeter Wemm #define REG_NOTBOL 00001 93f0957ccaSPeter Wemm #define REG_NOTEOL 00002 94f0957ccaSPeter Wemm #define REG_STARTEND 00004 95f0957ccaSPeter Wemm #define REG_TRACE 00400 /* tracing of execution */ 96f0957ccaSPeter Wemm #define REG_LARGE 01000 /* force large representation */ 97f0957ccaSPeter Wemm #define REG_BACKR 02000 /* force use of backref code */ 98f0957ccaSPeter Wemm 99*8ef98a80SAlex Richardson #ifdef USE_WIDECHAR 100*8ef98a80SAlex Richardson /* 101*8ef98a80SAlex Richardson * Avoid function name conflicts with the system regex functions. 102*8ef98a80SAlex Richardson * This is needed e.g. to build with AddressSanitizer. 103*8ef98a80SAlex Richardson */ 104*8ef98a80SAlex Richardson #define regcomp nvi_regcomp 105*8ef98a80SAlex Richardson #define regerror nvi_regerror 106*8ef98a80SAlex Richardson #define regexec nvi_regexec 107*8ef98a80SAlex Richardson #define regfree nvi_regfree 108*8ef98a80SAlex Richardson #endif 109c271fa92SBaptiste Daroussin int regcomp(regex_t *, const RCHAR_T *, int); 110c271fa92SBaptiste Daroussin size_t regerror(int, const regex_t *, char *, size_t); 111c271fa92SBaptiste Daroussin int regexec(const regex_t *, 112c271fa92SBaptiste Daroussin const RCHAR_T *, size_t, regmatch_t [], int); 113c271fa92SBaptiste Daroussin void regfree(regex_t *); 114f0957ccaSPeter Wemm 115f0957ccaSPeter Wemm #endif /* !_REGEX_H_ */ 116