--- /dev/null
+/*************************************************\r
+* Perl-Compatible Regular Expressions *\r
+*************************************************/\r
+\r
+#ifndef _PCREPOSIX_H\r
+#define _PCREPOSIX_H\r
+\r
+/* This is the header for the POSIX wrapper interface to the PCRE Perl-\r
+Compatible Regular Expression library. It defines the things POSIX says should\r
+be there. I hope.\r
+\r
+ Copyright (c) 1997-2004 University of Cambridge\r
+\r
+-----------------------------------------------------------------------------\r
+Redistribution and use in source and binary forms, with or without\r
+modification, are permitted provided that the following conditions are met:\r
+\r
+ * Redistributions of source code must retain the above copyright notice,\r
+ this list of conditions and the following disclaimer.\r
+\r
+ * Redistributions in binary form must reproduce the above copyright\r
+ notice, this list of conditions and the following disclaimer in the\r
+ documentation and/or other materials provided with the distribution.\r
+\r
+ * Neither the name of the University of Cambridge nor the names of its\r
+ contributors may be used to endorse or promote products derived from\r
+ this software without specific prior written permission.\r
+\r
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\r
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\r
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+POSSIBILITY OF SUCH DAMAGE.\r
+-----------------------------------------------------------------------------\r
+*/\r
+\r
+/* Have to include stdlib.h in order to ensure that size_t is defined. */\r
+\r
+#include <stdlib.h>\r
+\r
+/* Allow for C++ users */\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+/* Options defined by POSIX. */\r
+\r
+#define REG_ICASE 0x01\r
+#define REG_NEWLINE 0x02\r
+#define REG_NOTBOL 0x04\r
+#define REG_NOTEOL 0x08\r
+\r
+/* These are not used by PCRE, but by defining them we make it easier\r
+to slot PCRE into existing programs that make POSIX calls. */\r
+\r
+#define REG_EXTENDED 0\r
+#define REG_NOSUB 0\r
+\r
+/* Error values. Not all these are relevant or used by the wrapper. */\r
+\r
+enum {\r
+ REG_ASSERT = 1, /* internal error ? */\r
+ REG_BADBR, /* invalid repeat counts in {} */\r
+ REG_BADPAT, /* pattern error */\r
+ REG_BADRPT, /* ? * + invalid */\r
+ REG_EBRACE, /* unbalanced {} */\r
+ REG_EBRACK, /* unbalanced [] */\r
+ REG_ECOLLATE, /* collation error - not relevant */\r
+ REG_ECTYPE, /* bad class */\r
+ REG_EESCAPE, /* bad escape sequence */\r
+ REG_EMPTY, /* empty expression */\r
+ REG_EPAREN, /* unbalanced () */\r
+ REG_ERANGE, /* bad range inside [] */\r
+ REG_ESIZE, /* expression too big */\r
+ REG_ESPACE, /* failed to get memory */\r
+ REG_ESUBREG, /* bad back reference */\r
+ REG_INVARG, /* bad argument */\r
+ REG_NOMATCH /* match failed */\r
+};\r
+\r
+\r
+/* The structure representing a compiled regular expression. */\r
+\r
+typedef struct {\r
+ void *re_pcre;\r
+ size_t re_nsub;\r
+ size_t re_erroffset;\r
+} regex_t;\r
+\r
+/* The structure in which a captured offset is returned. */\r
+\r
+typedef int regoff_t;\r
+\r
+typedef struct {\r
+ regoff_t rm_so;\r
+ regoff_t rm_eo;\r
+} regmatch_t;\r
+\r
+/* The functions */\r
+\r
+extern int regcomp(regex_t *, const char *, int);\r
+extern int regexec(const regex_t *, const char *, size_t, regmatch_t *, int);\r
+extern size_t regerror(int, const regex_t *, char *, size_t);\r
+extern void regfree(regex_t *);\r
+\r
+#ifdef __cplusplus\r
+} /* extern "C" */\r
+#endif\r
+\r
+#endif /* End of pcreposix.h */\r