1 /* 2 ** Copyright (c) 2016, Cyrille Lefevre <cyrille.lefevre-regs@laposte.net>. 3 ** All rights reserved. 4 ** 5 ** Redistribution and use in source and binary forms, with or without 6 ** modification, are permitted provided that the following conditions 7 ** are met: 8 ** 9 ** 1. Redistributions of source code must retain the above copyright 10 ** notice, this list of conditions and the following disclaimer. 11 ** 2. Redistributions in binary form must reproduce the above copyright 12 ** notice, this list of conditions and the following disclaimer in the 13 ** documentation and/or other materials provided with the distribution. 14 ** 15 ** THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16 ** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17 ** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 18 ** PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS 19 ** BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, 20 ** OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 21 ** OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 22 ** BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 23 ** WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 24 ** OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 25 ** EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 **/ 27 28 #ifndef _RPLREGEX_H_ 29 #define _RPLREGEX_H_ 30 31 #ifdef HAVE_REGEX 32 #include <regex.h> 33 #define REGEXP_T regexp_t 34 typedef struct { 35 regex_t preg; 36 int cflags; 37 const char *string; 38 regmatch_t *pmatch; 39 } regexp_t; 40 #else 41 #include "regexp.h" 42 #define REGEXP_T regexp 43 #ifndef REG_NOMATCH 44 #define REG_NOMATCH 1 45 #endif 46 #ifndef REG_ESUBREG 47 #define REG_ESUBREG 6 48 #endif 49 #ifndef REG_ESPACE 50 #define REG_ESPACE 12 51 #endif 52 #endif 53 54 void rpl_regfree(REGEXP_T **_prog); 55 int rpl_regcomp(REGEXP_T **_prog, const char *regex, int cflags); 56 int rpl_regexec(REGEXP_T * const *_prog, const char *string); 57 int rpl_regsub(REGEXP_T * const *_prog, const char *source, char *dest, size_t size); 58 char *rpl_regerror(int error, REGEXP_T * const *_prog); 59 60 #endif /* !_RPLREGEX_H_ */ 61