Commit 87096baa authored by Ryan Bloom's avatar Ryan Bloom
Browse files

Replace hsregex with PCRE. The PCRE library is always used in 2.0,

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
parent f0b4b678
Loading
Loading
Loading
Loading
+3 −2
Original line number Original line Diff line number Diff line


SUBDIRS = ap lib main modules os support $(REGEX_DIR)
SUBDIRS = ap lib main modules os support


PROGRAM_NAME         = $(progname)
PROGRAM_NAME         = $(progname)
PROGRAM_SOURCES      = modules.c buildmark.c
PROGRAM_SOURCES      = modules.c buildmark.c
@@ -11,7 +11,8 @@ PROGRAM_DEPENDENCIES = \
  os/$(OS_DIR)/libos.la \
  os/$(OS_DIR)/libos.la \
  ap/libap.la \
  ap/libap.la \
  lib/apr/$(LIBPRE)apr.a \
  lib/apr/$(LIBPRE)apr.a \
  $(REGEX_LIB)
  lib/pcre/libpcre.la \
  lib/pcre/libpcreposix.la


PROGRAMS        = $(PROGRAM_NAME)
PROGRAMS        = $(PROGRAM_NAME)
targets         = $(PROGRAMS)
targets         = $(PROGRAMS)
+1 −6
Original line number Original line Diff line number Diff line
Apache 2.0 STATUS:
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:
Release:


@@ -64,11 +64,6 @@ RELEASE SHOWSTOPPERS:
        Status: The best known candidate would be something from
        Status: The best known candidate would be something from
	BIND v9.
	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:
RELEASE NON-SHOWSTOPPERS BUT WOULD BE REAL NICE TO WRAP THESE UP:
    * the top-level configure.in appears to use $USE_MAINTAINER_MODE = yes
    * 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
	to set -Wall/etc. flags, and the APR configure.in appears to use
+1 −3
Original line number Original line Diff line number Diff line
@@ -30,7 +30,7 @@ if test "$abs_builddir" != "$abs_srcdir"; then
fi
fi


dnl ## Run configure for packages Apache uses
dnl ## Run configure for packages Apache uses
AC_CONFIG_SUBDIRS(lib/apr)
AC_CONFIG_SUBDIRS(lib/pcre lib/apr)


dnl
dnl
dnl ## Preload our OS configuration
dnl ## Preload our OS configuration
@@ -164,8 +164,6 @@ APACHE_SUBST(EXTRA_CFLAGS)
APACHE_SUBST(EXTRA_LDFLAGS)
APACHE_SUBST(EXTRA_LDFLAGS)
APACHE_SUBST(EXTRA_LIBS)
APACHE_SUBST(EXTRA_LIBS)
APACHE_SUBST(INCLUDES)
APACHE_SUBST(INCLUDES)
APACHE_SUBST(REGEX_DIR)
APACHE_SUBST(REGEX_LIB)
APACHE_SUBST(MPM_LIB)
APACHE_SUBST(MPM_LIB)
APACHE_SUBST(OS)
APACHE_SUBST(OS)
APACHE_SUBST(OS_DIR)
APACHE_SUBST(OS_DIR)
+2 −7
Original line number Original line Diff line number Diff line
@@ -967,17 +967,12 @@ int strcasecmp(const char *a, const char *b);
int strncasecmp(const char *a, const char *b, size_t n);
int strncasecmp(const char *a, const char *b, size_t n);
#endif
#endif


/* Regexes */
#include "pcreposix.h"
#if defined(AP_USE_HSREGEX) || defined(WIN32)
#include "hsregex.h"
#else
#include <regex.h>
#endif


API_EXPORT(regex_t *) ap_pregcomp(ap_pool_t *p, const char *pattern,
API_EXPORT(regex_t *) ap_pregcomp(ap_pool_t *p, const char *pattern,
				   int cflags);
				   int cflags);
API_EXPORT(void) ap_pregfree(ap_pool_t *p, regex_t *reg);
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);
                              size_t nmatch, regmatch_t pmatch[], int eflags);
API_EXPORT(size_t) ap_regerror(int errcode, const regex_t *preg, 
API_EXPORT(size_t) ap_regerror(int errcode, const regex_t *preg, 
                               char *errbuf, size_t errbuf_size);
                               char *errbuf, size_t errbuf_size);

include/pcreposix.h

0 → 100644
+89 −0
Original line number Original line Diff line number Diff line
/*************************************************
*       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 */
Loading