]> granicus.if.org Git - apache/commitdiff
Replace hsregex with PCRE. The PCRE library is always used in 2.0,
authorRyan Bloom <rbb@apache.org>
Fri, 5 May 2000 23:17:54 +0000 (23:17 +0000)
committerRyan Bloom <rbb@apache.org>
Fri, 5 May 2000 23:17:54 +0000 (23:17 +0000)
regardless of what system we are on.  Currently, we are using the POSIX
wrappers that PCRE provides.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@85153 13f79535-47bb-0310-9956-ffa450edef68

Makefile.in
STATUS
configure.in
include/httpd.h
include/pcreposix.h [new file with mode: 0644]
server/util.c
srclib/Makefile.in

index d2cad21aca0fcfae6d520554f32c5db08eb88282..d828e81c6eb2c61098df61785c00d893d47960a8 100644 (file)
@@ -1,5 +1,5 @@
 
-SUBDIRS = ap lib main modules os support $(REGEX_DIR)
+SUBDIRS = ap lib main modules os support
 
 PROGRAM_NAME         = $(progname)
 PROGRAM_SOURCES      = modules.c buildmark.c
@@ -11,7 +11,8 @@ PROGRAM_DEPENDENCIES = \
   os/$(OS_DIR)/libos.la \
   ap/libap.la \
   lib/apr/$(LIBPRE)apr.a \
-  $(REGEX_LIB)
+  lib/pcre/libpcre.la \
+  lib/pcre/libpcreposix.la
 
 PROGRAMS        = $(PROGRAM_NAME)
 targets         = $(PROGRAMS)
diff --git a/STATUS b/STATUS
index db64dc5cebc8c77a32eca71eb1dfdb1f5532775a..e5c11f3f7bd6d01cb07d0b246ade5941f9073bbb 100644 (file)
--- a/STATUS
+++ b/STATUS
@@ -1,5 +1,5 @@
 Apache 2.0 STATUS:
-Last modified at [$Date: 2000/05/05 20:19:25 $]
+Last modified at [$Date: 2000/05/05 23:17:51 $]
 
 Release:
 
@@ -64,11 +64,6 @@ RELEASE SHOWSTOPPERS:
         Status: The best known candidate would be something from
        BIND v9.
 
-    * Switch from HSRegex to PCRE. New code should be src/lib/pcre/
-      (ftp://cus.cam.ac.uk/pub/software/programs/pcre/)
-      Status: Greg +1
-
-
 RELEASE NON-SHOWSTOPPERS BUT WOULD BE REAL NICE TO WRAP THESE UP:
     * the top-level configure.in appears to use $USE_MAINTAINER_MODE = yes
        to set -Wall/etc. flags, and the APR configure.in appears to use
index 27c7255fed8a3a5921a088360f1a36a8a7a16174..28b99512acf70eabc5a5332540323228193b1450 100644 (file)
@@ -30,7 +30,7 @@ if test "$abs_builddir" != "$abs_srcdir"; then
 fi
 
 dnl ## Run configure for packages Apache uses
-AC_CONFIG_SUBDIRS(lib/apr)
+AC_CONFIG_SUBDIRS(lib/pcre lib/apr)
 
 dnl
 dnl ## Preload our OS configuration
@@ -164,8 +164,6 @@ APACHE_SUBST(EXTRA_CFLAGS)
 APACHE_SUBST(EXTRA_LDFLAGS)
 APACHE_SUBST(EXTRA_LIBS)
 APACHE_SUBST(INCLUDES)
-APACHE_SUBST(REGEX_DIR)
-APACHE_SUBST(REGEX_LIB)
 APACHE_SUBST(MPM_LIB)
 APACHE_SUBST(OS)
 APACHE_SUBST(OS_DIR)
index b1a39ee271b68216121f9ddacbe9b59bf93ce57c..b1f4b7289faae33b2972a972dfe75794b158dc30 100644 (file)
@@ -967,17 +967,12 @@ int strcasecmp(const char *a, const char *b);
 int strncasecmp(const char *a, const char *b, size_t n);
 #endif
 
-/* Regexes */
-#if defined(AP_USE_HSREGEX) || defined(WIN32)
-#include "hsregex.h"
-#else
-#include <regex.h>
-#endif
+#include "pcreposix.h"
 
 API_EXPORT(regex_t *) ap_pregcomp(ap_pool_t *p, const char *pattern,
                                   int cflags);
 API_EXPORT(void) ap_pregfree(ap_pool_t *p, regex_t *reg);
-API_EXPORT(int)    ap_regexec(const regex_t *preg, const char *string,
+API_EXPORT(int)    ap_regexec(regex_t *preg, const char *string,
                               size_t nmatch, regmatch_t pmatch[], int eflags);
 API_EXPORT(size_t) ap_regerror(int errcode, const regex_t *preg, 
                                char *errbuf, size_t errbuf_size);
diff --git a/include/pcreposix.h b/include/pcreposix.h
new file mode 100644 (file)
index 0000000..47838a8
--- /dev/null
@@ -0,0 +1,89 @@
+/*************************************************
+*       Perl-Compatible Regular Expressions      *
+*************************************************/
+
+/* Copyright (c) 1997-2000 University of Cambridge */
+/* Do not edit this file, this is provided by PCRE */
+
+#ifndef _PCREPOSIX_H
+#define _PCREPOSIX_H
+
+/* This is the header for the POSIX wrapper interface to the PCRE Perl-
+Compatible Regular Expression library. It defines the things POSIX says should
+be there. I hope. */
+
+/* Have to include stdlib.h in order to ensure that size_t is defined. */
+
+#include <stdlib.h>
+
+/* Allow for C++ users */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Options defined by POSIX. */
+
+#define REG_ICASE     0x01
+#define REG_NEWLINE   0x02
+#define REG_NOTBOL    0x04
+#define REG_NOTEOL    0x08
+
+/* These are not used by PCRE, but by defining them we make it easier
+to slot PCRE into existing programs that make POSIX calls. */
+
+#define REG_EXTENDED  0
+#define REG_NOSUB     0
+
+/* Error values. Not all these are relevant or used by the wrapper. */
+
+enum {
+  REG_ASSERT = 1,  /* internal error ? */
+  REG_BADBR,       /* invalid repeat counts in {} */
+  REG_BADPAT,      /* pattern error */
+  REG_BADRPT,      /* ? * + invalid */
+  REG_EBRACE,      /* unbalanced {} */
+  REG_EBRACK,      /* unbalanced [] */
+  REG_ECOLLATE,    /* collation error - not relevant */
+  REG_ECTYPE,      /* bad class */
+  REG_EESCAPE,     /* bad escape sequence */
+  REG_EMPTY,       /* empty expression */
+  REG_EPAREN,      /* unbalanced () */
+  REG_ERANGE,      /* bad range inside [] */
+  REG_ESIZE,       /* expression too big */
+  REG_ESPACE,      /* failed to get memory */
+  REG_ESUBREG,     /* bad back reference */
+  REG_INVARG,      /* bad argument */
+  REG_NOMATCH      /* match failed */
+};
+
+
+/* The structure representing a compiled regular expression. */
+
+typedef struct {
+  void *re_pcre;
+  size_t re_nsub;
+  size_t re_erroffset;
+} regex_t;
+
+/* The structure in which a captured offset is returned. */
+
+typedef int regoff_t;
+
+typedef struct {
+  regoff_t rm_so;
+  regoff_t rm_eo;
+} regmatch_t;
+
+/* The functions */
+
+extern int regcomp(regex_t *, const char *, int);
+extern int regexec(regex_t *, const char *, size_t, regmatch_t *, int);
+extern size_t regerror(int, const regex_t *, char *, size_t);
+extern void regfree(regex_t *);
+
+#ifdef __cplusplus
+}   /* extern "C" */
+#endif
+
+#endif /* End of pcreposix.h */
index 32467664ff32a3793a628c06f19ac0bb48758137..5f6db30393778ac9178c25cefcc9a16bd21ac41b 100644 (file)
@@ -318,7 +318,7 @@ API_EXPORT(char *) ap_strcasestr(const char *s1, const char *s2)
  * This is especially important for the DSO situations of modules.
  * DO NOT MAKE A MACRO OUT OF THIS FUNCTION!
  */
-API_EXPORT(int) ap_regexec(const regex_t *preg, const char *string,
+API_EXPORT(int) ap_regexec(regex_t *preg, const char *string,
                            size_t nmatch, regmatch_t pmatch[], int eflags)
 {
     return regexec(preg, string, nmatch, pmatch, eflags);
index 01ea0b60de5eb54ec87a57ebffb3ebf3b8ba57d9..4585c596c889c9d59e4a2a23fc4d6d39d34ba943 100644 (file)
@@ -1,4 +1,4 @@
 
-SUBDIRS = apr
+SUBDIRS = apr pcre
 
 include $(top_srcdir)/build/rules.mk