[prev in list] [next in list] [prev in thread] [next in thread] 

List:       apache-modperl
Subject:    Re: what is the best way to do ...
From:       Torsten Foertsch <torsten.foertsch () gmx ! net>
Date:       2006-02-24 21:15:31
Message-ID: 200602242215.36252.torsten.foertsch () gmx ! net
[Download RAW message or body]

[Attachment #2 (multipart/mixed)]


On Friday 24 February 2006 21:06, Philippe M. Chiasson wrote:
> Yeah, I noticed, as it doesn't apply cleanly against svn HEAD. Could you
> checkout http://svn.apache.org/repos/asf/perl/modperl/trunk/ and generate
> your patch against it instead ? It'll make it much easier to
> apply/test/review, thanks!

Here you are.

All tests successful for Apache 2.2. For 2.0 make test hangs in=20
protocol/pseudo_http 1/13. I have killed the test. All other tests were ok.

Torsten

["modperl_add_config_2.2.patch" (text/x-diff)]

diff -Naur mod_perl/docs/api/Apache2/Access.pod \
                mod_perl.new/docs/api/Apache2/Access.pod
--- mod_perl/docs/api/Apache2/Access.pod	2006-02-24 21:26:14.761227618 +0100
+++ mod_perl.new/docs/api/Apache2/Access.pod	2006-02-24 21:29:11.088809666 +0100
@@ -20,6 +20,9 @@
   # Apache AllowOverride value
   $allow_override = $r->allow_overrides();
   
+  # which Options are allowed by AllowOverride (since Apache 2.2)
+  $allow_override_opts = $r->allow_override_opts();
+  
   # auth name ("foo bar")
   $auth_name = $r->auth_name();
   
@@ -199,6 +202,54 @@
 
 
 
+=head2 C<allow_override_opts>
+
+Retrieve the bitmask of allowed C<Options> set by C<AllowOverride Options=...>
+for this request
+
+  $override_opts = $r->allow_override_opts();
+
+Enabling single options was introduced in Apache 2.2. For Apache 2.0 this
+function returns
+C<L<Apache2::Const::OPT_UNSET|docs::2.0::api::Apache2::Const/C_Apache2__Const__OPT_UNSET_>> \
| +C<L<Apache2::Const::OPT_ALL|docs::2.0::api::Apache2::Const/C_Apache2__Const__OPT_ALL_>> \
| +C<L<Apache2::Const::OPT_INCNOEXEC|docs::2.0::api::Apache2::Const/C_Apache2__Const__OPT_INCNOEXEC_>> \
| +C<L<Apache2::Const::OPT_SYM_OWNER|docs::2.0::api::Apache2::Const/C_Apache2__Const__OPT_SYM_OWNER_>> \
| +C<L<Apache2::Const::OPT_MULTI|docs::2.0::api::Apache2::Const/C_Apache2__Const__OPT_MULTI_>>,
 +which corresponds to the default value (if not set) for Apache 2.2.
+
+=over 4
+
+=item obj: C<$r>
+( C<L<Apache2::RequestRec object|docs::2.0::api::Apache2::RequestRec>> )
+
+The current request
+
+=item ret: C<$override_opts> ( integer )
+
+the override options bitmask. Normally used with bitlogic operators
+against C<L<Apache2::Const :options
+constants|docs::2.0::api::Apache2::Const/C__options_>>.
+
+=item since: 2.0.3
+
+=back
+
+For example if the configuration for the current request was:
+
+  AllowOverride Options=Indexes,ExecCGI
+
+The following applies:
+
+  use Apache2::Const -compile => qw(:options);
+  $r->allow_override_opts & Apache2::Const::OPT_EXECCGI; # TRUE
+  $r->allow_override_opts & Apache2::Const::OPT_SYM_LINKS; # FALSE
+
+
+
+
+
+
 =head2 C<auth_name>
 
 Get/set the current Authorization realm (the per directory
diff -Naur mod_perl/docs/api/Apache2/CmdParms.pod \
                mod_perl.new/docs/api/Apache2/CmdParms.pod
--- mod_perl/docs/api/Apache2/CmdParms.pod	2006-02-24 21:26:15.475132804 +0100
+++ mod_perl.new/docs/api/Apache2/CmdParms.pod	2006-02-24 21:29:11.090809400 +0100
@@ -48,6 +48,9 @@
       # which allow-override bits are set
       $override = $parms->override;
   
+      # which Options are allowed by AllowOverride (since Apache 2.2)
+      $override = $parms->override_opts;
+  
       # the path this command is being invoked in
       $path = $parms->path;
   
@@ -313,6 +316,37 @@
 
 
 
+=head2 C<override_opts>
+
+Which options are allowed to be overridden by C<.htaccess> files. This is
+set by C<AllowOverride Options=...>.
+
+  $override_opts = $parms->override_opts;
+
+Enabling single options was introduced with Apache 2.2. For Apache 2.0 this
+function simply returns a bitmask with all options allowed.
+
+=over 4
+
+=item obj: C<$parms>
+( C<L<Apache2::CmdParms object|docs::2.0::api::Apache2::CmdParms>> )
+
+=item ret: C<$override_opts> ( bitmask )
+
+the bitmask, which can be tested against
+C<L<Apache2::Const :options
+constants|docs::2.0::api::Apache2::Const/C__override_>>.
+
+=item since: 2.0.3
+
+=back
+
+
+
+
+
+
+
 =head2 C<path>
 
 The current pathname/location/match of the block this command is in
diff -Naur mod_perl/docs/api/Apache2/RequestUtil.pod \
                mod_perl.new/docs/api/Apache2/RequestUtil.pod
--- mod_perl/docs/api/Apache2/RequestUtil.pod	2006-02-24 21:26:17.532859517 +0100
+++ mod_perl.new/docs/api/Apache2/RequestUtil.pod	2006-02-24 21:53:21.415684633 +0100
@@ -109,6 +109,7 @@
   $r->add_config($lines);
   $r->add_config($lines, $override);
   $r->add_config($lines, $override, $path);
+  $r->add_config($lines, $override, $path, $override_opts);
 
 Configuration directives are processed as if given in a C<E<lt>LocationE<gt>>
 block.
@@ -123,8 +124,8 @@
 An ARRAY reference containing configuration lines per element, without
 the new line terminators.
 
-=item opt arg2: C<$override> ( C<L<APR::Const status
-constant|docs::2.0::api::APR::Const>> )
+=item opt arg2: C<$override> ( C<L<Apache2::Const override
+constant|docs::2.0::api::Apache2::Const>> )
 
 Which allow-override bits are set
 
@@ -137,11 +138,59 @@
 This is the path of the C<E<lt>LocationE<gt>> block. Some directives need this,
 for example C<ProxyPassReverse>.
 
+If an empty string is passed a C<NULL> pointer is passed further at C-level.
+This is necessary to make something like this work:
+
+  $r->add_config( [
+	 	   '<Directory />',
+		   'AllowOverride Options AuthConfig',
+		   '</Directory>',
+                  ], ~0, '' );
+
+Note: C<AllowOverride> is valid only in directory context.
+
+B<Caution:> Some directives need a non-empty path otherwise they cause
+segfaults. Thus, use the empty path with caution.
+
 Default value is: C</>
 
+=item opt arg4: C<$override_opts> ( C<L<Apache2::Const options
+constant|docs::2.0::api::Apache2::Const>> )
+
+Apache limits the applicable directives in certain situations with
+C<AllowOverride>. With Apache 2.2 comes the possibility to enable or
+disable single options, for example
+
+  AllowOverride AuthConfig Options=ExecCGI,Indexes
+
+Internally, this directive is parsed into 2 bit fields that are represented
+by the C<$override> and C<$override_opts> parameters to C<add_config>.
+The above example is parsed into an C<$override> with 2 bits set, one for
+C<AuthConfig> the other for C<Options> and an C<$override_opts> with
+2 bits set for ExecCGI and Indexes.
+
+When applying other directives, for example C<AuthType> or C<Options> the
+appropriate bits in C<$override> must be set. For the C<Options> directive
+additionally C<$override_opts> bits must be set.
+
+The C<$override> and C<$override_opts> parameters to C<add_config> are
+valid while applying C<$lines>.
+
+C<$override_opts> is new in Apache 2.2. The mod_perl implementation for
+Apache 2.0 lets you pass the parameter but ignores it.
+
+Default for C<$override_opts> is:
+C<L<Apache2::Const::OPT_UNSET|docs::2.0::api::Apache2::Const/C_Apache2__Const__OPT_UNSET_>> \
| +C<L<Apache2::Const::OPT_ALL|docs::2.0::api::Apache2::Const/C_Apache2__Const__OPT_ALL_>> \
| +C<L<Apache2::Const::OPT_INCNOEXEC|docs::2.0::api::Apache2::Const/C_Apache2__Const__OPT_INCNOEXEC_>> \
| +C<L<Apache2::Const::OPT_SYM_OWNER|docs::2.0::api::Apache2::Const/C_Apache2__Const__OPT_SYM_OWNER_>> \
| +C<L<Apache2::Const::OPT_MULTI|docs::2.0::api::Apache2::Const/C_Apache2__Const__OPT_MULTI_>>
 +
+That means, all options are allowed.
+
 =item ret: no return value
 
-=item since: 2.0.00
+=item since: 2.0.00, C<$path> and C<$override_opts> since 2.0.3
 
 =back
 
@@ -150,10 +199,16 @@
 
 For example:
 
-  use Apache2::ServerUtil ();
-  $r->add_config(['require valid-user']);
+  use Apache2::RequestUtil ();
+  use Apache2::Access ();
 
+  $r->add_config(['require valid-user']);
 
+  # this regards the current AllowOverride setting
+  $r->add_config(['AuthName secret',
+                  'AuthType Basic',
+                  'Options ExecCGI'],
+                 $r->allow_override, $path, $r->allow_override_opts);
 
 
 
diff -Naur mod_perl/src/modules/perl/modperl_config.c \
                mod_perl.new/src/modules/perl/modperl_config.c
--- mod_perl/src/modules/perl/modperl_config.c	2006-02-24 21:25:03.176734818 +0100
+++ mod_perl.new/src/modules/perl/modperl_config.c	2006-02-24 21:50:09.671060297 \
+0100 @@ -498,6 +498,7 @@
                                   apr_pool_t *ptmp,
                                   int override,
                                   char *path,
+				  int override_options,
                                   ap_conf_vector_t *conf,
                                   SV *lines)
 {
@@ -513,6 +514,15 @@
     parms.override = override;
     parms.path = path;
     parms.pool = p;
+#if AP_SERVER_MAJORVERSION_NUMBER>2 || AP_SERVER_MINORVERSION_NUMBER>=2
+    parms.override_opts = override_options==-1
+                          ? OPT_UNSET |
+                            OPT_ALL |
+                            OPT_INCNOEXEC |
+                            OPT_SYM_OWNER |
+                            OPT_MULTI
+                          : override_options;
+#endif
 
     if (ptmp) {
         parms.temp_pool = ptmp;
@@ -559,6 +569,11 @@
                                  parms->temp_pool,
                                  parms->override, 
                                  parms->path,
+#if AP_SERVER_MAJORVERSION_NUMBER>2 || AP_SERVER_MINORVERSION_NUMBER>=2
+				 parms->override_opts,
+#else
+				 -1,
+#endif
                                  parms->context,
                                  lines);
 }
@@ -569,7 +584,7 @@
     int override = (RSRC_CONF | OR_ALL) & ~(OR_AUTHCFG | OR_LIMIT);
     apr_pool_t *p = s->process->pconf;
 
-    return modperl_config_insert(aTHX_ s, p, NULL, override, NULL,
+    return modperl_config_insert(aTHX_ s, p, NULL, override, NULL, -1,
                                  s->lookup_defaults, lines);
 }
 
@@ -577,20 +592,23 @@
                                           request_rec *r,
                                           SV *lines,
                                           int override,
-                                          char *path)
+					  char *path,
+					  int override_options)
 {
     const char *errmsg;
     ap_conf_vector_t *dconf = ap_create_per_dir_config(r->pool);
 
-    /* The path argument of "/" is only required to be non-NULL
-       and "/" is as good a default as anything else */
     if (!path) {
+        /* pass a non-NULL path if nothing else given and for compatibility */
         path = "/";
+    } else if (!*path) {
+        /* an empty string says a NULL pointer should be used here */
+        path = NULL;
     }
 
     errmsg = modperl_config_insert(aTHX_
                                    r->server, r->pool, r->pool,
-                                   override, path,
+                                   override, path, override_options,
                                    dconf, lines);
 
     if (errmsg) {
diff -Naur mod_perl/src/modules/perl/modperl_config.h \
                mod_perl.new/src/modules/perl/modperl_config.h
--- mod_perl/src/modules/perl/modperl_config.h	2006-02-24 21:25:03.469695910 +0100
+++ mod_perl.new/src/modules/perl/modperl_config.h	2006-02-24 21:39:52.461715910 \
+0100 @@ -131,6 +131,7 @@
                                   apr_pool_t *ptmp,
                                   int override,
                                   char *path,
+				  int override_options,
                                   ap_conf_vector_t *conf,
                                   SV *lines);
 
@@ -143,7 +144,8 @@
                                           request_rec *r,
                                           SV *lines,
                                           int override,
-                                          char *path);
+					  char *path,
+					  int override_options);
 
 int modperl_config_is_perl_option_enabled(pTHX_ request_rec *r,
                                           server_rec *s, const char *name);
diff -Naur mod_perl/t/api/add_config.t mod_perl.new/t/api/add_config.t
--- mod_perl/t/api/add_config.t	1970-01-01 01:00:00.000000000 +0100
+++ mod_perl.new/t/api/add_config.t	2006-02-24 21:29:11.105807409 +0100
@@ -0,0 +1,13 @@
+use strict;
+use warnings FATAL => 'all';
+
+use Apache::TestRequest qw(GET_BODY_ASSERT);
+use Apache::Test;
+use Apache::TestUtil;
+
+my $module = 'TestAPI::add_config';
+my $url    = Apache::TestRequest::module2url($module,
+					     {path => '/TestAPI__add_config/'});
+
+t_debug("connecting to $url");
+print GET_BODY_ASSERT $url;
diff -Naur mod_perl/t/htdocs/TestAPI__add_config/htaccess \
                mod_perl.new/t/htdocs/TestAPI__add_config/htaccess
--- mod_perl/t/htdocs/TestAPI__add_config/htaccess	1970-01-01 01:00:00.000000000 \
                +0100
+++ mod_perl.new/t/htdocs/TestAPI__add_config/htaccess	2006-02-24 21:29:11.106807276 \
+0100 @@ -0,0 +1 @@
+TestAddConfig Htaccess
diff -Naur mod_perl/t/response/TestAPI/add_config.pm \
                mod_perl.new/t/response/TestAPI/add_config.pm
--- mod_perl/t/response/TestAPI/add_config.pm	1970-01-01 01:00:00.000000000 +0100
+++ mod_perl.new/t/response/TestAPI/add_config.pm	2006-02-24 21:29:11.107807143 +0100
@@ -0,0 +1,136 @@
+package TestAPI::add_config;
+
+use strict;
+use warnings FATAL => 'all';
+
+use Apache2::Access ();
+use Apache2::CmdParms ();
+use Apache2::RequestUtil ();
+use Apache2::Directive ();
+use Apache2::ServerUtil ();
+use base qw(Apache2::Module);
+
+use Apache::Test;
+use Apache::TestUtil;
+
+use Apache2::Const -compile => qw(
+    OK DECLINED
+    :options
+);
+
+use constant KEY => "TestAddConfig";
+
+my @directives = (
+    {
+        name        => +KEY,
+        cmd_data    => 'cmd_data',
+        errmsg      => 'errmsg',
+    },
+);
+
+Apache2::Module::add(__PACKAGE__, \@directives);
+
+my @methods = qw(override_opts);
+
+sub TestAddConfig {
+    my ($self, $parms, $args) = @_;
+    my $srv_cfg = $self->get_config($parms->server);
+    $srv_cfg->{override_opts} = $parms->override_opts();
+}
+
+
+
+### map2storage handler ###
+sub map2storage {
+    my ($r) = @_;
+
+    (my $av=Apache2::ServerUtil::get_server_version)=~s!.+/!v!;
+    $av=eval $av;
+
+    my $o=($av ge v2.2.0 ? '=All,SymLinksIfOwnerMatch' : '');
+
+    eval {
+      $r->add_config(['AllowOverride All Options'.$o]);
+    };
+    # NOTE: pnotes simply increments a variable's reference counter.
+    # Hence, this strange do{} block is necessary to copy $@.
+    $r->pnotes(add_config1=>do{my $e="$@"});
+
+    eval {
+      $r->add_config(['Options ExecCGI'], -1, '/', 0);
+    };
+    $r->pnotes(add_config2=>do{my $e="$@"});
+
+    eval {
+      $r->add_config(['<Directory /'.$r->document_root.'/TestAPI__add_config>',
+		      'AllowOverride All Options'.$o,
+		      '</Directory>'], -1, '');
+    };
+    $r->pnotes(add_config4=>do{my $e="$@"});
+
+    return Apache2::Const::DECLINED;
+}
+
+
+
+### fixup handler ###
+sub fixup {
+    my ($r) = @_;
+
+    eval {
+      $r->add_config(['Options ExecCGI'], -1, '/',
+		     Apache2::Const::OPT_EXECCGI);
+    };
+    $r->pnotes(add_config3=>do{my $e="$@"});
+
+    return Apache2::Const::DECLINED;
+}
+
+
+
+### response handler ###
+sub handler : method {
+    my ($self, $r) = @_;
+    my $cf = $self->get_config($r->server);
+
+    plan $r, tests => 7;
+
+    (my $av=Apache2::ServerUtil::get_server_version)=~s!.+/!v!;
+    $av=eval $av;
+
+    ok t_cmp $r->pnotes('add_config1'), qr!.+\n!, 'add_config 1';
+    ok t_cmp $r->pnotes('add_config2'),
+             ($av ge v2.2.0 ? qr!.+\n! : ''),
+            'add_config 2';
+    ok t_cmp $r->pnotes('add_config3'), '', 'add_config 3';
+    ok t_cmp $r->pnotes('add_config4'), '', 'add_config 4';
+
+    my $expect=($av ge v2.2.0 ? 0 : Apache2::Const::OPT_UNSET |
+	                            Apache2::Const::OPT_INCNOEXEC |
+	                            Apache2::Const::OPT_MULTI) |
+	       Apache2::Const::OPT_ALL |
+	       Apache2::Const::OPT_SYM_OWNER;
+
+    ok t_cmp $cf->{override_opts}, $expect, 'Apache2::CmdParms::override_opts';
+    ok t_cmp $r->allow_override_opts, $expect, \
'Apache2::Access::allow_override_opts'; +    ok t_cmp $r->allow_options, \
Apache2::Const::OPT_EXECCGI, 'result of add_config 3'; +
+    return Apache2::Const::OK;
+}
+
+1;
+__END__
+
+# APACHE_TEST_CONFIG_ORDER 950
+
+<NoAutoConfig>
+    <VirtualHost TestAPI::add_config>
+        PerlModule TestAPI::add_config
+
+        AccessFileName htaccess
+        SetHandler modperl
+        PerlResponseHandler TestAPI::add_config
+        PerlMapToStorageHandler TestAPI::add_config::map2storage
+        PerlFixupHandler TestAPI::add_config::fixup
+    </VirtualHost>
+</NoAutoConfig>
diff -Naur mod_perl/xs/Apache2/Access/Apache2__Access.h \
                mod_perl.new/xs/Apache2/Access/Apache2__Access.h
--- mod_perl/xs/Apache2/Access/Apache2__Access.h	2006-02-24 21:25:08.740995821 +0100
+++ mod_perl.new/xs/Apache2/Access/Apache2__Access.h	2006-02-24 21:31:33.193937047 \
+0100 @@ -81,7 +81,7 @@
         modperl_config_insert_request(aTHX_ r,
                                       newRV_noinc((SV*)config),
                                       OR_AUTHCFG,
-                                      NULL);
+				      NULL, -1);
 
     if (errmsg) {
         Perl_warn(aTHX_ "Can't change %s to '%s'\n", directive, val);
@@ -141,3 +141,15 @@
         }
     });
 }
+
+static MP_INLINE
+int mpxs_Apache2__RequestRec_allow_override_opts(pTHX_ request_rec *r)
+{
+#if AP_SERVER_MAJORVERSION_NUMBER>2 || AP_SERVER_MINORVERSION_NUMBER>=2
+    return
+      ((core_dir_config *)ap_get_module_config(r->per_dir_config,
+					       &core_module))->override_opts;
+#else
+    return OPT_UNSET | OPT_ALL | OPT_INCNOEXEC | OPT_SYM_OWNER | OPT_MULTI;
+#endif
+}
diff -Naur mod_perl/xs/Apache2/CmdParms/Apache2__CmdParms.h \
                mod_perl.new/xs/Apache2/CmdParms/Apache2__CmdParms.h
--- mod_perl/xs/Apache2/CmdParms/Apache2__CmdParms.h	2006-02-24 21:25:08.883976832 \
                +0100
+++ mod_perl.new/xs/Apache2/CmdParms/Apache2__CmdParms.h	2006-02-24 \
21:29:11.111806612 +0100 @@ -35,3 +35,13 @@
         Perl_croak(aTHX_ "$parms->add_config() has failed: %s", errmsg);
     }
 }
+
+static MP_INLINE
+int mpxs_Apache2__CmdParms_override_opts(pTHX_ cmd_parms *parms)
+{
+#if AP_SERVER_MAJORVERSION_NUMBER>2 || AP_SERVER_MINORVERSION_NUMBER>=2
+    return (modperl_module_cmd_data_t *)parms->override_opts;
+#else
+    return OPT_UNSET | OPT_ALL | OPT_INCNOEXEC | OPT_SYM_OWNER | OPT_MULTI;
+#endif
+}
diff -Naur mod_perl/xs/Apache2/RequestUtil/Apache2__RequestUtil.h \
                mod_perl.new/xs/Apache2/RequestUtil/Apache2__RequestUtil.h
--- mod_perl/xs/Apache2/RequestUtil/Apache2__RequestUtil.h	2006-02-24 \
                21:25:08.364045884 +0100
+++ mod_perl.new/xs/Apache2/RequestUtil/Apache2__RequestUtil.h	2006-02-24 \
21:33:26.010954271 +0100 @@ -303,10 +303,12 @@
 
 static MP_INLINE
 void mpxs_Apache2__RequestRec_add_config(pTHX_ request_rec *r, SV *lines,
-                                         int override, char *path)
+					 int override, char *path,
+					 int override_options)
 {
     const char *errmsg = modperl_config_insert_request(aTHX_ r, lines,
-                                                       override, path);
+                                                       override, path,
+						       override_options);
     if (errmsg) {
         Perl_croak(aTHX_ "$r->add_config() has failed: %s", errmsg);
     }
diff -Naur mod_perl/xs/maps/apache2_structures.map \
                mod_perl.new/xs/maps/apache2_structures.map
--- mod_perl/xs/maps/apache2_structures.map	2006-02-24 21:25:05.046486494 +0100
+++ mod_perl.new/xs/maps/apache2_structures.map	2006-02-24 21:29:11.116805948 +0100
@@ -246,6 +246,7 @@
 <  cmd
 <  context
 !  err_directive
+-  override_opts
 </cmd_parms>
 
 !<ap_mgmt_item_t>
diff -Naur mod_perl/xs/maps/modperl_functions.map \
                mod_perl.new/xs/maps/modperl_functions.map
--- mod_perl/xs/maps/modperl_functions.map	2006-02-24 21:25:05.269456881 +0100
+++ mod_perl.new/xs/maps/modperl_functions.map	2006-02-24 21:35:47.489165319 +0100
@@ -30,7 +30,7 @@
  mpxs_Apache2__RequestRec_location
  mpxs_Apache2__RequestRec_as_string
  mpxs_Apache2__RequestRec_pnotes | | r, key=Nullsv, val=Nullsv
- mpxs_Apache2__RequestRec_add_config | | r, lines, override=OR_AUTHCFG, path=NULL
+ mpxs_Apache2__RequestRec_add_config | | r, lines, override=OR_AUTHCFG, path=NULL, \
override_options=-1  mpxs_Apache2__RequestRec_document_root | | r, new_root=Nullsv
  mpxs_Apache2__RequestRec_child_terminate
 
@@ -152,6 +152,10 @@
  ap_method_is_limited
  mpxs_Apache2__CmdParms_info
  mpxs_Apache2__CmdParms_add_config
+ mpxs_Apache2__CmdParms_override_opts
 
 MODULE=Apache2::MPM    PACKAGE=Apache2::MPM   BOOT=1
  mpxs_Apache2__MPM_query
+
+MODULE=Apache2::Access   PACKAGE=guess
+ mpxs_Apache2__RequestRec_allow_override_opts
diff -Naur mod_perl/xs/tables/current/ModPerl/FunctionTable.pm \
                mod_perl.new/xs/tables/current/ModPerl/FunctionTable.pm
--- mod_perl/xs/tables/current/ModPerl/FunctionTable.pm	2006-02-24 21:25:09.827851474 \
                +0100
+++ mod_perl.new/xs/tables/current/ModPerl/FunctionTable.pm	2006-02-24 \
21:38:13.303830261 +0100 @@ -1371,6 +1371,10 @@
         'name' => 'path'
       },
       {
+        'type' => 'int',
+        'name' => 'override_options'
+      },
+      {
         'type' => 'ap_conf_vector_t *',
         'name' => 'conf'
       },
@@ -1421,6 +1425,10 @@
       {
         'type' => 'char *',
         'name' => 'path'
+      },
+      {
+        'type' => 'int',
+        'name' => 'override_options'
       }
     ]
   },
@@ -6109,6 +6117,20 @@
     ]
   },
   {
+    'return_type' => 'int',
+    'name' => 'mpxs_Apache2__CmdParms_override_opts',
+    'args' => [
+      {
+        'type' => 'PerlInterpreter *',
+        'name' => 'my_perl'
+      },
+      {
+        'type' => 'cmd_parms *',
+        'name' => 'parms'
+      }
+    ]
+  },
+  {
     'return_type' => 'void',
     'name' => 'mpxs_Apache2__Connection_add_input_filter',
     'args' => [
@@ -6644,6 +6666,10 @@
       {
         'type' => 'char *',
         'name' => 'path'
+      },
+      {
+        'type' => 'int',
+        'name' => 'override_options'
       }
     ]
   },
@@ -6684,6 +6710,20 @@
     ]
   },
   {
+    'return_type' => 'int',
+    'name' => 'mpxs_Apache2__RequestRec_allow_override_opts',
+    'args' => [
+      {
+        'type' => 'PerlInterpreter *',
+        'name' => 'my_perl'
+      },
+     {
+        'type' => 'request_rec *',
+        'name' => 'r'
+      }
+    ]
+  },
+  {
     'return_type' => 'SV *',
     'name' => 'mpxs_Apache2__RequestRec_as_string',
     'args' => [


[Attachment #6 (application/pgp-signature)]

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic