Author: torsten
Date: Thu Jul 28 12:53:35 2011
New Revision: 1151827

URL: http://svn.apache.org/viewvc?rev=1151827&view=rev
Log:
make modperl compilable with httpd 2.3.14.

Added:
    perl/modperl/branches/httpd24/xs/Apache2/ServerRec/Apache2__ServerRec.h
Modified:
    perl/modperl/branches/httpd24/lib/ModPerl/Code.pm
    perl/modperl/branches/httpd24/src/modules/perl/mod_perl.c
    perl/modperl/branches/httpd24/src/modules/perl/modperl_apache_compat.h
    perl/modperl/branches/httpd24/src/modules/perl/modperl_cmd.h
    perl/modperl/branches/httpd24/src/modules/perl/modperl_config.c
    perl/modperl/branches/httpd24/src/modules/perl/modperl_module.c
    perl/modperl/branches/httpd24/src/modules/perl/modperl_pcw.c
    perl/modperl/branches/httpd24/t/response/TestAPI/add_config.pm
    perl/modperl/branches/httpd24/xs/Apache2/Access/Apache2__Access.h
    perl/modperl/branches/httpd24/xs/Apache2/Log/Apache2__Log.h
    perl/modperl/branches/httpd24/xs/Apache2/ServerUtil/Apache2__ServerUtil.h
    perl/modperl/branches/httpd24/xs/maps/apache2_functions.map
    perl/modperl/branches/httpd24/xs/tables/current/Apache2/ConstantsTable.pm

Modified: perl/modperl/branches/httpd24/lib/ModPerl/Code.pm
URL: 
http://svn.apache.org/viewvc/perl/modperl/branches/httpd24/lib/ModPerl/Code.pm?rev=1151827&r1=1151826&r2=1151827&view=diff
==============================================================================
--- perl/modperl/branches/httpd24/lib/ModPerl/Code.pm (original)
+++ perl/modperl/branches/httpd24/lib/ModPerl/Code.pm Thu Jul 28 12:53:35 2011
@@ -825,7 +825,8 @@ my %ifdef = map { $_, 1 }
     qw(AP_MPMQ_STARTING AP_MPMQ_RUNNING AP_MPMQ_STOPPING
        AP_MPMQ_MPM_STATE), # added in 2.0.49
     qw(APR_FPROT_USETID APR_FPROT_GSETID
-       APR_FPROT_WSTICKY APR_FOPEN_LARGEFILE); # added in 2.0.50?
+       APR_FPROT_WSTICKY APR_FOPEN_LARGEFILE), # added in 2.0.50?
+    qw(OPT_INCNOEXEC OPT_INC_WITH_EXEC);
 
 sub constants_ifdef {
     my $name = shift;

Modified: perl/modperl/branches/httpd24/src/modules/perl/mod_perl.c
URL: 
http://svn.apache.org/viewvc/perl/modperl/branches/httpd24/src/modules/perl/mod_perl.c?rev=1151827&r1=1151826&r2=1151827&view=diff
==============================================================================
--- perl/modperl/branches/httpd24/src/modules/perl/mod_perl.c (original)
+++ perl/modperl/branches/httpd24/src/modules/perl/mod_perl.c Thu Jul 28 
12:53:35 2011
@@ -653,6 +653,10 @@ int modperl_is_running(void)
 int modperl_hook_pre_config(apr_pool_t *p, apr_pool_t *plog,
                             apr_pool_t *ptemp)
 {
+#if AP_MODULE_MAGIC_AT_LEAST(20110329,0)
+    ap_reserve_module_slots_directive("PerlLoadModule");
+#endif
+
     /* we can't have PerlPreConfigHandler without first configuring mod_perl */
 
     /* perl 5.8.1+ */

Modified: perl/modperl/branches/httpd24/src/modules/perl/modperl_apache_compat.h
URL: 
http://svn.apache.org/viewvc/perl/modperl/branches/httpd24/src/modules/perl/modperl_apache_compat.h?rev=1151827&r1=1151826&r2=1151827&view=diff
==============================================================================
--- perl/modperl/branches/httpd24/src/modules/perl/modperl_apache_compat.h 
(original)
+++ perl/modperl/branches/httpd24/src/modules/perl/modperl_apache_compat.h Thu 
Jul 28 12:53:35 2011
@@ -66,12 +66,40 @@ AP_DECLARE(const char *) ap_get_server_v
 #define MP_HTTPD_OVERRIDE_HTACCESS 
(OR_LIMIT|OR_OPTIONS|OR_FILEINFO|OR_AUTHCFG|OR_INDEXES)
 
 #define MP_HTTPD_OVERRIDE_OPTS_UNSET (-1)
+
+#if AP_SERVER_MAJORVERSION_NUMBER>2 || AP_SERVER_MINORVERSION_NUMBER>=3
+/* 2.4 API */
+
+#define mp_add_loaded_module(modp, pool, name) \
+  ap_add_loaded_module((modp), (pool), (name))
+
+#define mp_loglevel(s) ((s)->log.level)
+#define mp_module_index_ perl_module.module_index,
+
+#define MP_HTTPD_OVERRIDE_OPTS_DEFAULT (OPT_UNSET | \
+                                        OPT_ALL | \
+                                        OPT_SYM_OWNER | \
+                                        OPT_MULTI)
+
+#else
+/* 2.2 API */
+
+#define mp_add_loaded_module(modp, pool, name) \
+  ap_add_loaded_module((modp), (pool))
+
+#define mp_loglevel(s) ((s)->loglevel)
+#define mp_module_index_
+
 #define MP_HTTPD_OVERRIDE_OPTS_DEFAULT (OPT_UNSET | \
                                         OPT_ALL | \
                                         OPT_INCNOEXEC | \
                                         OPT_SYM_OWNER | \
                                         OPT_MULTI)
 
+#define ap_unixd_config unixd_config
+
+#endif
+
 #ifndef PROXYREQ_RESPONSE
 #define PROXYREQ_RESPONSE (3)
 #endif

Modified: perl/modperl/branches/httpd24/src/modules/perl/modperl_cmd.h
URL: 
http://svn.apache.org/viewvc/perl/modperl/branches/httpd24/src/modules/perl/modperl_cmd.h?rev=1151827&r1=1151826&r2=1151827&view=diff
==============================================================================
--- perl/modperl/branches/httpd24/src/modules/perl/modperl_cmd.h (original)
+++ perl/modperl/branches/httpd24/src/modules/perl/modperl_cmd.h Thu Jul 28 
12:53:35 2011
@@ -115,6 +115,10 @@ MP_CMD_SRV_DECLARE(interp_scope);
    AP_INIT_ITERATE( name, modperl_cmd_##item, NULL, \
       RSRC_CONF, desc )
 
+#define MP_CMD_SRV_ITERATE_ON_READ(name, item, desc) \
+   AP_INIT_ITERATE( name, modperl_cmd_##item, NULL, \
+      RSRC_CONF|EXEC_ON_READ, desc )
+
 #define MP_CMD_SRV_ITERATE2(name, item, desc) \
    AP_INIT_ITERATE2( name, modperl_cmd_##item, NULL, \
       RSRC_CONF, desc )

Modified: perl/modperl/branches/httpd24/src/modules/perl/modperl_config.c
URL: 
http://svn.apache.org/viewvc/perl/modperl/branches/httpd24/src/modules/perl/modperl_config.c?rev=1151827&r1=1151826&r2=1151827&view=diff
==============================================================================
--- perl/modperl/branches/httpd24/src/modules/perl/modperl_config.c (original)
+++ perl/modperl/branches/httpd24/src/modules/perl/modperl_config.c Thu Jul 28 
12:53:35 2011
@@ -479,7 +479,13 @@ typedef struct {
     PerlInterpreter *perl;
 } svav_param_t;
 
-static void *svav_getstr(void *buf, size_t bufsiz, void *param)
+static
+#if AP_MODULE_MAGIC_AT_LEAST(20110329,0)
+apr_status_t
+#else
+void *
+#endif
+svav_getstr(void *buf, size_t bufsiz, void *param)
 {
     svav_param_t *svav_param = (svav_param_t *)param;
     dTHXa(svav_param->perl);
@@ -488,7 +494,11 @@ static void *svav_getstr(void *buf, size
     STRLEN n_a;
 
     if (svav_param->ix > AvFILL(av)) {
+#if AP_MODULE_MAGIC_AT_LEAST(20110329,0)
+        return APR_EOF;
+#else
         return NULL;
+#endif
     }
 
     sv = AvARRAY(av)[svav_param->ix++];
@@ -496,7 +506,11 @@ static void *svav_getstr(void *buf, size
 
     apr_cpystrn(buf, SvPVX(sv), bufsiz);
 
+#if AP_MODULE_MAGIC_AT_LEAST(20110329,0)
+    return APR_SUCCESS;
+#else
     return buf;
+#endif
 }
 
 const char *modperl_config_insert(pTHX_ server_rec *s,

Modified: perl/modperl/branches/httpd24/src/modules/perl/modperl_module.c
URL: 
http://svn.apache.org/viewvc/perl/modperl/branches/httpd24/src/modules/perl/modperl_module.c?rev=1151827&r1=1151826&r2=1151827&view=diff
==============================================================================
--- perl/modperl/branches/httpd24/src/modules/perl/modperl_module.c (original)
+++ perl/modperl/branches/httpd24/src/modules/perl/modperl_module.c Thu Jul 28 
12:53:35 2011
@@ -832,7 +832,10 @@ const char *modperl_module_add(apr_pool_
 
     modperl_module_insert(modp);
 
-    ap_add_loaded_module(modp, p);
+    if ((errmsg = mp_add_loaded_module(modp, p, modp->name))) {
+        perl_module.next = modp->next;
+        return errmsg;
+    }
 
     apr_pool_cleanup_register(p, modp, modperl_module_remove,
                               apr_pool_cleanup_null);

Modified: perl/modperl/branches/httpd24/src/modules/perl/modperl_pcw.c
URL: 
http://svn.apache.org/viewvc/perl/modperl/branches/httpd24/src/modules/perl/modperl_pcw.c?rev=1151827&r1=1151826&r2=1151827&view=diff
==============================================================================
--- perl/modperl/branches/httpd24/src/modules/perl/modperl_pcw.c (original)
+++ perl/modperl/branches/httpd24/src/modules/perl/modperl_pcw.c Thu Jul 28 
12:53:35 2011
@@ -27,7 +27,11 @@ void ap_pcw_walk_location_config(apr_poo
                                  ap_pcw_dir_cb_t dir_cb, void *data)
 {
     int i;
-    ap_conf_vector_t **urls = (ap_conf_vector_t **)sconf->sec_url->elts;
+    ap_conf_vector_t **urls;
+
+    if( !sconf->sec_url ) return;
+
+    urls = (ap_conf_vector_t **)sconf->sec_url->elts;
 
     for (i = 0; i < sconf->sec_url->nelts; i++) {
         core_dir_config *conf =
@@ -46,7 +50,11 @@ void ap_pcw_walk_directory_config(apr_po
                                   ap_pcw_dir_cb_t dir_cb, void *data)
 {
     int i;
-    ap_conf_vector_t **dirs = (ap_conf_vector_t **)sconf->sec_dir->elts;
+    ap_conf_vector_t **dirs;
+
+    if( !sconf->sec_dir ) return;
+
+    dirs = (ap_conf_vector_t **)sconf->sec_dir->elts;
 
     for (i = 0; i < sconf->sec_dir->nelts; i++) {
         core_dir_config *conf =
@@ -65,7 +73,11 @@ void ap_pcw_walk_files_config(apr_pool_t
                               ap_pcw_dir_cb_t dir_cb, void *data)
 {
     int i;
-    ap_conf_vector_t **dirs = (ap_conf_vector_t **)dconf->sec_file->elts;
+    ap_conf_vector_t **dirs;
+
+    if( !dconf->sec_file ) return;
+
+    dirs = (ap_conf_vector_t **)dconf->sec_file->elts;
 
     for (i = 0; i < dconf->sec_file->nelts; i++) {
         core_dir_config *conf =

Modified: perl/modperl/branches/httpd24/t/response/TestAPI/add_config.pm
URL: 
http://svn.apache.org/viewvc/perl/modperl/branches/httpd24/t/response/TestAPI/add_config.pm?rev=1151827&r1=1151826&r2=1151827&view=diff
==============================================================================
--- perl/modperl/branches/httpd24/t/response/TestAPI/add_config.pm (original)
+++ perl/modperl/branches/httpd24/t/response/TestAPI/add_config.pm Thu Jul 28 
12:53:35 2011
@@ -100,7 +100,8 @@ sub handler : method {
 
     my $expect =  Apache2::Const::OPT_ALL |
                   Apache2::Const::OPT_UNSET |
-                  Apache2::Const::OPT_INCNOEXEC |
+                  (defined &Apache2::Const::OPT_INCNOEXEC
+                   ? Apache2::Const::OPT_INCNOEXEC() : 0) |
                   Apache2::Const::OPT_MULTI |
                   Apache2::Const::OPT_SYM_OWNER;
 

Modified: perl/modperl/branches/httpd24/xs/Apache2/Access/Apache2__Access.h
URL: 
http://svn.apache.org/viewvc/perl/modperl/branches/httpd24/xs/Apache2/Access/Apache2__Access.h?rev=1151827&r1=1151826&r2=1151827&view=diff
==============================================================================
--- perl/modperl/branches/httpd24/xs/Apache2/Access/Apache2__Access.h (original)
+++ perl/modperl/branches/httpd24/xs/Apache2/Access/Apache2__Access.h Thu Jul 
28 12:53:35 2011
@@ -19,7 +19,12 @@ static MP_INLINE SV *mpxs_ap_requires(pT
     AV *av;
     HV *hv;
     register int x;
-    const apr_array_header_t *reqs_arr = ap_requires(r);
+    const apr_array_header_t *reqs_arr = 
+#if AP_SERVER_MAJORVERSION_NUMBER>2 || AP_SERVER_MINORVERSION_NUMBER>=3
+        0;
+#else
+        ap_requires(r);
+#endif
     require_line *reqs;
 
     if (!reqs_arr) {

Modified: perl/modperl/branches/httpd24/xs/Apache2/Log/Apache2__Log.h
URL: 
http://svn.apache.org/viewvc/perl/modperl/branches/httpd24/xs/Apache2/Log/Apache2__Log.h?rev=1151827&r1=1151826&r2=1151827&view=diff
==============================================================================
--- perl/modperl/branches/httpd24/xs/Apache2/Log/Apache2__Log.h (original)
+++ perl/modperl/branches/httpd24/xs/Apache2/Log/Apache2__Log.h Thu Jul 28 
12:53:35 2011
@@ -48,13 +48,13 @@ static void mpxs_ap_log_error(pTHX_ int 
         s = modperl_global_get_server_rec();
     }
 
-    if ((lmask == APLOG_DEBUG) && (s->loglevel >= APLOG_DEBUG)) {
+    if ((lmask >= APLOG_DEBUG) && (mp_loglevel(s) >= APLOG_DEBUG)) {
         COP *cop = PL_curcop;
         file = CopFILE(cop); /* (caller)[1] */
         line = CopLINE(cop); /* (caller)[2] */
     }
 
-    if ((s->loglevel >= lmask) &&
+    if ((mp_loglevel(s) >= lmask) &&
         SvROK(msg) && (SvTYPE(SvRV(msg)) == SVt_PVCV)) {
         dSP;
         ENTER;SAVETMPS;
@@ -72,10 +72,12 @@ static void mpxs_ap_log_error(pTHX_ int 
     }
 
     if (r) {
-        ap_log_rerror(file, line, level, 0, r, "%s", str);
+        ap_log_rerror(file, line, mp_module_index_ level, 0, r,
+                     "%s", str);
     }
     else {
-        ap_log_error(file, line, level, 0, s, "%s", str);
+        ap_log_error(file, line, mp_module_index_ level, 0, s,
+                    "%s", str);
     }
 
     if (svstr) {
@@ -258,10 +260,12 @@ MP_STATIC XS(MPXS_Apache2__Log_log_xerro
     msgstr = SvPV(msgsv, n_a);
 
     if (r) {
-        ap_log_rerror(file, line, level, status, r, "%s", msgstr);
+        ap_log_rerror(file, line, mp_module_index_ level, status, r,
+                     "%s", msgstr);
     }
     else {
-        ap_log_error(file, line, level, status, s, "%s", msgstr);
+        ap_log_error(file, line, mp_module_index_ level, status, s,
+                    "%s", msgstr);
     }
 
     SvREFCNT_dec(msgsv);

Added: perl/modperl/branches/httpd24/xs/Apache2/ServerRec/Apache2__ServerRec.h
URL: 
http://svn.apache.org/viewvc/perl/modperl/branches/httpd24/xs/Apache2/ServerRec/Apache2__ServerRec.h?rev=1151827&view=auto
==============================================================================
--- perl/modperl/branches/httpd24/xs/Apache2/ServerRec/Apache2__ServerRec.h 
(added)
+++ perl/modperl/branches/httpd24/xs/Apache2/ServerRec/Apache2__ServerRec.h Thu 
Jul 28 12:53:35 2011
@@ -0,0 +1,19 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#if AP_SERVER_MAJORVERSION_NUMBER>2 || AP_SERVER_MINORVERSION_NUMBER>=3
+#define loglevel log.level
+#endif

Modified: 
perl/modperl/branches/httpd24/xs/Apache2/ServerUtil/Apache2__ServerUtil.h
URL: 
http://svn.apache.org/viewvc/perl/modperl/branches/httpd24/xs/Apache2/ServerUtil/Apache2__ServerUtil.h?rev=1151827&r1=1151826&r2=1151827&view=diff
==============================================================================
--- perl/modperl/branches/httpd24/xs/Apache2/ServerUtil/Apache2__ServerUtil.h 
(original)
+++ perl/modperl/branches/httpd24/xs/Apache2/ServerUtil/Apache2__ServerUtil.h 
Thu Jul 28 12:53:35 2011
@@ -157,8 +157,8 @@ SV *mpxs_Apache2__ServerRec_get_handlers
 #define mpxs_Apache2__ServerUtil_server(classname) 
modperl_global_get_server_rec()
 
 #if !defined(OS2) && !defined(WIN32) && !defined(BEOS)  && !defined(NETWARE)
-#define mpxs_Apache2__ServerUtil_user_id(classname)  unixd_config.user_id
-#define mpxs_Apache2__ServerUtil_group_id(classname) unixd_config.group_id
+#define mpxs_Apache2__ServerUtil_user_id(classname)  ap_unixd_config.user_id
+#define mpxs_Apache2__ServerUtil_group_id(classname) ap_unixd_config.group_id
 #else
 #define mpxs_Apache2__ServerUtil_user_id(classname)  0
 #define mpxs_Apache2__ServerUtil_group_id(classname) 0

Modified: perl/modperl/branches/httpd24/xs/maps/apache2_functions.map
URL: 
http://svn.apache.org/viewvc/perl/modperl/branches/httpd24/xs/maps/apache2_functions.map?rev=1151827&r1=1151826&r2=1151827&view=diff
==============================================================================
--- perl/modperl/branches/httpd24/xs/maps/apache2_functions.map (original)
+++ perl/modperl/branches/httpd24/xs/maps/apache2_functions.map Thu Jul 28 
12:53:35 2011
@@ -41,7 +41,14 @@ MODULE=Apache2::RequestUtil
 MODULE=Apache2::RequestUtil   PACKAGE=guess
  ap_psignature | | r, prefix
 >ap_finalize_request_protocol
+#_if_ do {                                                                  \
+          Apache2::Build->build_config                                      \
+             ->httpd_version =~ /^(\d+)\.(\d+)\.(\d+)/                     \
+          ? ($1*1000+$2)*1000+$3                                            \
+          : die "Cannot get httpd version";                                 \
+      } < 2003000
  ap_default_type
+#_end_
  ap_get_server_name
  ap_get_server_port
 !ap_content_type_tolower

Modified: 
perl/modperl/branches/httpd24/xs/tables/current/Apache2/ConstantsTable.pm
URL: 
http://svn.apache.org/viewvc/perl/modperl/branches/httpd24/xs/tables/current/Apache2/ConstantsTable.pm?rev=1151827&r1=1151826&r2=1151827&view=diff
==============================================================================
--- perl/modperl/branches/httpd24/xs/tables/current/Apache2/ConstantsTable.pm 
(original)
+++ perl/modperl/branches/httpd24/xs/tables/current/Apache2/ConstantsTable.pm 
Thu Jul 28 12:53:35 2011
@@ -53,6 +53,7 @@ $Apache2::ConstantsTable = {
       'OPT_EXECCGI',
       'OPT_UNSET',
       'OPT_INCNOEXEC',
+      'OPT_INC_WITH_EXEC',
       'OPT_SYM_OWNER',
       'OPT_MULTI',
       'OPT_ALL'


Reply via email to