1951a39d68df598db08dfced8b4707755864a0492Ying Wang/* $OpenBSD: regex.h,v 1.6 2003/06/02 19:34:12 millert Exp $ */ 2951a39d68df598db08dfced8b4707755864a0492Ying Wang/* $NetBSD: regex.h,v 1.4.6.1 1996/06/10 18:57:07 explorer Exp $ */ 3951a39d68df598db08dfced8b4707755864a0492Ying Wang 4951a39d68df598db08dfced8b4707755864a0492Ying Wang/*- 5951a39d68df598db08dfced8b4707755864a0492Ying Wang * Copyright (c) 1992 Henry Spencer. 6951a39d68df598db08dfced8b4707755864a0492Ying Wang * Copyright (c) 1992, 1993 7951a39d68df598db08dfced8b4707755864a0492Ying Wang * The Regents of the University of California. All rights reserved. 8951a39d68df598db08dfced8b4707755864a0492Ying Wang * 9951a39d68df598db08dfced8b4707755864a0492Ying Wang * This code is derived from software contributed to Berkeley by 10951a39d68df598db08dfced8b4707755864a0492Ying Wang * Henry Spencer of the University of Toronto. 11951a39d68df598db08dfced8b4707755864a0492Ying Wang * 12951a39d68df598db08dfced8b4707755864a0492Ying Wang * Redistribution and use in source and binary forms, with or without 13951a39d68df598db08dfced8b4707755864a0492Ying Wang * modification, are permitted provided that the following conditions 14951a39d68df598db08dfced8b4707755864a0492Ying Wang * are met: 15951a39d68df598db08dfced8b4707755864a0492Ying Wang * 1. Redistributions of source code must retain the above copyright 16951a39d68df598db08dfced8b4707755864a0492Ying Wang * notice, this list of conditions and the following disclaimer. 17951a39d68df598db08dfced8b4707755864a0492Ying Wang * 2. Redistributions in binary form must reproduce the above copyright 18951a39d68df598db08dfced8b4707755864a0492Ying Wang * notice, this list of conditions and the following disclaimer in the 19951a39d68df598db08dfced8b4707755864a0492Ying Wang * documentation and/or other materials provided with the distribution. 20951a39d68df598db08dfced8b4707755864a0492Ying Wang * 3. Neither the name of the University nor the names of its contributors 21951a39d68df598db08dfced8b4707755864a0492Ying Wang * may be used to endorse or promote products derived from this software 22951a39d68df598db08dfced8b4707755864a0492Ying Wang * without specific prior written permission. 23951a39d68df598db08dfced8b4707755864a0492Ying Wang * 24951a39d68df598db08dfced8b4707755864a0492Ying Wang * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 25951a39d68df598db08dfced8b4707755864a0492Ying Wang * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 26951a39d68df598db08dfced8b4707755864a0492Ying Wang * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 27951a39d68df598db08dfced8b4707755864a0492Ying Wang * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 28951a39d68df598db08dfced8b4707755864a0492Ying Wang * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 29951a39d68df598db08dfced8b4707755864a0492Ying Wang * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 30951a39d68df598db08dfced8b4707755864a0492Ying Wang * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 31951a39d68df598db08dfced8b4707755864a0492Ying Wang * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 32951a39d68df598db08dfced8b4707755864a0492Ying Wang * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 33951a39d68df598db08dfced8b4707755864a0492Ying Wang * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 34951a39d68df598db08dfced8b4707755864a0492Ying Wang * SUCH DAMAGE. 35951a39d68df598db08dfced8b4707755864a0492Ying Wang * 36951a39d68df598db08dfced8b4707755864a0492Ying Wang * @(#)regex.h 8.1 (Berkeley) 6/2/93 37951a39d68df598db08dfced8b4707755864a0492Ying Wang */ 38951a39d68df598db08dfced8b4707755864a0492Ying Wang 39951a39d68df598db08dfced8b4707755864a0492Ying Wang#ifndef _REGEX_H_ 40951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _REGEX_H_ 41951a39d68df598db08dfced8b4707755864a0492Ying Wang 42951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <sys/cdefs.h> 43951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <sys/types.h> 44951a39d68df598db08dfced8b4707755864a0492Ying Wang 45951a39d68df598db08dfced8b4707755864a0492Ying Wang/* types */ 46951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef off_t regoff_t; 47951a39d68df598db08dfced8b4707755864a0492Ying Wang 48951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef struct { 49951a39d68df598db08dfced8b4707755864a0492Ying Wang int re_magic; 50951a39d68df598db08dfced8b4707755864a0492Ying Wang size_t re_nsub; /* number of parenthesized subexpressions */ 51951a39d68df598db08dfced8b4707755864a0492Ying Wang const char *re_endp; /* end pointer for REG_PEND */ 52951a39d68df598db08dfced8b4707755864a0492Ying Wang struct re_guts *re_g; /* none of your business :-) */ 53951a39d68df598db08dfced8b4707755864a0492Ying Wang} regex_t; 54951a39d68df598db08dfced8b4707755864a0492Ying Wang 55951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef struct { 56951a39d68df598db08dfced8b4707755864a0492Ying Wang regoff_t rm_so; /* start of match */ 57951a39d68df598db08dfced8b4707755864a0492Ying Wang regoff_t rm_eo; /* end of match */ 58951a39d68df598db08dfced8b4707755864a0492Ying Wang} regmatch_t; 59951a39d68df598db08dfced8b4707755864a0492Ying Wang 60951a39d68df598db08dfced8b4707755864a0492Ying Wang/* regcomp() flags */ 61951a39d68df598db08dfced8b4707755864a0492Ying Wang#define REG_BASIC 0000 62951a39d68df598db08dfced8b4707755864a0492Ying Wang#define REG_EXTENDED 0001 63951a39d68df598db08dfced8b4707755864a0492Ying Wang#define REG_ICASE 0002 64951a39d68df598db08dfced8b4707755864a0492Ying Wang#define REG_NOSUB 0004 65951a39d68df598db08dfced8b4707755864a0492Ying Wang#define REG_NEWLINE 0010 66951a39d68df598db08dfced8b4707755864a0492Ying Wang#define REG_NOSPEC 0020 67951a39d68df598db08dfced8b4707755864a0492Ying Wang#define REG_PEND 0040 68951a39d68df598db08dfced8b4707755864a0492Ying Wang#define REG_DUMP 0200 69951a39d68df598db08dfced8b4707755864a0492Ying Wang 70951a39d68df598db08dfced8b4707755864a0492Ying Wang/* regerror() flags */ 71951a39d68df598db08dfced8b4707755864a0492Ying Wang#define REG_NOMATCH 1 72951a39d68df598db08dfced8b4707755864a0492Ying Wang#define REG_BADPAT 2 73951a39d68df598db08dfced8b4707755864a0492Ying Wang#define REG_ECOLLATE 3 74951a39d68df598db08dfced8b4707755864a0492Ying Wang#define REG_ECTYPE 4 75951a39d68df598db08dfced8b4707755864a0492Ying Wang#define REG_EESCAPE 5 76951a39d68df598db08dfced8b4707755864a0492Ying Wang#define REG_ESUBREG 6 77951a39d68df598db08dfced8b4707755864a0492Ying Wang#define REG_EBRACK 7 78951a39d68df598db08dfced8b4707755864a0492Ying Wang#define REG_EPAREN 8 79951a39d68df598db08dfced8b4707755864a0492Ying Wang#define REG_EBRACE 9 80951a39d68df598db08dfced8b4707755864a0492Ying Wang#define REG_BADBR 10 81951a39d68df598db08dfced8b4707755864a0492Ying Wang#define REG_ERANGE 11 82951a39d68df598db08dfced8b4707755864a0492Ying Wang#define REG_ESPACE 12 83951a39d68df598db08dfced8b4707755864a0492Ying Wang#define REG_BADRPT 13 84951a39d68df598db08dfced8b4707755864a0492Ying Wang#define REG_EMPTY 14 85951a39d68df598db08dfced8b4707755864a0492Ying Wang#define REG_ASSERT 15 86951a39d68df598db08dfced8b4707755864a0492Ying Wang#define REG_INVARG 16 87951a39d68df598db08dfced8b4707755864a0492Ying Wang#define REG_ATOI 255 /* convert name to number (!) */ 88951a39d68df598db08dfced8b4707755864a0492Ying Wang#define REG_ITOA 0400 /* convert number to name (!) */ 89951a39d68df598db08dfced8b4707755864a0492Ying Wang 90951a39d68df598db08dfced8b4707755864a0492Ying Wang/* regexec() flags */ 91951a39d68df598db08dfced8b4707755864a0492Ying Wang#define REG_NOTBOL 00001 92951a39d68df598db08dfced8b4707755864a0492Ying Wang#define REG_NOTEOL 00002 93951a39d68df598db08dfced8b4707755864a0492Ying Wang#define REG_STARTEND 00004 94951a39d68df598db08dfced8b4707755864a0492Ying Wang#define REG_TRACE 00400 /* tracing of execution */ 95951a39d68df598db08dfced8b4707755864a0492Ying Wang#define REG_LARGE 01000 /* force large representation */ 96951a39d68df598db08dfced8b4707755864a0492Ying Wang#define REG_BACKR 02000 /* force use of backref code */ 97951a39d68df598db08dfced8b4707755864a0492Ying Wang 98951a39d68df598db08dfced8b4707755864a0492Ying Wang__BEGIN_DECLS 99951a39d68df598db08dfced8b4707755864a0492Ying Wangint regcomp(regex_t *, const char *, int); 100951a39d68df598db08dfced8b4707755864a0492Ying Wangsize_t regerror(int, const regex_t *, char *, size_t); 101951a39d68df598db08dfced8b4707755864a0492Ying Wangint regexec(const regex_t *, const char *, size_t, regmatch_t [], int); 102951a39d68df598db08dfced8b4707755864a0492Ying Wangvoid regfree(regex_t *); 103951a39d68df598db08dfced8b4707755864a0492Ying Wang__END_DECLS 104951a39d68df598db08dfced8b4707755864a0492Ying Wang 105951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif /* !_REGEX_H_ */ 106