You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by Guenter Knauf <ef...@gmx.net> on 2004/02/27 04:22:51 UTC

Re: [PATCH] use ap_ prefixed PCRE functions - take 4

Hi Kurt,
> Just a tweak or two and its ready. The preg calloc only applies to the
> HAS_PCRE case and PREGCOMP isn't needed. Otherwise it looks good. I'll
> test and commit it tomorrow.
thanks again for reviewing and comments!

Guenter.

http://www.gknw.com/test/pcre_patch4
###############################################################################
--- ./jk/native2/common/jk_uriEnv.c.orig	2004-02-24 12:30:10.000000000 +0100
+++ ./jk/native2/common/jk_uriEnv.c	      2004-02-27 00:04:20.000000000 +0100
@@ -28,10 +28,14 @@
 #include "jk_uriMap.h"
 #include "jk_registry.h"
 
+#ifdef HAS_AP_PCRE
+#include "httpd.h"
+#else
 #ifdef HAS_PCRE
 #include "pcre.h"
 #include "pcreposix.h"
 #endif
+#endif
 
 /* return non-zero if pattern has any glob chars in it */
 
@@ -65,7 +69,7 @@
     int pcre = 0;
 
     if (*name == '$') {
-#ifdef HAS_PCRE
+#if defined(HAS_PCRE) || defined(HAS_AP_PCRE) 
         ++name;
         uriEnv->uri = uriEnv->pool->pstrdup(env, uriEnv->pool, name);
         uriEnv->match_type = MATCH_TYPE_REGEXP;
@@ -73,8 +77,13 @@
                     "uriEnv.parseName() parsing %s regexp\n",
                     name);
         {
+#ifdef HAS_AP_PCRE
+            regex_t *preg = ap_pregcomp((apr_pool_t *)uriEnv->pool->_private, uriEnv->uri, REG_EXTENDED);
+            if (preg == NULL) {
+#else
             regex_t *preg = (regex_t *)uriEnv->pool->calloc( env, uriEnv->pool, sizeof(regex_t));
             if (regcomp(preg, uriEnv->uri, REG_EXTENDED)) {
+#endif
                 env->l->jkLog(env, env->l, JK_LOG_DEBUG,
                               "uriEnv.parseName() error compiling regexp %s\n",
                               uri);
@@ -132,14 +141,19 @@
     if (pcre) {
         ++uri;
         uriEnv->match_type = MATCH_TYPE_REGEXP;
-#ifdef HAS_PCRE
+#if defined(HAS_PCRE) || defined(HAS_AP_PCRE) 
         uriEnv->uri = uriEnv->pool->pstrdup(env, uriEnv->pool, uri);
         env->l->jkLog(env, env->l, JK_LOG_DEBUG,
                     "uriEnv.parseName() parsing regexp %s\n",
                     uri);
         {
+#ifdef HAS_AP_PCRE
+            regex_t *preg = ap_pregcomp((apr_pool_t *)uriEnv->pool->_private, uriEnv->uri, REG_EXTENDED);
+            if (preg == NULL) {
+#else
             regex_t *preg = (regex_t *)uriEnv->pool->calloc( env, uriEnv->pool, sizeof(regex_t));
             if (regcomp(preg, uriEnv->uri, REG_EXTENDED)) {
+#endif
                 env->l->jkLog(env, env->l, JK_LOG_DEBUG,
                               "uriEnv.parseName() error compiling regexp %s\n",
                               uri);
###############################################################################
--- ./jk/native2/common/jk_uriMap.c.orig	2004-02-24 12:30:10.000000000 +0100
+++ ./jk/native2/common/jk_uriMap.c	      2004-02-26 19:03:32.000000000 +0100
@@ -34,9 +34,15 @@
 #include "jk_uriMap.h"
 #include "jk_registry.h"
 
+#ifdef HAS_AP_PCRE
+#include "httpd.h"
+#define REGEXEC ap_regexec
+#else
 #ifdef HAS_PCRE
 #include "pcre.h"
 #include "pcreposix.h"
+#define REGEXEC regexec
+#endif
 #endif
 
 static INLINE const char *jk2_findExtension(jk_env_t *env, const char *uri);
@@ -304,7 +310,7 @@
     return uriMap->vhosts->get(env, uriMap->vhosts, "*");
 }
 
-#ifdef HAS_PCRE
+#if defined(HAS_PCRE) || defined(HAS_AP_PCRE) 
 static jk_uriEnv_t *jk2_uriMap_regexpMap(jk_env_t *env, jk_uriMap_t *uriMap,
                                          jk_map_t *mapTable, const char *uri) 
 {
@@ -317,7 +323,7 @@
         if (uwr->regexp) {
             regex_t *r = (regex_t *)uwr->regexp;
             regmatch_t regm[10];
-            if (!regexec(r, uri, r->re_nsub + 1, regm, 0)) {
+            if (!REGEXEC(r, uri, r->re_nsub + 1, regm, 0)) {
                 return uwr;
             }
         }



---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org