Merge the only thing on trunk that isn't already in httpd24threading into httpd24threading ahead of merging everything back to trunk. This is purely for the sake of my sanity...
git-svn-id: https://svn.apache.org/repos/asf/perl/modperl/branches/httpd24threading@1602081 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/Changes b/Changes
index 597d9d0..5348828 100644
--- a/Changes
+++ b/Changes
@@ -12,6 +12,29 @@
=item 2.0.9-dev
+Make sure modperl_interp_select uses r->server rather than the passed s
+parameter to find the interpreter pool to pull an interpreter from. This
+fixes an issue with vhosts with a separate interpreter pool and runtime
+dir-config merges that used to pull the interpreter from the wrong pool.
+[Torsten Foertsch]
+
+PerlInterpScope is now more advisory. Using $(c|r)->pnotes will bind
+the current interpreter to that object for it's lifetime.
+$(c|r)->pnotes_kill() can be used to prematurely drop pnotes and
+remove this binding. [Torsten Foertsch]
+
+Now correctly invokes PerlCleanupHandlers, even if they are the only
+handler type configured for that request [Torsten Foertsch]
+
+For threaded MPMs, change interpreter managment to a new, reference-counted
+allocation model. [Torsten Foertsch]
+
+Expose modperl_interp_pool_t via ModPerl::InterpPool, modperl_tipool_t
+via ModPerl::TiPool and modperl_tipool_config_t via ModPerl::TiPoolConfig
+[Torsten Foertsch]
+
+Expose modperl_interp_t via ModPerl::Interpreter [Torsten Foertsch]
+
Fix t/compat/apache_file.t on Windows. Apache::File->tmpfile() wants TMPDIR
or TEMP from the environment, or else defaults to /tmp. The latter is no
good on Windows, so make sure the environment variables are passed through.
diff --git a/Makefile.PL b/Makefile.PL
index 132d194..7eade0b 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -8,6 +8,7 @@
use constant MIN_HTTPD_VERSION_DYNAMIC => '2.0.47';
use constant MIN_HTTPD_VERSION_STATIC => '2.0.51';
+use constant MIN_HTTPD_24_VERSION => '2.4.0';
my($old_modperl_version, $old_modperl_pm, $old_Apache2_pm);
@@ -412,9 +413,13 @@
sub tables_dir {
my $httpd_version = shift;
- my $tables_version = 'current';
- #XXX: support versioning
- #$httpd_version =~ /-dev$/ ? 'current' : $httpd_version;
+ my $tables_version='';
+ if ($httpd_version lt MIN_HTTPD_24_VERSION) {
+ $tables_version='current';
+ }
+ else {
+ $tables_version='current24';
+ }
my $tables_dir = "xs/tables/$tables_version";
}
@@ -484,8 +489,8 @@
open my $fh, 'Changes';
while (<$fh>) {
- if (/^=item.*-(dev|rc\d+)/) {
- $VERSION .= "-$1";
+ if (/^=item\s+\Q$VERSION\E-(\w+)/) {
+ $VERSION .= "$1";
last;
}
last if /^=item/;
@@ -504,19 +509,44 @@
$perl_version =~ s/5.00(\d)(?:00(\d))?/"5.$1." . ($2||0)/e;
my $perl_threads = Apache2::Build::PERL_HAS_ITHREADS ? "w/" : "w/o";
my $perl_string = "Using Perl $perl_version $perl_threads ithreads";
- my $mpm = $build->mpm_name();
+ my $httpd_version = $build->httpd_version;
+ my $mpm = "";
+ my $build_threaded = 0;
+
+ # For httpd-2.4, we can't use mpm_is_threaded(), because MPMs are loadable
+ # modules. We therefore treat httpd as a whole project as threaded. It is
+ # still possible to disable threading by using MP_NO_THREADS=1
+ if ($httpd_version lt MIN_HTTPD_24_VERSION) {
+ $build_threaded = $build->mpm_is_threaded();
+ $mpm = $build->mpm_name();
+ }
+ else {
+ if ($build->{MP_NO_THREADS}) {
+ $build_threaded = 0;
+ }
+ else {
+ $build_threaded = 1;
+ }
+ }
# certain mpms require perl 5.8.0+ w/ithreads
- if ($build->mpm_is_threaded()) {
+ if ($build_threaded) {
my @fail;
push @fail, "Perl 5.8 or higher"
unless $] >= 5.008;
push @fail, "Perl built with ithreads (build perl with -Duseithreads)"
unless Apache2::Build::PERL_HAS_ITHREADS();
if (@fail) {
- error "$perl_string and '$mpm' mpm httpd.",
- "Failed requirements:",
- join "", map {" - $_\n"} @fail;
+ if ($httpd_version lt MIN_HTTPD_24_VERSION) {
+ error "$perl_string and '$mpm' mpm httpd.",
+ "Failed requirements:",
+ join "", map {" - $_\n"} @fail;
+ }
+ else {
+ error "$perl_string and httpd-2.4.",
+ "Failed requirements:",
+ join "", map {" - $_\n"} @fail;
+ }
exit 1;
}
}
@@ -526,8 +556,14 @@
if ($build->should_build_apache && !Apache2::Build::PERL_HAS_ITHREADS) {
# before 5.8.2, perl_shutdown is incomplete
if ($] < 5.008_002) {
- error "static $mpm mpm requires a threaded ".
- "perl 5.6.1-5.8.1 or any perl 5.8.2+";
+ if ($httpd_version lt MIN_HTTPD_24_VERSION) {
+ error "static $mpm mpm requires a threaded ".
+ "perl 5.6.1-5.8.1 or any perl 5.8.2+";
+ }
+ else {
+ error "httpd-2.4 requires a threaded ".
+ "perl 5.6.1-5.8.1 or any perl 5.8.2+";
+ }
exit 1;
}
}
@@ -548,7 +584,7 @@
if ($Config{usemultiplicity} xor $Config{useithreads}) {
error "mod_perl does not currently support multiplicity without ".
"ithreads.";
- if ($build->mpm_is_threaded()) {
+ if ($build_threaded) {
error "Please recompile Perl with -Duseithreads and ".
"-Dusemultiplicity";
} else {
@@ -770,8 +806,24 @@
$ap_bindir = File::Spec->catdir($build->{MP_AP_PREFIX}, 'bin')
if $build->{MP_AP_PREFIX};
}
+ my $modperl_libexecdir = '';
+ if ($build->is_dynamic) {
+ # need to add the location of mod_perl.so to the PATH
+ my $lib = $build->modperl_libpath() || '';
+ if ($lib) {
+ $modperl_libexecdir = File::Basename::dirname($lib);
+ }
+ else {
+ $modperl_libexecdir = File::Spec->catdir($build->{cwd},
+ 'src/modules/perl')
+ if $build->{cwd};
+ }
+ }
+ my $extra_path = '';
+ $extra_path .= ";$ap_bindir" if $ap_bindir;
+ $extra_path .= ";$modperl_libexecdir" if $modperl_libexecdir;
$preamble = <<EOF;
-PATH = \$(PATH);$ap_bindir
+PATH = \$(PATH)$extra_path
EOF
}
else {
diff --git a/ModPerl-Registry/lib/ModPerl/PerlRun.pm b/ModPerl-Registry/lib/ModPerl/PerlRun.pm
index ea97cfb..9dc3ce9 100644
--- a/ModPerl-Registry/lib/ModPerl/PerlRun.pm
+++ b/ModPerl-Registry/lib/ModPerl/PerlRun.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
diff --git a/ModPerl-Registry/lib/ModPerl/PerlRunPrefork.pm b/ModPerl-Registry/lib/ModPerl/PerlRunPrefork.pm
index 481c1b9..445e599 100644
--- a/ModPerl-Registry/lib/ModPerl/PerlRunPrefork.pm
+++ b/ModPerl-Registry/lib/ModPerl/PerlRunPrefork.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package ModPerl::PerlRunPrefork;
use strict;
diff --git a/ModPerl-Registry/lib/ModPerl/Registry.pm b/ModPerl-Registry/lib/ModPerl/Registry.pm
index 3bbfeff..9d7904e 100644
--- a/ModPerl-Registry/lib/ModPerl/Registry.pm
+++ b/ModPerl-Registry/lib/ModPerl/Registry.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
diff --git a/ModPerl-Registry/lib/ModPerl/RegistryBB.pm b/ModPerl-Registry/lib/ModPerl/RegistryBB.pm
index e1c7f28..d3667a8 100644
--- a/ModPerl-Registry/lib/ModPerl/RegistryBB.pm
+++ b/ModPerl-Registry/lib/ModPerl/RegistryBB.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
diff --git a/ModPerl-Registry/lib/ModPerl/RegistryCooker.pm b/ModPerl-Registry/lib/ModPerl/RegistryCooker.pm
index 9b055a7..cf50007 100644
--- a/ModPerl-Registry/lib/ModPerl/RegistryCooker.pm
+++ b/ModPerl-Registry/lib/ModPerl/RegistryCooker.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
diff --git a/ModPerl-Registry/lib/ModPerl/RegistryLoader.pm b/ModPerl-Registry/lib/ModPerl/RegistryLoader.pm
index f06bd6a..37b8aa7 100644
--- a/ModPerl-Registry/lib/ModPerl/RegistryLoader.pm
+++ b/ModPerl-Registry/lib/ModPerl/RegistryLoader.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
diff --git a/ModPerl-Registry/lib/ModPerl/RegistryPrefork.pm b/ModPerl-Registry/lib/ModPerl/RegistryPrefork.pm
index afdf148..9c41e77 100644
--- a/ModPerl-Registry/lib/ModPerl/RegistryPrefork.pm
+++ b/ModPerl-Registry/lib/ModPerl/RegistryPrefork.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package ModPerl::RegistryPrefork;
use strict;
diff --git a/ModPerl-Registry/t/206.t b/ModPerl-Registry/t/206.t
index 65ce1f5..7b72728 100644
--- a/ModPerl-Registry/t/206.t
+++ b/ModPerl-Registry/t/206.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/ModPerl-Registry/t/304.t b/ModPerl-Registry/t/304.t
index c53d5e3..dda87c9 100644
--- a/ModPerl-Registry/t/304.t
+++ b/ModPerl-Registry/t/304.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/ModPerl-Registry/t/404.t b/ModPerl-Registry/t/404.t
index d603048..4b4271a 100644
--- a/ModPerl-Registry/t/404.t
+++ b/ModPerl-Registry/t/404.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/ModPerl-Registry/t/500.t b/ModPerl-Registry/t/500.t
index 90be1e9..a96e97f 100644
--- a/ModPerl-Registry/t/500.t
+++ b/ModPerl-Registry/t/500.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/ModPerl-Registry/t/bad_scripts.t b/ModPerl-Registry/t/bad_scripts.t
index 5bb7552..8135484 100644
--- a/ModPerl-Registry/t/bad_scripts.t
+++ b/ModPerl-Registry/t/bad_scripts.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/ModPerl-Registry/t/basic.t b/ModPerl-Registry/t/basic.t
index faf2950..dcdc174 100644
--- a/ModPerl-Registry/t/basic.t
+++ b/ModPerl-Registry/t/basic.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/ModPerl-Registry/t/bin_resp.t b/ModPerl-Registry/t/bin_resp.t
index 61e8c73..5ffd780 100644
--- a/ModPerl-Registry/t/bin_resp.t
+++ b/ModPerl-Registry/t/bin_resp.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/ModPerl-Registry/t/cgi-bin/206.pl b/ModPerl-Registry/t/cgi-bin/206.pl
index 1d5efca..0aeac2b 100755
--- a/ModPerl-Registry/t/cgi-bin/206.pl
+++ b/ModPerl-Registry/t/cgi-bin/206.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
print <<_OUT_;
Status: 206 Partial Content
Content-Type: text/html; charset=UTF-8
diff --git a/ModPerl-Registry/t/cgi-bin/304.pl b/ModPerl-Registry/t/cgi-bin/304.pl
index 1eb4676..8238112 100755
--- a/ModPerl-Registry/t/cgi-bin/304.pl
+++ b/ModPerl-Registry/t/cgi-bin/304.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/ModPerl-Registry/t/cgi-bin/404.pl b/ModPerl-Registry/t/cgi-bin/404.pl
index 6c6b6d1..ec1314f 100755
--- a/ModPerl-Registry/t/cgi-bin/404.pl
+++ b/ModPerl-Registry/t/cgi-bin/404.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings;
diff --git a/ModPerl-Registry/t/cgi-bin/basic.pl b/ModPerl-Registry/t/cgi-bin/basic.pl
index d373efb..2176f3c 100755
--- a/ModPerl-Registry/t/cgi-bin/basic.pl
+++ b/ModPerl-Registry/t/cgi-bin/basic.pl
@@ -1,4 +1,5 @@
#!perl -w
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# test all the basic functionality
diff --git a/ModPerl-Registry/t/cgi-bin/bin_resp_start_0.pl b/ModPerl-Registry/t/cgi-bin/bin_resp_start_0.pl
index d9a77aa..4734b84 100755
--- a/ModPerl-Registry/t/cgi-bin/bin_resp_start_0.pl
+++ b/ModPerl-Registry/t/cgi-bin/bin_resp_start_0.pl
@@ -1,4 +1,5 @@
#!/usr/bin/perl -w
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/ModPerl-Registry/t/cgi-bin/cgi.pl b/ModPerl-Registry/t/cgi-bin/cgi.pl
index 8c31ba1..ef4941c 100755
--- a/ModPerl-Registry/t/cgi-bin/cgi.pl
+++ b/ModPerl-Registry/t/cgi-bin/cgi.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use CGI qw/:standard :html3/;
print header(-type=>'text/html');
diff --git a/ModPerl-Registry/t/cgi-bin/closure.pl b/ModPerl-Registry/t/cgi-bin/closure.pl
index a4c6e73..495dd7a 100755
--- a/ModPerl-Registry/t/cgi-bin/closure.pl
+++ b/ModPerl-Registry/t/cgi-bin/closure.pl
@@ -1,4 +1,5 @@
#!perl -w
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
BEGIN {
use Apache::TestUtil qw/t_server_log_warn_is_expected/;
diff --git a/ModPerl-Registry/t/cgi-bin/content_type.pl b/ModPerl-Registry/t/cgi-bin/content_type.pl
index aa7f065..ceb3678 100755
--- a/ModPerl-Registry/t/cgi-bin/content_type.pl
+++ b/ModPerl-Registry/t/cgi-bin/content_type.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
my $r = shift;
$r->content_type('text/plain');
$r->print('ok');
diff --git a/ModPerl-Registry/t/cgi-bin/env.pl b/ModPerl-Registry/t/cgi-bin/env.pl
index 2dfc9b9..d5990c5 100755
--- a/ModPerl-Registry/t/cgi-bin/env.pl
+++ b/ModPerl-Registry/t/cgi-bin/env.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# test env vars
print "Content-type: text/plain\n\n";
diff --git a/ModPerl-Registry/t/cgi-bin/env_val.pl b/ModPerl-Registry/t/cgi-bin/env_val.pl
index f908c3c..5632183 100755
--- a/ModPerl-Registry/t/cgi-bin/env_val.pl
+++ b/ModPerl-Registry/t/cgi-bin/env_val.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# test env vars
print "Content-type: text/plain\n\n";
diff --git a/ModPerl-Registry/t/cgi-bin/exit.pl b/ModPerl-Registry/t/cgi-bin/exit.pl
index 66f0b3a..90810ca 100755
--- a/ModPerl-Registry/t/cgi-bin/exit.pl
+++ b/ModPerl-Registry/t/cgi-bin/exit.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# XXX: exit should work by stopping the script, but not quitting the
# interpreter, though it's not trivial to make an automated test since
# what you really want to check whether the process didn't quit after
diff --git a/ModPerl-Registry/t/cgi-bin/flush.pl b/ModPerl-Registry/t/cgi-bin/flush.pl
index 1b6a2f3..b21f2cb 100755
--- a/ModPerl-Registry/t/cgi-bin/flush.pl
+++ b/ModPerl-Registry/t/cgi-bin/flush.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/ModPerl-Registry/t/cgi-bin/ithreads_io_n_tie.pl b/ModPerl-Registry/t/cgi-bin/ithreads_io_n_tie.pl
index 4209335..50d5f71 100755
--- a/ModPerl-Registry/t/cgi-bin/ithreads_io_n_tie.pl
+++ b/ModPerl-Registry/t/cgi-bin/ithreads_io_n_tie.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/ModPerl-Registry/t/cgi-bin/local-conf.pl b/ModPerl-Registry/t/cgi-bin/local-conf.pl
index 608e24f..e4e8dc9 100644
--- a/ModPerl-Registry/t/cgi-bin/local-conf.pl
+++ b/ModPerl-Registry/t/cgi-bin/local-conf.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
$test_require = 'it works';
1;
diff --git a/ModPerl-Registry/t/cgi-bin/missing_headers.pl b/ModPerl-Registry/t/cgi-bin/missing_headers.pl
index fd9c190..5dad82d 100755
--- a/ModPerl-Registry/t/cgi-bin/missing_headers.pl
+++ b/ModPerl-Registry/t/cgi-bin/missing_headers.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
BEGIN {
use Apache::TestUtil;
t_server_log_error_is_expected();
diff --git a/ModPerl-Registry/t/cgi-bin/not_executable.pl b/ModPerl-Registry/t/cgi-bin/not_executable.pl
index 90de9ac..d9ed3ba 100644
--- a/ModPerl-Registry/t/cgi-bin/not_executable.pl
+++ b/ModPerl-Registry/t/cgi-bin/not_executable.pl
@@ -1,4 +1,5 @@
#!perl -w
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# this test should return forbidden, since it should be not-executable
diff --git a/ModPerl-Registry/t/cgi-bin/nph-foo.pl b/ModPerl-Registry/t/cgi-bin/nph-foo.pl
index 82c1bd7..a46836a 100755
--- a/ModPerl-Registry/t/cgi-bin/nph-foo.pl
+++ b/ModPerl-Registry/t/cgi-bin/nph-foo.pl
@@ -1,4 +1,5 @@
#!/usr/bin/perl -w
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
my $r = shift;
diff --git a/ModPerl-Registry/t/cgi-bin/perlrun_decl.pm b/ModPerl-Registry/t/cgi-bin/perlrun_decl.pm
index 618ed86..748b1af 100644
--- a/ModPerl-Registry/t/cgi-bin/perlrun_decl.pm
+++ b/ModPerl-Registry/t/cgi-bin/perlrun_decl.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package perlrun_decl;
use warnings;
diff --git a/ModPerl-Registry/t/cgi-bin/perlrun_extload.pl b/ModPerl-Registry/t/cgi-bin/perlrun_extload.pl
index 9b0fc01..72269de 100755
--- a/ModPerl-Registry/t/cgi-bin/perlrun_extload.pl
+++ b/ModPerl-Registry/t/cgi-bin/perlrun_extload.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use warnings;
use strict;
diff --git a/ModPerl-Registry/t/cgi-bin/perlrun_nondecl.pl b/ModPerl-Registry/t/cgi-bin/perlrun_nondecl.pl
index 50e7b8e..da36515 100644
--- a/ModPerl-Registry/t/cgi-bin/perlrun_nondecl.pl
+++ b/ModPerl-Registry/t/cgi-bin/perlrun_nondecl.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# we use this file to test how the files w/o package declaration,
# required from perlrun, work
diff --git a/ModPerl-Registry/t/cgi-bin/prefork.pl b/ModPerl-Registry/t/cgi-bin/prefork.pl
index 48c0ca7..ae66b87 100755
--- a/ModPerl-Registry/t/cgi-bin/prefork.pl
+++ b/ModPerl-Registry/t/cgi-bin/prefork.pl
@@ -1,4 +1,5 @@
#!perl -w
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# test that prefork runs from the directory the script lives in
diff --git a/ModPerl-Registry/t/cgi-bin/r_inherited.pl b/ModPerl-Registry/t/cgi-bin/r_inherited.pl
index 0bab26e..a6eee27 100755
--- a/ModPerl-Registry/t/cgi-bin/r_inherited.pl
+++ b/ModPerl-Registry/t/cgi-bin/r_inherited.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings;
diff --git a/ModPerl-Registry/t/cgi-bin/redirect-cookie.pl b/ModPerl-Registry/t/cgi-bin/redirect-cookie.pl
index 571972e..41fd912 100755
--- a/ModPerl-Registry/t/cgi-bin/redirect-cookie.pl
+++ b/ModPerl-Registry/t/cgi-bin/redirect-cookie.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# test env vars
use Apache2::URI ();
diff --git a/ModPerl-Registry/t/cgi-bin/redirect.pl b/ModPerl-Registry/t/cgi-bin/redirect.pl
index 59dad64..7c92679 100755
--- a/ModPerl-Registry/t/cgi-bin/redirect.pl
+++ b/ModPerl-Registry/t/cgi-bin/redirect.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# test env vars
use Apache2::URI ();
diff --git a/ModPerl-Registry/t/cgi-bin/require.pl b/ModPerl-Registry/t/cgi-bin/require.pl
index d005d9f..43bd7eb 100755
--- a/ModPerl-Registry/t/cgi-bin/require.pl
+++ b/ModPerl-Registry/t/cgi-bin/require.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# test the require
use Apache::Test ();
diff --git a/ModPerl-Registry/t/cgi-bin/runtime_error.pl b/ModPerl-Registry/t/cgi-bin/runtime_error.pl
index 36f7a49..9cf74a1 100755
--- a/ModPerl-Registry/t/cgi-bin/runtime_error.pl
+++ b/ModPerl-Registry/t/cgi-bin/runtime_error.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
BEGIN {
use Apache::TestUtil;
t_server_log_error_is_expected();
diff --git a/ModPerl-Registry/t/cgi-bin/runtime_error_n_status_change.pl b/ModPerl-Registry/t/cgi-bin/runtime_error_n_status_change.pl
index 8edc863..1687d2d 100755
--- a/ModPerl-Registry/t/cgi-bin/runtime_error_n_status_change.pl
+++ b/ModPerl-Registry/t/cgi-bin/runtime_error_n_status_change.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
BEGIN {
use Apache::TestUtil;
t_server_log_error_is_expected();
diff --git a/ModPerl-Registry/t/cgi-bin/runtime_error_plus_body.pl b/ModPerl-Registry/t/cgi-bin/runtime_error_plus_body.pl
index 89b7c96..c53f5dd 100755
--- a/ModPerl-Registry/t/cgi-bin/runtime_error_plus_body.pl
+++ b/ModPerl-Registry/t/cgi-bin/runtime_error_plus_body.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
BEGIN {
use Apache::TestUtil;
t_server_log_error_is_expected();
diff --git a/ModPerl-Registry/t/cgi-bin/special_blocks.pl b/ModPerl-Registry/t/cgi-bin/special_blocks.pl
index 2a62433..d1d66f9 100755
--- a/ModPerl-Registry/t/cgi-bin/special_blocks.pl
+++ b/ModPerl-Registry/t/cgi-bin/special_blocks.pl
@@ -1,4 +1,5 @@
#!perl -w
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# test BEGIN/END blocks
diff --git a/ModPerl-Registry/t/cgi-bin/status_change.pl b/ModPerl-Registry/t/cgi-bin/status_change.pl
index 5182a39..4475d5a 100755
--- a/ModPerl-Registry/t/cgi-bin/status_change.pl
+++ b/ModPerl-Registry/t/cgi-bin/status_change.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use Apache2::Const -compile => qw(NOT_FOUND);
my $r = shift;
diff --git a/ModPerl-Registry/t/cgi-bin/syntax_error.pl b/ModPerl-Registry/t/cgi-bin/syntax_error.pl
index 44ead63..1716354 100755
--- a/ModPerl-Registry/t/cgi-bin/syntax_error.pl
+++ b/ModPerl-Registry/t/cgi-bin/syntax_error.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
BEGIN {
use Apache::TestUtil;
t_server_log_error_is_expected();
diff --git a/ModPerl-Registry/t/cgi-bin/use_error.pl b/ModPerl-Registry/t/cgi-bin/use_error.pl
index 725f8bd..00188c8 100755
--- a/ModPerl-Registry/t/cgi-bin/use_error.pl
+++ b/ModPerl-Registry/t/cgi-bin/use_error.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
BEGIN {
use Apache::TestUtil;
t_server_log_error_is_expected();
diff --git a/ModPerl-Registry/t/cgi.t b/ModPerl-Registry/t/cgi.t
index 771f241..b9133c5 100644
--- a/ModPerl-Registry/t/cgi.t
+++ b/ModPerl-Registry/t/cgi.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/ModPerl-Registry/t/closure.t b/ModPerl-Registry/t/closure.t
index 842ef11..dad160f 100644
--- a/ModPerl-Registry/t/closure.t
+++ b/ModPerl-Registry/t/closure.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/ModPerl-Registry/t/conf/modperl_extra_startup.pl b/ModPerl-Registry/t/conf/modperl_extra_startup.pl
index 42718a5..5511694 100644
--- a/ModPerl-Registry/t/conf/modperl_extra_startup.pl
+++ b/ModPerl-Registry/t/conf/modperl_extra_startup.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/ModPerl-Registry/t/dirindex.t b/ModPerl-Registry/t/dirindex.t
index 73ad546..30520a7 100644
--- a/ModPerl-Registry/t/dirindex.t
+++ b/ModPerl-Registry/t/dirindex.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/ModPerl-Registry/t/fatalstobrowser.t b/ModPerl-Registry/t/fatalstobrowser.t
index 4cf18e7..400d259 100644
--- a/ModPerl-Registry/t/fatalstobrowser.t
+++ b/ModPerl-Registry/t/fatalstobrowser.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/ModPerl-Registry/t/flush.t b/ModPerl-Registry/t/flush.t
index b095815..d126ea8 100644
--- a/ModPerl-Registry/t/flush.t
+++ b/ModPerl-Registry/t/flush.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/ModPerl-Registry/t/ithreads.t b/ModPerl-Registry/t/ithreads.t
index 32cc23c..7d91ce9 100644
--- a/ModPerl-Registry/t/ithreads.t
+++ b/ModPerl-Registry/t/ithreads.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/ModPerl-Registry/t/nph.t b/ModPerl-Registry/t/nph.t
index 3b15fd6..f9b29e2 100644
--- a/ModPerl-Registry/t/nph.t
+++ b/ModPerl-Registry/t/nph.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/ModPerl-Registry/t/perlrun_extload.t b/ModPerl-Registry/t/perlrun_extload.t
index 357e44c..e99fd65 100644
--- a/ModPerl-Registry/t/perlrun_extload.t
+++ b/ModPerl-Registry/t/perlrun_extload.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/ModPerl-Registry/t/prefork.t b/ModPerl-Registry/t/prefork.t
index 3ea4e73..00376a3 100644
--- a/ModPerl-Registry/t/prefork.t
+++ b/ModPerl-Registry/t/prefork.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/ModPerl-Registry/t/redirect.t b/ModPerl-Registry/t/redirect.t
index 303fc8c..b4e304e 100644
--- a/ModPerl-Registry/t/redirect.t
+++ b/ModPerl-Registry/t/redirect.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/ModPerl-Registry/t/regex.t b/ModPerl-Registry/t/regex.t
index 8dd298e..4aba470 100644
--- a/ModPerl-Registry/t/regex.t
+++ b/ModPerl-Registry/t/regex.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/ModPerl-Registry/t/rewrite_env.t b/ModPerl-Registry/t/rewrite_env.t
index d683828..b3e439d 100644
--- a/ModPerl-Registry/t/rewrite_env.t
+++ b/ModPerl-Registry/t/rewrite_env.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/ModPerl-Registry/t/special_blocks.t b/ModPerl-Registry/t/special_blocks.t
index d795425..2868064 100644
--- a/ModPerl-Registry/t/special_blocks.t
+++ b/ModPerl-Registry/t/special_blocks.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/build/config.pl b/build/config.pl
index 9d49334..7b9e09c 100644
--- a/build/config.pl
+++ b/build/config.pl
@@ -1,4 +1,5 @@
#!/usr/bin/perl -w
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use FindBin qw($Bin);
diff --git a/build/source_scan.pl b/build/source_scan.pl
index 25db3bb..3a6da0e 100644
--- a/build/source_scan.pl
+++ b/build/source_scan.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
#requires C::Scan 0.75+
use lib qw(lib Apache-Test/lib);
diff --git a/build/xs_generate.pl b/build/xs_generate.pl
index 28849b0..74761b5 100644
--- a/build/xs_generate.pl
+++ b/build/xs_generate.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use lib qw(lib Apache-Test/lib);
use Apache::TestConfig (); # needed to resolve circular use dependency
diff --git a/lib/APR/XSLoader.pm b/lib/APR/XSLoader.pm
index 4036891..fc390f2 100644
--- a/lib/APR/XSLoader.pm
+++ b/lib/APR/XSLoader.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
diff --git a/lib/Apache2/Build.pm b/lib/Apache2/Build.pm
index 5e296fa..2668ad2 100644
--- a/lib/Apache2/Build.pm
+++ b/lib/Apache2/Build.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
@@ -282,7 +283,7 @@
sub mpm_is_threaded {
my $self = shift;
my $mpm_name = $self->mpm_name();
- return $threaded_mpms{$mpm_name} || 0;
+ return exists $threaded_mpms{$mpm_name} ? 1 : 0;
}
sub mpm_name {
@@ -290,6 +291,11 @@
return $self->{mpm_name} if $self->{mpm_name};
+ if ($self->httpd_version =~ /^(\d+)\.(\d+)\.(\d+)/) {
+ delete $threaded_mpms{dynamic} if $self->mp_nonthreaded_ok;
+ return $self->{mpm_name} = 'dynamic' if ($1*1000+$2)*1000+$3>=2003000;
+ }
+
# XXX: hopefully apxs will work on win32 one day
return $self->{mpm_name} = 'winnt' if WIN32;
@@ -1154,18 +1160,7 @@
sub apr_generation {
my ($self) = @_;
-
- my $httpd_v = $self->httpd_version_as_int;
-
- if ($httpd_v =~ m/2[4-9]\d+/) {
- return 2;
- }
- elsif ($httpd_v =~ m/2[1-3]\d+/) {
- return 1;
- }
- else {
- return;
- }
+ return $self->httpd_version_as_int =~ m/2[1-9]\d+/ ? 1 : 0;
}
# returns an array of apr/apu linking flags (--link-ld --libs) if found
@@ -1225,8 +1220,7 @@
$self->{$key} = $self->{$mp_key};
}
- my $apr_generation = $self->apr_generation;
- my $config = $apr_generation ? "$what-${apr_generation}-config" : "$what-config";
+ my $config = $self->apr_generation ? "$what-1-config" : "$what-config";
if (!$self->{$key}) {
my @tries = ();
@@ -2213,7 +2207,8 @@
# with it is that we didn't have such a case yet, but may need to
# deal with it later
- return $perl_lfs64 ^ $apr_lfs64;
+ return 0;
+ # $perl_lfs64 ^ $apr_lfs64;
}
# if perl is built with uselargefiles, but apr not, the build won't
diff --git a/lib/Apache2/ParseSource.pm b/lib/Apache2/ParseSource.pm
index 94f9a05..7dada94 100644
--- a/lib/Apache2/ParseSource.pm
+++ b/lib/Apache2/ParseSource.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
@@ -73,6 +74,9 @@
'CORE_PRIVATE', #so we get all of apache
'MP_SOURCE_SCAN', #so we can avoid some c-scan barfing
'_NETINET_TCP_H', #c-scan chokes on netinet/tcp.h
+ '_BYTESWAP_H', #c-scan chokes on byteswap.h
+ '_BITS_BYTESWAP_H', #c-scan chokes on byteswap.h
+ 'Expat_INCLUDED', #c-scan chokes on expath.h
# 'APR_OPTIONAL_H', #c-scan chokes on apr_optional.h
'apr_table_do_callback_fn_t=void', #c-scan chokes on function pointers
);
@@ -252,6 +256,7 @@
remotehost => [qw{REMOTE_}],
satisfy => [qw{SATISFY_}],
types => [qw{DIR_MAGIC_TYPE}],
+ auth => [qw{AUTHN_ AUTHZ AP_AUTH_ AUTH_ AUTHZ_}],
},
'APR::Const' => {
common => [qw{APR_SUCCESS}],
@@ -284,7 +289,7 @@
}
my %enums_wanted = (
- 'Apache2::Const' => { map { $_, 1 } qw(cmd_how input_mode filter_type conn_keepalive) },
+ 'Apache2::Const' => { map { $_, 1 } qw(cmd_how input_mode filter_type conn_keepalive authn_status authz_status) },
'APR::Const' => { map { $_, 1 } qw(apr_shutdown_how apr_read_type apr_lockmech) },
);
@@ -411,6 +416,8 @@
my $c = $self->{c};
my $fdecls = $c->get($key);
+ my $inlines = $c->get('parsed_inlines');
+ push @{$fdecls}, @{$inlines};
my %seen;
my $wanted = $self->wanted_functions;
@@ -533,7 +540,16 @@
my ($subdir) = (split '::', $name)[0];
- my $tdir = 'xs/tables/current';
+ my $tdir = '';
+ my $build = Apache2::Build->new(init => 1);
+ my $httpd_version = $build->httpd_version;
+ if ($httpd_version lt '2.4.0') {
+ $tdir='xs/tables/current';
+ }
+ else {
+ $tdir='xs/tables/current24';
+ }
+
if (-d "$tdir/$subdir") {
$file = "$tdir/$subdir/$file";
}
diff --git a/lib/Apache2/PerlSections.pm b/lib/Apache2/PerlSections.pm
index 64523a1..69cd6b8 100644
--- a/lib/Apache2/PerlSections.pm
+++ b/lib/Apache2/PerlSections.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
diff --git a/lib/Apache2/PerlSections/Dump.pm b/lib/Apache2/PerlSections/Dump.pm
index 1481e3e..4366410 100644
--- a/lib/Apache2/PerlSections/Dump.pm
+++ b/lib/Apache2/PerlSections/Dump.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
diff --git a/lib/Apache2/Resource.pm b/lib/Apache2/Resource.pm
index 8b5508a..679d578 100644
--- a/lib/Apache2/Resource.pm
+++ b/lib/Apache2/Resource.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
diff --git a/lib/Apache2/SourceTables.pm b/lib/Apache2/SourceTables.pm
index 10d01fe..b82ba13 100644
--- a/lib/Apache2/SourceTables.pm
+++ b/lib/Apache2/SourceTables.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
diff --git a/lib/Apache2/Status.pm b/lib/Apache2/Status.pm
index b91cd29..65c3208 100644
--- a/lib/Apache2/Status.pm
+++ b/lib/Apache2/Status.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
diff --git a/lib/Apache2/XSLoader.pm b/lib/Apache2/XSLoader.pm
index 0863910..0c848a1 100644
--- a/lib/Apache2/XSLoader.pm
+++ b/lib/Apache2/XSLoader.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
diff --git a/lib/Apache2/compat.pm b/lib/Apache2/compat.pm
index 358e646..35f186a 100644
--- a/lib/Apache2/compat.pm
+++ b/lib/Apache2/compat.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
diff --git a/lib/Apache2/porting.pm b/lib/Apache2/porting.pm
index f021b92..2432604 100644
--- a/lib/Apache2/porting.pm
+++ b/lib/Apache2/porting.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
diff --git a/lib/Bundle/Apache2.pm b/lib/Bundle/Apache2.pm
index 6a8c823..7b9ec42 100644
--- a/lib/Bundle/Apache2.pm
+++ b/lib/Bundle/Apache2.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
diff --git a/lib/ModPerl/BuildMM.pm b/lib/ModPerl/BuildMM.pm
index 1c729e2..df1e0c2 100644
--- a/lib/ModPerl/BuildMM.pm
+++ b/lib/ModPerl/BuildMM.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
diff --git a/lib/ModPerl/BuildOptions.pm b/lib/ModPerl/BuildOptions.pm
index e99e09b..3f56d31 100644
--- a/lib/ModPerl/BuildOptions.pm
+++ b/lib/ModPerl/BuildOptions.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
@@ -264,4 +265,4 @@
LIBNAME 0 Name of the modperl dso library (default is mod_perl)
COMPAT_1X 0 Compile-time mod_perl 1.0 backcompat (default is on)
APR_LIB 0 Lib used to build APR::* on Win32 (default is aprext)
-
+NO_THREADS 0 Build mod_perl without thread support with httpd >= 2.4
diff --git a/lib/ModPerl/CScan.pm b/lib/ModPerl/CScan.pm
index a7314c9..4985ef0 100644
--- a/lib/ModPerl/CScan.pm
+++ b/lib/ModPerl/CScan.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package ModPerl::CScan;
require Exporter;
@@ -136,6 +137,8 @@
vdecl_hash => { filter => [ \&vdecl_hash, 'vdecls', 'mdecls' ], },
parsed_fdecls => { filter => [ \&do_declarations, 'fdecls',
'typedef_hash', 'keywords'], },
+ parsed_inlines => { filter => [ \&do_declarations, 'inlines',
+ 'typedef_hash', 'keywords'], },
keywords_rex => { filter => [ sub { my @k = keys %{ shift() };
local $" = '|';
my $r = "(?:@k)";
diff --git a/lib/ModPerl/Code.pm b/lib/ModPerl/Code.pm
index 8d6fb3b..f79baec 100644
--- a/lib/ModPerl/Code.pm
+++ b/lib/ModPerl/Code.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
@@ -142,7 +143,7 @@
Dir => [qw(NONE PARSE_HEADERS SETUP_ENV MERGE_HANDLERS GLOBAL_REQUEST UNSET)],
Req => [qw(NONE SET_GLOBAL_REQUEST PARSE_HEADERS SETUP_ENV
CLEANUP_REGISTERED PERL_SET_ENV_DIR PERL_SET_ENV_SRV)],
- Interp => [qw(NONE IN_USE PUTBACK CLONED BASE)],
+ Interp => [qw(NONE IN_USE CLONED BASE)],
Handler => [qw(NONE PARSED METHOD OBJECT ANON AUTOLOAD DYNAMIC FAKE)],
);
@@ -891,6 +892,15 @@
if ($name eq 'DECLINE_CMD' ||
$name eq 'DIR_MAGIC_TYPE' ||
$name eq 'CRLF' ||
+ $name eq 'AUTHN_PROVIDER_GROUP' ||
+ $name eq 'AUTHZ_PROVIDER_GROUP' ||
+ $name eq 'AUTHN_PROVIDER_VERSION' ||
+ $name eq 'AUTHZ_PROVIDER_VERSION' ||
+ $name eq 'AUTHN_DEFAULT_PROVIDER' ||
+ $name eq 'AUTHN_PROVIDER_NAME_NOTE' ||
+ $name eq 'AUTHZ_PROVIDER_NAME_NOTE' ||
+ $name eq 'AUTHN_PREFIX' ||
+ $name eq 'AUTHZ_PREFIX' ||
$name eq 'CRLF_ASCII') {
print $c_fh <<EOF;
return newSVpv($alias{$name}, 0);
diff --git a/lib/ModPerl/Config.pm b/lib/ModPerl/Config.pm
index 0e88fa2..89b0f51 100644
--- a/lib/ModPerl/Config.pm
+++ b/lib/ModPerl/Config.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
diff --git a/lib/ModPerl/FunctionMap.pm b/lib/ModPerl/FunctionMap.pm
index baf25e9..e611132 100644
--- a/lib/ModPerl/FunctionMap.pm
+++ b/lib/ModPerl/FunctionMap.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
diff --git a/lib/ModPerl/MM.pm b/lib/ModPerl/MM.pm
index 2b48921..597a743 100644
--- a/lib/ModPerl/MM.pm
+++ b/lib/ModPerl/MM.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
diff --git a/lib/ModPerl/Manifest.pm b/lib/ModPerl/Manifest.pm
index 1e856bc..a9a27a8 100644
--- a/lib/ModPerl/Manifest.pm
+++ b/lib/ModPerl/Manifest.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
diff --git a/lib/ModPerl/MapUtil.pm b/lib/ModPerl/MapUtil.pm
index 1aa219f..8eba238 100644
--- a/lib/ModPerl/MapUtil.pm
+++ b/lib/ModPerl/MapUtil.pm
@@ -46,7 +46,14 @@
sub function_table {
return $function_table if @$function_table;
- push @INC, "xs/tables/current";
+ my $build = Apache2::Build->new(init => 1);
+ my $httpd_version = $build->httpd_version;
+ if ($httpd_version lt '2.4.0' || ! -d "xs/tables/current24") {
+ push @INC, "xs/tables/current";
+ }
+ else {
+ push @INC, "xs/tables/current24";
+ }
require Apache2::FunctionTable;
require ModPerl::FunctionTable;
require APR::FunctionTable;
@@ -103,15 +110,28 @@
# #_end_
if (/^\s*#\s*_(if|unless|els(?:e|if)|end)_(?:\s(.+))?/) {
my ($cmd, $param) = ($1, $2);
+ if (defined $param) {
+ while ($param=~s!\\$!!) {
+ my $l=<$fh>;
+ die "$ModPerl::MapUtil::MapFile($.): unexpected EOF\n"
+ unless defined $l;
+ chomp $l;
+ $param.=$l;
+ }
+ }
if ($cmd eq 'if') {
- unshift @condition, 0+!!eval $param;
+ unshift @condition,
+ 0+!!eval "#line $. $ModPerl::MapUtil::MapFile\n".$param;
+ die $@ if $@;
}
elsif ($cmd eq 'elsif') {
die "parse error ($ModPerl::MapUtil::MapFile line $.)".
" #_elsif_ without #_if_"
unless @condition;
if ($condition[0] == 0) {
- $condition[0]+=!!eval $param;
+ $condition[0]+=
+ !!eval "#line $. $ModPerl::MapUtil::MapFile\n".$param;
+ die $@ if $@;
} else {
$condition[0]++;
}
@@ -123,7 +143,9 @@
$condition[0]+=1;
}
elsif ($cmd eq 'unless') {
- unshift @condition, 0+!eval $param;
+ unshift @condition,
+ 0+!eval "#line $. $ModPerl::MapUtil::MapFile\n".$param;
+ die $@ if $@;
}
elsif ($cmd eq 'end') {
shift @condition;
@@ -133,6 +155,15 @@
if (/^\s*#\s*_(eval)_(?:\s(.+))?/) {
my ($cmd, $param) = ($1, $2);
+ if (defined $param) {
+ while ($param=~s!\\$!!) {
+ my $l=<$fh>;
+ die "$ModPerl::MapUtil::MapFile($.): unexpected EOF\n"
+ unless defined $l;
+ chomp $l;
+ $param.=$l;
+ }
+ }
if ($cmd eq 'eval') {
eval "#line $. $ModPerl::MapUtil::MapFile\n".$param;
die $@ if $@;
diff --git a/lib/ModPerl/ParseSource.pm b/lib/ModPerl/ParseSource.pm
index dbeb964..4b8ccb7 100644
--- a/lib/ModPerl/ParseSource.pm
+++ b/lib/ModPerl/ParseSource.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
diff --git a/lib/ModPerl/StructureMap.pm b/lib/ModPerl/StructureMap.pm
index 25030a9..2d4c47b 100644
--- a/lib/ModPerl/StructureMap.pm
+++ b/lib/ModPerl/StructureMap.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
diff --git a/lib/ModPerl/TestReport.pm b/lib/ModPerl/TestReport.pm
index ea132c6..f2b9825 100644
--- a/lib/ModPerl/TestReport.pm
+++ b/lib/ModPerl/TestReport.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
diff --git a/lib/ModPerl/TestRun.pm b/lib/ModPerl/TestRun.pm
index ad1aa5a..eb37692 100644
--- a/lib/ModPerl/TestRun.pm
+++ b/lib/ModPerl/TestRun.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
diff --git a/lib/ModPerl/TypeMap.pm b/lib/ModPerl/TypeMap.pm
index 50aece4..5548cca 100644
--- a/lib/ModPerl/TypeMap.pm
+++ b/lib/ModPerl/TypeMap.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
diff --git a/lib/ModPerl/WrapXS.pm b/lib/ModPerl/WrapXS.pm
index 58d4a07..be3282b 100644
--- a/lib/ModPerl/WrapXS.pm
+++ b/lib/ModPerl/WrapXS.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
diff --git a/lib/mod_perl2.pm b/lib/mod_perl2.pm
index da90e1f..9a87c2f 100644
--- a/lib/mod_perl2.pm
+++ b/lib/mod_perl2.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
diff --git a/src/modules/perl/mod_perl.c b/src/modules/perl/mod_perl.c
index 4641d6a..a73001a 100644
--- a/src/modules/perl/mod_perl.c
+++ b/src/modules/perl/mod_perl.c
@@ -216,8 +216,10 @@
server_rec *base_server = modperl_global_get_server_rec();
const char *desc = modperl_server_desc(s, p);
if (base_server == s) {
+ MP_init_status = 1; /* temporarily reset MP_init_status */
MP_TRACE_i(MP_FUNC,
"starting the parent perl for the base server", desc);
+ MP_init_status = 2;
}
else {
MP_TRACE_i(MP_FUNC,
@@ -392,6 +394,7 @@
}
PERL_SET_CONTEXT(perl);
+ modperl_thx_interp_set(perl, base_scfg->mip->parent);
#endif /* USE_ITHREADS */
@@ -440,12 +443,12 @@
{
server_rec *s;
PerlInterpreter *base_perl;
-#ifdef MP_TRACE
+#if defined(MP_TRACE) || defined(USE_ITHREADS)
modperl_config_srv_t *base_scfg = modperl_config_srv_get(base_server);
+#endif
MP_TRACE_d_do(MpSrv_dump_flags(base_scfg,
base_server->server_hostname));
-#endif /* MP_TRACE */
#ifndef USE_ITHREADS
if (modperl_threaded_mpm()) {
@@ -467,6 +470,7 @@
/* after other parent perls were started in vhosts, make sure that
* the context is set to the base_perl */
PERL_SET_CONTEXT(base_perl);
+ modperl_thx_interp_set(base_perl, base_scfg->mip->parent);
#endif
}
@@ -612,8 +616,6 @@
return OK;
}
- MP_TRACE_i(MP_FUNC, "mod_perl hook init");
-
MP_init_status = 1; /* now starting */
modperl_restart_count_inc(s);
@@ -653,6 +655,10 @@
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+ */
@@ -737,7 +743,22 @@
{
MP_dRCFG;
+#ifdef USE_ITHREADS
+ /* XXX: this is necessary to make modperl_interp_pool_select() work
+ * which is used at runtime only to merge dir-configs by
+ * modperl_module_config_merge().
+ *
+ * Since most requests won't need it it would be good to add some logic
+ * (cheaper logic in terms of CPU cycles) to identify those cases and
+ * avoid the hash operation.
+ */
+ MP_TRACE_i(MP_FUNC, "setting userdata MODPERL_R in pool %#lx to %lx",
+ (unsigned long)r->pool, (unsigned long)r);
+ (void)apr_pool_userdata_set((void *)r, "MODPERL_R", NULL, r->pool);
+#endif
+
modperl_config_req_init(r, rcfg);
+ modperl_config_req_cleanup_register(r, rcfg);
/* set the default for cgi header parsing On as early as possible
* so $r->content_type in any phase after header_parser could turn
@@ -751,6 +772,12 @@
static int modperl_hook_post_read_request(request_rec *r)
{
+#ifdef USE_ITHREADS
+ MP_TRACE_i(MP_FUNC, "%s %s:%d%s",
+ r->method, r->connection->local_addr->hostname,
+ r->connection->local_addr->port, r->unparsed_uri);
+#endif
+
/* if 'PerlOptions +GlobalRequest' is outside a container */
modperl_global_request_cfg_set(r);
@@ -907,6 +934,11 @@
MP_CMD_DIR_ITERATE("PerlRequire", requires, "PerlRequire"),
MP_CMD_SRV_ITERATE("PerlConfigRequire", config_requires, "PerlConfigRequire"),
MP_CMD_SRV_ITERATE("PerlPostConfigRequire", post_config_requires, "PerlPostConfigRequire"),
+#if AP_SERVER_MAJORVERSION_NUMBER>2 || \
+ (AP_SERVER_MAJORVERSION_NUMBER == 2 && AP_SERVER_MINORVERSION_NUMBER>=3)
+ MP_CMD_SRV_TAKE2("PerlAddAuthzProvider", authz_provider, "PerlAddAuthzProvider"),
+ MP_CMD_SRV_TAKE2("PerlAddAuthnProvider", authn_provider, "PerlAddAuthnProvider"),
+#endif
MP_CMD_DIR_ITERATE("PerlOptions", options, "Perl Options"),
MP_CMD_DIR_ITERATE("PerlInitHandler", init_handlers, "Subroutine name"),
MP_CMD_DIR_TAKE2("PerlSetVar", set_var, "PerlSetVar"),
@@ -1009,27 +1041,14 @@
int modperl_response_handler(request_rec *r)
{
MP_dDCFG;
-#ifdef USE_ITHREADS
- MP_dRCFG;
-#endif
apr_status_t retval, rc;
-
-#ifdef USE_ITHREADS
- pTHX;
- modperl_interp_t *interp;
-#endif
+ MP_dINTERP;
if (!strEQ(r->handler, "modperl")) {
return DECLINED;
}
-#ifdef USE_ITHREADS
- interp = modperl_interp_select(r, r->connection, r->server);
- aTHX = interp->perl;
- if (MpInterpPUTBACK(interp)) {
- rcfg->interp = interp;
- }
-#endif
+ MP_INTERPa(r, r->connection, r->server);
/* default is -SetupEnv, add if PerlOption +SetupEnv */
if (MpDirSETUP_ENV(dcfg)) {
@@ -1042,13 +1061,7 @@
retval = rc;
}
-#ifdef USE_ITHREADS
- if (MpInterpPUTBACK(interp)) {
- /* PerlInterpScope handler */
- rcfg->interp = NULL;
- modperl_interp_unselect(interp);
- }
-#endif
+ MP_INTERP_PUTBACK(interp, aTHX);
return retval;
}
@@ -1059,22 +1072,13 @@
GV *h_stdin, *h_stdout;
apr_status_t retval, rc;
MP_dRCFG;
-#ifdef USE_ITHREADS
- pTHX;
- modperl_interp_t *interp;
-#endif
+ MP_dINTERP;
if (!strEQ(r->handler, "perl-script")) {
return DECLINED;
}
-#ifdef USE_ITHREADS
- interp = modperl_interp_select(r, r->connection, r->server);
- aTHX = interp->perl;
- if (MpInterpPUTBACK(interp)) {
- rcfg->interp = interp;
- }
-#endif
+ MP_INTERPa(r, r->connection, r->server);
modperl_perl_global_request_save(aTHX_ r);
@@ -1106,13 +1110,7 @@
modperl_io_restore_stdout(aTHX_ h_stdout);
FREETMPS;LEAVE;
-#ifdef USE_ITHREADS
- if (MpInterpPUTBACK(interp)) {
- /* PerlInterpScope handler */
- modperl_interp_unselect(interp);
- rcfg->interp = NULL;
- }
-#endif
+ MP_INTERP_PUTBACK(interp, aTHX);
/* flush output buffer after interpreter is putback */
rc = modperl_response_finish(r);
@@ -1150,3 +1148,10 @@
modperl_cmds, /* table of config file commands */
modperl_register_hooks, /* register hooks */
};
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/mod_perl.h b/src/modules/perl/mod_perl.h
index c8338d1..e11e7a8 100644
--- a/src/modules/perl/mod_perl.h
+++ b/src/modules/perl/mod_perl.h
@@ -198,3 +198,10 @@
#endif /* end of #ifdef USE_ITHREADS */
#endif /* MOD_PERL_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_apache_compat.c b/src/modules/perl/modperl_apache_compat.c
index d7dc922..1c1700b 100644
--- a/src/modules/perl/modperl_apache_compat.c
+++ b/src/modules/perl/modperl_apache_compat.c
@@ -14,6 +14,7 @@
* limitations under the License.
*/
+#define AP_DECLARE_EXPORT
#include "mod_perl.h"
/* back compat adjustements for older Apache versions
@@ -69,3 +70,10 @@
}
#endif /* since-APACHE-2.3.0 */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_apache_compat.h b/src/modules/perl/modperl_apache_compat.h
index dcab578..0d7058b 100644
--- a/src/modules/perl/modperl_apache_compat.h
+++ b/src/modules/perl/modperl_apache_compat.h
@@ -66,9 +66,9 @@
#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_MAJORVERSION_NUMBER == 2 && AP_SERVER_MINORVERSION_NUMBER>=3)
+
/* 2.4 API */
#define MP_HTTPD_OVERRIDE_OPTS_DEFAULT (OPT_UNSET | \
OPT_ALL | \
@@ -95,10 +95,17 @@
#define ap_unixd_config unixd_config
-#endif
+#endif /* 2.4 vs. 2.2 API */
#ifndef PROXYREQ_RESPONSE
#define PROXYREQ_RESPONSE (3)
#endif
#endif /* MODPERL_APACHE_COMPAT_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_apache_includes.h b/src/modules/perl/modperl_apache_includes.h
index fe97c8f..a06cc2b 100644
--- a/src/modules/perl/modperl_apache_includes.h
+++ b/src/modules/perl/modperl_apache_includes.h
@@ -43,4 +43,17 @@
APLOG_USE_MODULE(perl);
#endif
+#if AP_SERVER_MAJORVERSION_NUMBER>2 || \
+ (AP_SERVER_MAJORVERSION_NUMBER == 2 && AP_SERVER_MINORVERSION_NUMBER>=3)
+#include "ap_provider.h"
+#include "mod_auth.h"
+#endif
+
#endif /* MODPERL_APACHE_INCLUDES_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_apr_compat.h b/src/modules/perl/modperl_apr_compat.h
index c37e332..e9d5da4 100644
--- a/src/modules/perl/modperl_apr_compat.h
+++ b/src/modules/perl/modperl_apr_compat.h
@@ -153,3 +153,10 @@
#endif
#endif /* MODPERL_APR_COMPAT_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_apr_includes.h b/src/modules/perl/modperl_apr_includes.h
index 3da4b74..ec6e3d6 100644
--- a/src/modules/perl/modperl_apr_includes.h
+++ b/src/modules/perl/modperl_apr_includes.h
@@ -42,3 +42,10 @@
#endif
#endif /* MODPERL_APR_INCLUDES_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_bucket.c b/src/modules/perl/modperl_bucket.c
index 21b5a97..ef2f948 100644
--- a/src/modules/perl/modperl_bucket.c
+++ b/src/modules/perl/modperl_bucket.c
@@ -157,3 +157,10 @@
bucket->free = apr_bucket_free;
return modperl_bucket_sv_make(aTHX_ bucket, sv, offset, len);
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_bucket.h b/src/modules/perl/modperl_bucket.h
index f5334ed..f01506a 100644
--- a/src/modules/perl/modperl_bucket.h
+++ b/src/modules/perl/modperl_bucket.h
@@ -21,3 +21,10 @@
apr_off_t offset, apr_size_t len);
#endif /* MODPERL_BUCKET_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_callback.c b/src/modules/perl/modperl_callback.c
index 7555e0f..04f4317 100644
--- a/src/modules/perl/modperl_callback.c
+++ b/src/modules/perl/modperl_callback.c
@@ -88,8 +88,7 @@
name = handler->name;
}
- MP_TRACE_h(MP_FUNC, "[%s %s] lookup of %s failed",
- modperl_pid_tid(p),
+ MP_TRACE_h(MP_FUNC, "[%s] lookup of %s failed",
modperl_server_desc(s, p), name);
ap_log_error(APLOG_MARK, APLOG_ERR, 0, s,
"lookup of '%s' failed", name);
@@ -148,10 +147,7 @@
apr_pool_t *ptemp,
modperl_hook_run_mode_e run_mode)
{
-#ifdef USE_ITHREADS
- pTHX;
- modperl_interp_t *interp = NULL;
-#endif
+ MP_dINTERP;
MP_dSCFG(s);
MP_dDCFG;
MP_dRCFG;
@@ -184,28 +180,7 @@
return DECLINED;
}
-#ifdef USE_ITHREADS
- if (r && !c && modperl_interp_scope_connection(scfg)) {
- c = r->connection;
- }
- if (r || c) {
- interp = modperl_interp_select(r, c, s);
- aTHX = interp->perl;
- }
- else {
- /* Child{Init,Exit}, OpenLogs */
- aTHX = scfg->mip->parent->perl;
- PERL_SET_CONTEXT(aTHX);
- }
-#endif
-
- /* XXX: would like to do this in modperl_hook_create_request()
- * but modperl_interp_select() is what figures out if
- * PerlInterpScope eq handler, in which case we do not register
- * a cleanup. modperl_hook_create_request() is also currently always
- * run even if modperl isn't handling any part of the request
- */
- modperl_config_req_cleanup_register(r, rcfg);
+ MP_INTERPa(r, c, s);
switch (type) {
case MP_HANDLER_TYPE_PER_SRV:
@@ -254,8 +229,7 @@
modperl_callback_current_callback_set(desc);
- MP_TRACE_h(MP_FUNC, "[%s] running %d %s handlers",
- modperl_pid_tid(p), av->nelts, desc);
+ MP_TRACE_h(MP_FUNC, "running %d %s handlers", av->nelts, desc);
handlers = (modperl_handler_t **)av->elts;
for (i=0; i<av->nelts; i++) {
@@ -357,8 +331,7 @@
SvREFCNT_dec((SV*)av_args);
- /* PerlInterpScope handler */
- MP_INTERP_PUTBACK(interp);
+ MP_INTERP_PUTBACK(interp, aTHX);
return status;
}
@@ -415,3 +388,10 @@
NULL, NULL, s,
pconf, plog, ptemp, run_mode);
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_callback.h b/src/modules/perl/modperl_callback.h
index 8c5a3dc..8441b2d 100644
--- a/src/modules/perl/modperl_callback.h
+++ b/src/modules/perl/modperl_callback.h
@@ -66,3 +66,10 @@
modperl_hook_run_mode_e run_mode);
#endif /* MODPERL_CALLBACK_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_cgi.c b/src/modules/perl/modperl_cgi.c
index cbff0d8..66743e6 100644
--- a/src/modules/perl/modperl_cgi.c
+++ b/src/modules/perl/modperl_cgi.c
@@ -101,3 +101,10 @@
return status;
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_cgi.h b/src/modules/perl/modperl_cgi.h
index 86190ea..4924257 100644
--- a/src/modules/perl/modperl_cgi.h
+++ b/src/modules/perl/modperl_cgi.h
@@ -36,3 +36,10 @@
apr_size_t *len, const char **body);
#endif /* MODPERL_CGI_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_cmd.c b/src/modules/perl/modperl_cmd.c
index 48bb58d..33db5f1 100644
--- a/src/modules/perl/modperl_cmd.c
+++ b/src/modules/perl/modperl_cmd.c
@@ -69,17 +69,15 @@
*/
if (*name == '-') {
MP_TRACE_h(MP_FUNC,
- "[%s] warning: filter handler %s will be not autoloaded. "
+ "warning: filter handler %s will be not autoloaded. "
"Unless the module defining this handler is explicitly "
- "preloaded, filter attributes will be ignored.\n",
- modperl_pid_tid(p), h->name);
+ "preloaded, filter attributes will be ignored.");
}
else {
MpHandlerAUTOLOAD_On(h);
MP_TRACE_h(MP_FUNC,
- "[%s] filter handler %s will be autoloaded (to make "
- "the filter attributes available)\n",
- modperl_pid_tid(p), h->name);
+ "filter handler %s will be autoloaded (to make "
+ "the filter attributes available)", h->name);
}
if (!*handlers) {
@@ -417,6 +415,35 @@
return modperl_cmd_post_read_request_handlers(parms, mconfig, arg);
}
+#if AP_SERVER_MAJORVERSION_NUMBER>2 || \
+ (AP_SERVER_MAJORVERSION_NUMBER == 2 && AP_SERVER_MINORVERSION_NUMBER>=3)
+
+MP_CMD_SRV_DECLARE2(authz_provider)
+{
+ apr_pool_t *p = parms->pool;
+ char *name = apr_pstrdup(p, arg1);
+ char *cb = apr_pstrdup(p, arg2);
+
+ modperl_register_auth_provider_name(p, AUTHZ_PROVIDER_GROUP, name,
+ AUTHZ_PROVIDER_VERSION, cb, NULL,
+ AP_AUTH_INTERNAL_PER_CONF);
+ return NULL;
+}
+
+MP_CMD_SRV_DECLARE2(authn_provider)
+{
+ apr_pool_t *p = parms->pool;
+ char *name = apr_pstrdup(p, arg1);
+ char *cb = apr_pstrdup(p, arg2);
+
+ modperl_register_auth_provider_name(p, AUTHN_PROVIDER_GROUP, name,
+ AUTHN_PROVIDER_VERSION, cb, NULL,
+ AP_AUTH_INTERNAL_PER_CONF);
+ return NULL;
+}
+
+#endif
+
static const char *modperl_cmd_parse_args(apr_pool_t *p,
const char *args,
apr_table_t **t)
@@ -558,6 +585,11 @@
arg, NULL);
}
+#ifdef USE_ITHREADS
+ MP_TRACE_i(MP_FUNC, "using interp %lx to execute perl section:\n%s",
+ scfg->mip->parent, arg);
+#endif
+
{
SV *server = MP_PERLSECTIONS_SERVER_SV;
SV *code = newSVpv(arg, 0);
@@ -833,3 +865,10 @@
MP_CMD_INTERP_POOL_IMP(max_requests);
#endif /* USE_ITHREADS */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_cmd.h b/src/modules/perl/modperl_cmd.h
index d8629e9..79d3fd3 100644
--- a/src/modules/perl/modperl_cmd.h
+++ b/src/modules/perl/modperl_cmd.h
@@ -42,6 +42,11 @@
MP_CMD_SRV_DECLARE(requires);
MP_CMD_SRV_DECLARE(config_requires);
MP_CMD_SRV_DECLARE(post_config_requires);
+#if AP_SERVER_MAJORVERSION_NUMBER>2 || \
+ (AP_SERVER_MAJORVERSION_NUMBER == 2 && AP_SERVER_MINORVERSION_NUMBER>=3)
+MP_CMD_SRV_DECLARE2(authz_provider);
+MP_CMD_SRV_DECLARE2(authn_provider);
+#endif
MP_CMD_SRV_DECLARE2(set_var);
MP_CMD_SRV_DECLARE2(add_var);
MP_CMD_SRV_DECLARE2(set_env);
@@ -115,6 +120,10 @@
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 )
@@ -148,3 +157,10 @@
OR_ALL|EXEC_ON_READ, desc )
#endif /* MODPERL_CMD_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_common_debug.c b/src/modules/perl/modperl_common_debug.c
index 91ac194..4ae508e 100644
--- a/src/modules/perl/modperl_common_debug.c
+++ b/src/modules/perl/modperl_common_debug.c
@@ -17,3 +17,10 @@
/* This file must not contain any symbols from apache/mod_perl
* (apr and perl are OK) */
#include "modperl_common_includes.h"
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_common_debug.h b/src/modules/perl/modperl_common_debug.h
index 204acbe..342986b 100644
--- a/src/modules/perl/modperl_common_debug.h
+++ b/src/modules/perl/modperl_common_debug.h
@@ -19,3 +19,10 @@
#endif /* MODPERL_COMMON_DEBUG_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_common_includes.h b/src/modules/perl/modperl_common_includes.h
index d201688..971b2bd 100644
--- a/src/modules/perl/modperl_common_includes.h
+++ b/src/modules/perl/modperl_common_includes.h
@@ -25,3 +25,10 @@
#include "modperl_common_types.h"
#endif /* MODPERL_COMMON_INCLUDES_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_common_log.c b/src/modules/perl/modperl_common_log.c
index 19107be..3335257 100644
--- a/src/modules/perl/modperl_common_log.c
+++ b/src/modules/perl/modperl_common_log.c
@@ -16,6 +16,7 @@
#include "modperl_common_includes.h"
#include "modperl_common_log.h"
+#include "modperl_debug.h"
#undef getenv /* from XSUB.h */
@@ -48,7 +49,36 @@
return;
}
- if (func) {
+ /* for more information on formatting codes see
+ http://apr.apache.org/docs/apr/1.4/group__apr__lib.html#gad2cd3594aeaafd45931d1034965f48c1
+ */
+
+ /* PERL_GET_CONTEXT yields nonsense until the first interpreter is
+ * created. Hence the modperl_is_running() question. */
+ if (modperl_threaded_mpm()) {
+ if (modperl_threads_started()) {
+ apr_os_thread_t tid = apr_os_thread_current();
+ apr_file_printf(logfile, "[pid=%lu, tid=%pt, perl=%pp] ",
+ (unsigned long)getpid(), &tid,
+ modperl_is_running() ? PERL_GET_CONTEXT : NULL);
+ }
+ else {
+ apr_file_printf(logfile, "[pid=%lu, perl=%pp] ",
+ (unsigned long)getpid(),
+ modperl_is_running() ? PERL_GET_CONTEXT : NULL);
+ }
+ }
+ else {
+#ifdef USE_ITHREADS
+ apr_file_printf(logfile, "[pid=%lu, perl=%pp] ",
+ (unsigned long)getpid(),
+ modperl_is_running() ? PERL_GET_CONTEXT : NULL);
+#else
+ apr_file_printf(logfile, "[pid=%lu] ", (unsigned long)getpid());
+#endif
+ }
+
+ if (func && *func) {
apr_file_printf(logfile, "%s: ", func);
}
@@ -90,3 +120,10 @@
MP_TRACE_any_do(MP_TRACE_dump_flags());
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_common_log.h b/src/modules/perl/modperl_common_log.h
index 522138d..46c9491 100644
--- a/src/modules/perl/modperl_common_log.h
+++ b/src/modules/perl/modperl_common_log.h
@@ -58,3 +58,10 @@
void modperl_trace_level_set(apr_file_t *logfile, const char *level);
#endif /* MODPERL_COMMON_LOG_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_common_types.h b/src/modules/perl/modperl_common_types.h
index 292a050..bb4eb6c 100644
--- a/src/modules/perl/modperl_common_types.h
+++ b/src/modules/perl/modperl_common_types.h
@@ -26,3 +26,10 @@
} modperl_uri_t;
#endif /* MODPERL_COMMON_TYPES_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_common_util.c b/src/modules/perl/modperl_common_util.c
index ba64e95..c5f285f 100644
--- a/src/modules/perl/modperl_common_util.c
+++ b/src/modules/perl/modperl_common_util.c
@@ -152,3 +152,10 @@
uri->pool = p;
return uri;
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_common_util.h b/src/modules/perl/modperl_common_util.h
index 3dcdaf1..55f1600 100644
--- a/src/modules/perl/modperl_common_util.h
+++ b/src/modules/perl/modperl_common_util.h
@@ -110,3 +110,10 @@
SV *modperl_perl_gensym(pTHX_ char *pack);
#endif /* MODPERL_COMMON_UTIL_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_config.c b/src/modules/perl/modperl_config.c
index f6a9529..7b29df7 100644
--- a/src/modules/perl/modperl_config.c
+++ b/src/modules/perl/modperl_config.c
@@ -374,9 +374,14 @@
apr_status_t modperl_config_req_cleanup(void *data)
{
request_rec *r = (request_rec *)data;
- MP_dTHX;
+ apr_status_t rc;
+ MP_dINTERPa(r, NULL, NULL);
- return modperl_config_request_cleanup(aTHX_ r);
+ rc = modperl_config_request_cleanup(aTHX_ r);
+
+ MP_INTERP_PUTBACK(interp, aTHX);
+
+ return rc;
}
void *modperl_get_perl_module_config(ap_conf_vector_t *cv)
@@ -674,3 +679,10 @@
}
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_config.h b/src/modules/perl/modperl_config.h
index 8cb6210..9139e20 100644
--- a/src/modules/perl/modperl_config.h
+++ b/src/modules/perl/modperl_config.h
@@ -36,7 +36,7 @@
char **modperl_config_srv_argv_init(modperl_config_srv_t *scfg, int *argc);
#define modperl_config_srv_argv_push(arg) \
- *(const char **)apr_array_push(scfg->argv) = arg
+ *(const char **)apr_array_push(scfg->argv) = (arg)
apr_status_t modperl_config_request_cleanup(pTHX_ request_rec *r);
@@ -49,9 +49,9 @@
#define modperl_config_req_cleanup_register(r, rcfg) \
if (r && !MpReqCLEANUP_REGISTERED(rcfg)) { \
apr_pool_t *p; \
- apr_pool_create(&p, r->pool); \
+ apr_pool_create(&p, (r)->pool); \
apr_pool_cleanup_register(p, \
- (void*)r, \
+ (void*)(r), \
modperl_config_req_cleanup, \
apr_pool_cleanup_null); \
MpReqCLEANUP_REGISTERED_On(rcfg); \
@@ -62,27 +62,27 @@
#if defined(MP_IN_XS) && defined(WIN32)
# define modperl_get_module_config(v) \
- modperl_get_perl_module_config(v)
+ modperl_get_perl_module_config((v))
# define modperl_set_module_config(v, c) \
- modperl_set_perl_module_config(v, c)
+ modperl_set_perl_module_config((v), (c))
#else
# define modperl_get_module_config(v) \
- ap_get_module_config(v, &perl_module)
+ ap_get_module_config((v), &perl_module)
# define modperl_set_module_config(v, c) \
- ap_set_module_config(v, &perl_module, c)
+ ap_set_module_config((v), &perl_module, (c))
#endif
#define modperl_config_req_init(r, rcfg) \
- if (!rcfg) { \
- rcfg = modperl_config_req_new(r); \
- modperl_set_module_config(r->request_config, rcfg); \
+ if (!(rcfg)) { \
+ (rcfg) = modperl_config_req_new(r); \
+ modperl_set_module_config((r)->request_config, (rcfg)); \
}
#define modperl_config_req_get(r) \
(r ? (modperl_config_req_t *) \
- modperl_get_module_config(r->request_config) : NULL)
+ modperl_get_module_config((r)->request_config) : NULL)
#define MP_dRCFG \
modperl_config_req_t *rcfg = modperl_config_req_get(r)
@@ -90,23 +90,23 @@
#define modperl_config_con_init(c, ccfg) \
if (!ccfg) { \
ccfg = modperl_config_con_new(c); \
- modperl_set_module_config(c->conn_config, ccfg); \
+ modperl_set_module_config((c)->conn_config, (ccfg)); \
}
#define modperl_config_con_get(c) \
(c ? (modperl_config_con_t *) \
- modperl_get_module_config(c->conn_config) : NULL)
+ modperl_get_module_config((c)->conn_config) : NULL)
#define MP_dCCFG \
modperl_config_con_t *ccfg = modperl_config_con_get(c)
#define modperl_config_dir_get(r) \
(r ? (modperl_config_dir_t *) \
- modperl_get_module_config(r->per_dir_config) : NULL)
+ modperl_get_module_config((r)->per_dir_config) : NULL)
#define modperl_config_dir_get_defaults(s) \
(modperl_config_dir_t *) \
- modperl_get_module_config(s->lookup_defaults)
+ modperl_get_module_config((s)->lookup_defaults)
#define MP_dDCFG \
modperl_config_dir_t *dcfg = modperl_config_dir_get(r)
@@ -118,24 +118,6 @@
#define MP_dSCFG(s) \
modperl_config_srv_t *scfg = modperl_config_srv_get(s)
-#ifdef USE_ITHREADS
-# define MP_dSCFG_dTHX \
- dTHXa(scfg->mip->parent->perl); \
- PERL_SET_CONTEXT(aTHX)
-#else
-# define MP_dSCFG_dTHX dTHXa(scfg->perl)
-#endif
-
-/* hopefully this macro will not need to be used often */
-#ifdef USE_ITHREADS
-# define MP_dTHX \
- modperl_interp_t *interp = \
- modperl_interp_select(r, r->connection, r->server); \
- dTHXa(interp->perl)
-#else
-# define MP_dTHX dNOOP
-#endif
-
int modperl_config_apply_PerlModule(server_rec *s,
modperl_config_srv_t *scfg,
PerlInterpreter *perl, apr_pool_t *p);
@@ -174,3 +156,10 @@
#endif /* MODPERL_CONFIG_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_const.c b/src/modules/perl/modperl_const.c
index 0c0e3bd..209226b 100644
--- a/src/modules/perl/modperl_const.c
+++ b/src/modules/perl/modperl_const.c
@@ -131,3 +131,10 @@
XSRETURN_EMPTY;
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_const.h b/src/modules/perl/modperl_const.h
index a8b95f1..f6ef50c 100644
--- a/src/modules/perl/modperl_const.h
+++ b/src/modules/perl/modperl_const.h
@@ -31,3 +31,10 @@
__FILE__)
#endif /* MODPERL_CONST_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_debug.c b/src/modules/perl/modperl_debug.c
index 8c0d616..8b880d9 100644
--- a/src/modules/perl/modperl_debug.c
+++ b/src/modules/perl/modperl_debug.c
@@ -21,28 +21,6 @@
return apr_psprintf(p, "%s:%u", s->server_hostname, s->port);
}
-/* used in debug traces */
-MP_INLINE char *modperl_pid_tid(apr_pool_t *p)
-{
- if (modperl_threaded_mpm()) {
- return apr_psprintf(p, "%lu"
-#if APR_HAS_THREADS
- "/%lu"
-#endif /* APR_HAS_THREADS */
- , (unsigned long)getpid()
-#if APR_HAS_THREADS
- , modperl_threads_started()
- ? (unsigned long)apr_os_thread_current()
- : 0
-#endif /* APR_HAS_THREADS */
- );
- }
- else {
- return apr_psprintf(p, "%lu", (unsigned long)getpid());
- }
-}
-
-
#ifdef MP_TRACE
void modperl_apr_table_dump(pTHX_ apr_table_t *table, char *name)
{
@@ -97,3 +75,10 @@
}
#endif
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_debug.h b/src/modules/perl/modperl_debug.h
index 930e581..da7fc4b 100644
--- a/src/modules/perl/modperl_debug.h
+++ b/src/modules/perl/modperl_debug.h
@@ -19,8 +19,19 @@
#include "mod_perl.h"
+#ifdef MP_DEBUG
+# define MP_ASSERT(exp) ap_assert(exp)
+#else
+# define MP_ASSERT(exp) ((void)0)
+#endif
+
+#ifdef USE_ITHREADS
+# define MP_ASSERT_CONTEXT(perl) MP_ASSERT((perl) == PERL_GET_CONTEXT)
+#else
+# define MP_ASSERT_CONTEXT(perl) ((void)0)
+#endif
+
char *modperl_server_desc(server_rec *s, apr_pool_t *p);
-MP_INLINE char *modperl_pid_tid(apr_pool_t *p);
#ifdef MP_TRACE
void modperl_apr_table_dump(pTHX_ apr_table_t *table, char *name);
@@ -29,3 +40,10 @@
#endif
#endif /* MODPERL_DEBUG_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_env.c b/src/modules/perl/modperl_env.c
index e700501..769fd2c 100644
--- a/src/modules/perl/modperl_env.c
+++ b/src/modules/perl/modperl_env.c
@@ -232,15 +232,15 @@
}
}
- MP_TRACE_e(MP_FUNC, "\t[%s/0x%lx/%s]"
+ MP_TRACE_e(MP_FUNC, "\t[0x%lx/%s]"
"\n\t@ENV{keys scfg->SetEnv} = values scfg->SetEnv;",
- modperl_pid_tid(p), modperl_interp_address(aTHX),
+ modperl_interp_address(aTHX),
modperl_server_desc(s, p));
modperl_env_table_populate(aTHX_ scfg->SetEnv);
- MP_TRACE_e(MP_FUNC, "\t[%s/0x%lx/%s]"
+ MP_TRACE_e(MP_FUNC, "\t[0x%lx/%s]"
"\n\t@ENV{keys scfg->PassEnv} = values scfg->PassEnv;",
- modperl_pid_tid(p), modperl_interp_address(aTHX),
+ modperl_interp_address(aTHX),
modperl_server_desc(s, p));
modperl_env_table_populate(aTHX_ scfg->PassEnv);
}
@@ -270,9 +270,9 @@
* collisions with per-server PerlSetEnv entries are
* resolved via the nature of a Perl hash
*/
- MP_TRACE_e(MP_FUNC, "\t[%s/0x%lx/%s]"
+ MP_TRACE_e(MP_FUNC, "\t[0x%lx/%s]"
"\n\t@ENV{keys dcfg->SetEnv} = values dcfg->SetEnv;",
- modperl_pid_tid(r->pool), modperl_interp_address(aTHX),
+ modperl_interp_address(aTHX),
modperl_server_desc(r->server, r->pool));
modperl_env_table_populate(aTHX_ dcfg->SetEnv);
@@ -303,9 +303,9 @@
*/
if (!apr_is_empty_table(scfg->SetEnv)) {
- MP_TRACE_e(MP_FUNC, "\t[%s/0x%lx/%s]"
+ MP_TRACE_e(MP_FUNC, "\t[0x%lx/%s]"
"\n\t@ENV{keys scfg->SetEnv} = values scfg->SetEnv;",
- modperl_pid_tid(r->pool), modperl_interp_address(aTHX),
+ modperl_interp_address(aTHX),
modperl_server_desc(r->server, r->pool));
modperl_env_table_populate(aTHX_ scfg->SetEnv);
@@ -313,9 +313,9 @@
}
if (!apr_is_empty_table(scfg->PassEnv)) {
- MP_TRACE_e(MP_FUNC, "\t[%s/0x%lx/%s]"
+ MP_TRACE_e(MP_FUNC, "\t[0x%lx/%s]"
"\n\t@ENV{keys scfg->PassEnv} = values scfg->PassEnv;",
- modperl_pid_tid(r->pool), modperl_interp_address(aTHX),
+ modperl_interp_address(aTHX),
modperl_server_desc(r->server, r->pool));
modperl_env_table_populate(aTHX_ scfg->PassEnv);
@@ -363,9 +363,9 @@
* phases from populating %ENV with new subprocess_env table entries
*/
- MP_TRACE_e(MP_FUNC, "\t[%s/0x%lx/%s%s]"
+ MP_TRACE_e(MP_FUNC, "\t[0x%lx/%s%s]"
"\n\t@ENV{keys r->subprocess_env} = values r->subprocess_env;",
- modperl_pid_tid(r->pool), modperl_interp_address(aTHX),
+ modperl_interp_address(aTHX),
modperl_server_desc(r->server, r->pool), r->uri);
/* we can eliminate some of the cost by only doing CGI variables once
@@ -397,8 +397,8 @@
}
MP_TRACE_e(MP_FUNC,
- "\n\t[%s/0x%lx/%s%s]\n\tdelete @ENV{keys r->subprocess_env};",
- modperl_pid_tid(r->pool), modperl_interp_address(aTHX),
+ "\n\t[0x%lx/%s%s]\n\tdelete @ENV{keys r->subprocess_env};",
+ modperl_interp_address(aTHX),
modperl_server_desc(r->server, r->pool), r->uri);
modperl_env_table_unpopulate(aTHX_ r->subprocess_env);
@@ -411,8 +411,8 @@
EnvMgLenSet(-1);
#ifdef MP_PERL_HV_GMAGICAL_AWARE
- MP_TRACE_e(MP_FUNC, "[%s/0x%lx] tie %%ENV, $r\t (%s%s)",
- modperl_pid_tid(r->pool), modperl_interp_address(aTHX),
+ MP_TRACE_e(MP_FUNC, "[0x%lx] tie %%ENV, $r\t (%s%s)",
+ modperl_interp_address(aTHX),
modperl_server_desc(r->server, r->pool), r->uri);
SvGMAGICAL_on((SV*)ENVHV);
#endif
@@ -423,8 +423,8 @@
EnvMgObjSet(NULL);
#ifdef MP_PERL_HV_GMAGICAL_AWARE
- MP_TRACE_e(MP_FUNC, "[%s/0x%lx] untie %%ENV; # from r\t (%s%s)",
- modperl_pid_tid(r->pool), modperl_interp_address(aTHX),
+ MP_TRACE_e(MP_FUNC, "[0x%lx] untie %%ENV; # from r\t (%s%s)",
+ modperl_interp_address(aTHX),
modperl_server_desc(r->server, r->pool), r->uri);
SvGMAGICAL_off((SV*)ENVHV);
#endif
@@ -480,8 +480,7 @@
apr_table_set(r->subprocess_env,
hv_iterkey(entry, &keylen),
SvPV(hv_iterval((HV*)sv, entry), n_a));
- MP_TRACE_e(MP_FUNC, "[%s/0x%lx] localizing: %s => %s",
- modperl_pid_tid(r->pool),
+ MP_TRACE_e(MP_FUNC, "[0x%lx] localizing: %s => %s",
modperl_interp_address(aTHX),
hv_iterkey(entry, &keylen),
SvPV(hv_iterval((HV*)sv, entry), n_a));
@@ -493,17 +492,14 @@
HE *entry;
STRLEN n_a;
- MP_TRACE_e(MP_FUNC,
- "\n\t[%lu/0x%lx] populating %%ENV:",
- (unsigned long)getpid(), modperl_interp_address(aTHX));
+ MP_TRACE_e(MP_FUNC, "\n\t[0x%lx] populating %%ENV:",
+ modperl_interp_address(aTHX));
hv_iterinit((HV*)sv);
while ((entry = hv_iternext((HV*)sv))) {
I32 keylen;
MP_TRACE_e(MP_FUNC, "$ENV{%s} = \"%s\";",
- modperl_pid_tid(r->pool),
- modperl_interp_address(aTHX),
hv_iterkey(entry, &keylen),
SvPV(hv_iterval((HV*)sv, entry), n_a));
}
@@ -520,14 +516,12 @@
if (r) {
apr_table_clear(r->subprocess_env);
- MP_TRACE_e(MP_FUNC,
- "[%s/0x%lx] clearing all magic off r->subprocess_env",
- modperl_pid_tid(r->pool), modperl_interp_address(aTHX));
+ MP_TRACE_e(MP_FUNC, "[0x%lx] clearing all magic off r->subprocess_env",
+ modperl_interp_address(aTHX));
}
else {
- MP_TRACE_e(MP_FUNC,
- "[%s/0x%lx] %%ENV = ();",
- modperl_pid_tid(r->pool), modperl_interp_address(aTHX));
+ MP_TRACE_e(MP_FUNC, "[0x%lx] %%ENV = ();",
+ modperl_interp_address(aTHX));
return MP_PL_vtbl_call(env, clear);
}
@@ -542,8 +536,7 @@
MP_dENV_KEY;
MP_dENV_VAL;
apr_table_set(r->subprocess_env, key, val);
- MP_TRACE_e(MP_FUNC, "[%s/0x%lx] r->subprocess_env set: %s => %s",
- modperl_pid_tid(r->pool),
+ MP_TRACE_e(MP_FUNC, "[0x%lx] r->subprocess_env set: %s => %s",
modperl_interp_address(aTHX), key, val);
}
else {
@@ -551,8 +544,7 @@
MP_dENV_KEY;
MP_dENV_VAL;
MP_TRACE_e(MP_FUNC,
- "[%lu/0x%lx] $ENV{%s} = \"%s\";",
- (unsigned long)getpid(),
+ "[0x%lx] $ENV{%s} = \"%s\";",
modperl_interp_address(aTHX), key, val);
#endif
return MP_PL_vtbl_call(envelem, set);
@@ -568,15 +560,13 @@
if (r) {
MP_dENV_KEY;
apr_table_unset(r->subprocess_env, key);
- MP_TRACE_e(MP_FUNC, "[%s/0x%lx] r->subprocess_env unset: %s",
- modperl_pid_tid(r->pool),
+ MP_TRACE_e(MP_FUNC, "[0x%lx] r->subprocess_env unset: %s",
modperl_interp_address(aTHX), key);
}
else {
#ifdef MP_TRACE
MP_dENV_KEY;
- MP_TRACE_e(MP_FUNC, "[%lu/0x%lx] delete $ENV{%s};",
- (unsigned long)getpid(),
+ MP_TRACE_e(MP_FUNC, "[0x%lx] delete $ENV{%s};",
modperl_interp_address(aTHX), key);
#endif
return MP_PL_vtbl_call(envelem, clear);
@@ -597,15 +587,13 @@
if ((val = apr_table_get(r->subprocess_env, key))) {
sv_setpv(sv, val);
MP_TRACE_e(MP_FUNC,
- "[%s/0x%lx] r->subprocess_env get: %s => %s",
- modperl_pid_tid(r->pool),
+ "[0x%lx] r->subprocess_env get: %s => %s",
modperl_interp_address(aTHX), key, val);
}
else {
sv_setsv(sv, &PL_sv_undef);
MP_TRACE_e(MP_FUNC,
- "[%s/0x%lx] r->subprocess_env get: %s => undef",
- modperl_pid_tid(r->pool),
+ "[0x%lx] r->subprocess_env get: %s => undef",
modperl_interp_address(aTHX), key);
}
}
@@ -614,8 +602,7 @@
#ifdef MP_TRACE
MP_dENV_KEY;
MP_TRACE_e(MP_FUNC,
- "[%lu/0x%lx] there is no svt_get in PL_vtbl_envelem: %s",
- (unsigned long)getpid(),
+ "[0x%lx] there is no svt_get in PL_vtbl_envelem: %s",
modperl_interp_address(aTHX), key);
#endif
}
@@ -658,3 +645,10 @@
StructCopy(&MP_PERL_vtbl_env, &PL_vtbl_env, MGVTBL);
StructCopy(&MP_PERL_vtbl_envelem, &PL_vtbl_envelem, MGVTBL);
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_env.h b/src/modules/perl/modperl_env.h
index ecb126e..406e345 100644
--- a/src/modules/perl/modperl_env.h
+++ b/src/modules/perl/modperl_env.h
@@ -63,3 +63,10 @@
void modperl_env_unload(void);
#endif /* MODPERL_ENV_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_error.c b/src/modules/perl/modperl_error.c
index b80ab0a..2f83216 100644
--- a/src/modules/perl/modperl_error.c
+++ b/src/modules/perl/modperl_error.c
@@ -93,3 +93,10 @@
Perl_croak(aTHX_ (char *)NULL);
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_error.h b/src/modules/perl/modperl_error.h
index cbd693f..cd5fd69 100644
--- a/src/modules/perl/modperl_error.h
+++ b/src/modules/perl/modperl_error.h
@@ -62,3 +62,10 @@
} STMT_END
#endif /* MODPERL_ERROR_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_filter.c b/src/modules/perl/modperl_filter.c
index 73a8ae8..ceaa73e 100644
--- a/src/modules/perl/modperl_filter.c
+++ b/src/modules/perl/modperl_filter.c
@@ -282,13 +282,14 @@
/* mod_perl filter ctx cleanup */
if (ctx->data){
#ifdef USE_ITHREADS
- dTHXa(ctx->perl);
+ dTHXa(ctx->interp->perl);
+ MP_ASSERT_CONTEXT(aTHX);
#endif
if (SvOK(ctx->data) && SvREFCNT(ctx->data)) {
SvREFCNT_dec(ctx->data);
ctx->data = NULL;
}
- ctx->perl = NULL;
+ MP_INTERP_PUTBACK(ctx->interp, aTHX);
}
return APR_SUCCESS;
@@ -440,7 +441,7 @@
apr_pool_t *p = r ? r->pool : c->pool;
modperl_filter_t *filter = modperl_filter_new(f, NULL, mode, 0, 0, 0);
- MP_dINTERP_SELECT(r, c, s);
+ MP_dINTERPa(r, c, s);
MP_TRACE_h(MP_FUNC, "running filter init handler %s",
modperl_handler_name(handler));
@@ -464,7 +465,7 @@
FILTER_FREE(filter);
SvREFCNT_dec((SV*)args);
- MP_INTERP_PUTBACK(interp);
+ MP_INTERP_PUTBACK(interp, aTHX);
MP_TRACE_f(MP_FUNC, MP_FILTER_NAME_FORMAT
"return: %d", modperl_handler_name(handler), status);
@@ -485,7 +486,7 @@
server_rec *s = r ? r->server : c->base_server;
apr_pool_t *p = r ? r->pool : c->pool;
- MP_dINTERP_SELECT(r, c, s);
+ MP_dINTERPa(r, c, s);
MP_FILTER_SAVE_ERRSV(errsv);
@@ -555,7 +556,7 @@
MP_FILTER_RESTORE_ERRSV(errsv);
- MP_INTERP_PUTBACK(interp);
+ MP_INTERP_PUTBACK(interp, aTHX);
MP_TRACE_f(MP_FUNC, MP_FILTER_NAME_FORMAT
"return: %d", modperl_handler_name(handler), status);
@@ -1291,3 +1292,10 @@
}
#endif
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_filter.h b/src/modules/perl/modperl_filter.h
index cc36cbb..939f054 100644
--- a/src/modules/perl/modperl_filter.h
+++ b/src/modules/perl/modperl_filter.h
@@ -114,3 +114,10 @@
SV *callback, const char *type);
#endif /* MODPERL_FILTER_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_global.c b/src/modules/perl/modperl_global.c
index 9cc95f6..750110c 100644
--- a/src/modules/perl/modperl_global.c
+++ b/src/modules/perl/modperl_global.c
@@ -303,3 +303,10 @@
}
MP_TLS_IMPL(request_rec, request_rec *)
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_global.h b/src/modules/perl/modperl_global.h
index fbf0aee..8d4f05a 100644
--- a/src/modules/perl/modperl_global.h
+++ b/src/modules/perl/modperl_global.h
@@ -81,3 +81,10 @@
MP_TLS_DECL(request_rec, request_rec *);
#endif /* MODPERL_GLOBAL_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_gtop.c b/src/modules/perl/modperl_gtop.c
index dda0a83..170cfd1 100644
--- a/src/modules/perl/modperl_gtop.c
+++ b/src/modules/perl/modperl_gtop.c
@@ -145,3 +145,10 @@
}
#endif /* MP_USE_GTOP */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_gtop.h b/src/modules/perl/modperl_gtop.h
index a1c7e80..61554de 100644
--- a/src/modules/perl/modperl_gtop.h
+++ b/src/modules/perl/modperl_gtop.h
@@ -72,3 +72,10 @@
#endif /* MP_USE_GTOP */
#endif /* MODPERL_GTOP_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_handler.c b/src/modules/perl/modperl_handler.c
index 9eaf38e..fe935d7 100644
--- a/src/modules/perl/modperl_handler.c
+++ b/src/modules/perl/modperl_handler.c
@@ -39,8 +39,7 @@
/* not necessary due to apr_pcalloc */
/* handler->cv = NULL; */
handler->name = name;
- MP_TRACE_h(MP_FUNC, "[%s] new handler %s",
- modperl_pid_tid(p), handler->name);
+ MP_TRACE_h(MP_FUNC, "new handler %s", handler->name);
return handler;
}
@@ -105,8 +104,7 @@
anon->len = strlen(anon->name);
PERL_HASH(anon->hash, anon->name, anon->len);
- MP_TRACE_h(MP_FUNC, "[%s] new anon handler: '%s'",
- modperl_pid_tid(p), anon->name);
+ MP_TRACE_h(MP_FUNC, "new anon handler: '%s'", anon->name);
return anon;
}
@@ -175,8 +173,7 @@
handler->cv = cv;
handler->name = NULL;
- MP_TRACE_h(MP_FUNC, "[%s] new cached cv anon handler",
- modperl_pid_tid(p));
+ MP_TRACE_h(MP_FUNC, "new cached cv anon handler");
#endif
return handler;
@@ -223,9 +220,8 @@
MpHandlerAUTOLOAD_On(handler);
MP_TRACE_h(MP_FUNC,
- "[%s %s] handler %s hasn't yet been resolved, "
- "attempting to resolve using %s pool 0x%lx\n",
- modperl_pid_tid(p),
+ "[%s] handler %s hasn't yet been resolved, "
+ "attempting to resolve using %s pool 0x%lx",
modperl_server_desc(s, p),
modperl_handler_name(handler),
duped ? "current" : "server conf",
@@ -349,9 +345,15 @@
#define set_desc(dtype) \
if (desc) *desc = modperl_handler_desc_##dtype(idx)
+/* We should be able to use PERL_GET_CONTEXT here. The rcfg condition
+ * makes sure there is a request being processed. The action > GET part
+ * means it is a $r->set_handlers or $r->push_handlers operation. This
+ * can only happen if called by perl code.
+ */
#define check_modify(dtype) \
if ((action > MP_HANDLER_ACTION_GET) && rcfg) { \
- MP_dSCFG_dTHX; \
+ dTHXa(PERL_GET_CONTEXT); \
+ MP_ASSERT(aTHX+0); \
Perl_croak(aTHX_ "too late to modify %s handlers", \
modperl_handler_desc_##dtype(idx)); \
}
@@ -631,3 +633,10 @@
return TRUE;
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_handler.h b/src/modules/perl/modperl_handler.h
index f0cb08d..af3a8dd 100644
--- a/src/modules/perl/modperl_handler.h
+++ b/src/modules/perl/modperl_handler.h
@@ -85,3 +85,10 @@
modperl_handler_action_e action);
#endif /* MODPERL_HANDLER_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_interp.c b/src/modules/perl/modperl_interp.c
index 05ae2c9..430a2af 100644
--- a/src/modules/perl/modperl_interp.c
+++ b/src/modules/perl/modperl_interp.c
@@ -38,12 +38,7 @@
MpInterpCLONED_On(interp);
- PERL_SET_CONTEXT(aTHX);
-
- /* XXX: hack for bug fixed in 5.6.1 */
- if (PL_scopestack_ix == 0) {
- ENTER;
- }
+ MP_ASSERT_CONTEXT(aTHX);
/* clear @DynaLoader::dl_librefs so we only dlclose() those
* which are opened by the clone
@@ -61,7 +56,7 @@
memset(interp, '\0', sizeof(*interp));
interp->mip = mip;
- interp->refcnt = 0; /* for use by APR::Pool->cleanup_register */
+ interp->refcnt = 0;
if (perl) {
#ifdef MP_USE_GTOP
@@ -79,14 +74,7 @@
interp->perl = perl_clone(perl, clone_flags);
-#if MP_PERL_VERSION(5, 8, 0) && \
- defined(USE_REENTRANT_API) && defined(HAS_CRYPT_R) && defined(__GLIBC__)
- {
- dTHXa(interp->perl);
- /* workaround 5.8.0 bug */
- PL_reentrant_buffer->_crypt_struct.current_saltbits = 0;
- }
-#endif
+ MP_ASSERT_CONTEXT(interp->perl);
{
PTR_TBL_t *source = modperl_module_config_table_get(perl, FALSE);
@@ -101,7 +89,9 @@
/*
* we keep the PL_ptr_table past perl_clone so it can be used
- * within modperl_svptr_table_clone.
+ * within modperl_svptr_table_clone. Perl_sv_dup() uses it.
+ * Don't confuse our svptr_table with Perl's ptr_table. They
+ * are different things, although they use the same type.
*/
if ((clone_flags & CLONEf_KEEP_PTR_TABLE)) {
dTHXa(interp->perl);
@@ -268,32 +258,48 @@
scfg->mip = mip;
}
+#ifdef MP_TRACE
+static apr_status_t modperl_interp_pool_cleanup(void *data)
+{
+ MP_TRACE_i(MP_FUNC, "unselecting: (0x%lx)->refcnt=%ld",
+ data, ((modperl_interp_t*)data)->refcnt);
+
+ return modperl_interp_unselect(data);
+}
+#endif
+
apr_status_t modperl_interp_unselect(void *data)
{
modperl_interp_t *interp = (modperl_interp_t *)data;
modperl_interp_pool_t *mip = interp->mip;
- if (interp->refcnt != 0) {
+ MP_ASSERT(interp && MpInterpIN_USE(interp));
+ MP_TRACE_i(MP_FUNC, "unselect(interp=%pp): refcnt=%d",
+ interp, interp->refcnt);
+
+ if (interp->refcnt > 1) {
--interp->refcnt;
- MP_TRACE_i(MP_FUNC, "interp=0x%lx, refcnt=%d",
+ MP_TRACE_i(MP_FUNC, "interp=0x%lx, refcnt=%d -- interp still in use",
(unsigned long)interp, interp->refcnt);
return APR_SUCCESS;
}
- if (interp->request) {
- /* ithreads + a threaded mpm + PerlInterpScope handler */
- request_rec *r = interp->request;
- MP_dRCFG;
- modperl_config_request_cleanup(interp->perl, r);
- MpReqCLEANUP_REGISTERED_Off(rcfg);
- }
-
MpInterpIN_USE_Off(interp);
- MpInterpPUTBACK_Off(interp);
modperl_thx_interp_set(interp->perl, NULL);
+#ifdef MP_DEBUG
+ PERL_SET_CONTEXT(NULL);
+#endif
- modperl_tipool_putback_data(mip->tipool, data, interp->num_requests);
+ if (interp == mip->parent) {
+ MP_TRACE_i(MP_FUNC, "parent interp=%pp freed", interp);
+ }
+ else {
+ interp->ccfg->interp = NULL;
+ modperl_tipool_putback_data(mip->tipool, data, interp->num_requests);
+ MP_TRACE_i(MP_FUNC, "interp=%pp freed, tipool(size=%ld, in_use=%ld)",
+ interp, mip->tipool->size, mip->tipool->in_use);
+ }
return APR_SUCCESS;
}
@@ -321,13 +327,9 @@
}
void modperl_interp_pool_set(apr_pool_t *p,
- modperl_interp_t *interp,
- int cleanup)
+ modperl_interp_t *interp)
{
- /* same as get_interp but optional cleanup */
- (void)apr_pool_userdata_set((void *)interp, MP_INTERP_KEY,
- cleanup ? modperl_interp_unselect : NULL,
- p);
+ (void)apr_pool_userdata_set((void *)interp, MP_INTERP_KEY, NULL, p);
}
/*
@@ -339,73 +341,134 @@
server_rec *s)
{
int is_startup = (p == s->process->pconf);
- MP_dSCFG(s);
modperl_interp_t *interp = NULL;
- if (scfg && (is_startup || !modperl_threaded_mpm())) {
- MP_TRACE_i(MP_FUNC, "using parent interpreter at %s",
- is_startup ? "startup" : "request time (non-threaded MPM)");
+ if (is_startup) {
+ MP_dSCFG(s);
+ if (scfg) {
+ MP_TRACE_i(MP_FUNC, "using parent interpreter at startup");
- if (!scfg->mip) {
- /* we get here if directive handlers are invoked
- * before server merge.
- */
- modperl_init_vhost(s, p, NULL);
- }
+ if (!scfg->mip) {
+ /* we get here if directive handlers are invoked
+ * before server merge.
+ */
+ modperl_init_vhost(s, p, NULL);
+ if (!scfg->mip) {
+ /* FIXME: We get here if global "server_rec" == s, scfg->mip
+ * is not created then. I'm not sure if that's bug or
+ * bad/good design decicision. For now just return NULL.
+ */
+ return NULL;
+ }
+ }
- interp = scfg->mip->parent;
- }
- else {
- if (!(interp = modperl_interp_pool_get(p))) {
- interp = modperl_interp_get(s);
- modperl_interp_pool_set(p, interp, TRUE);
-
- MP_TRACE_i(MP_FUNC, "set interp in request time pool 0x%lx",
- (unsigned long)p);
+ interp = scfg->mip->parent;
}
else {
- MP_TRACE_i(MP_FUNC, "found interp in request time pool 0x%lx",
- (unsigned long)p);
- }
- }
+ if (!(interp = modperl_interp_pool_get(p))) {
+ interp = modperl_interp_get(s);
+ modperl_interp_pool_set(p, interp);
- return interp;
+ MP_TRACE_i(MP_FUNC, "set interp %pp in pconf pool %pp",
+ interp, p);
+ }
+ else {
+ MP_TRACE_i(MP_FUNC, "found interp %pp in pconf pool %pp",
+ interp, p);
+ }
+ }
+
+ MpInterpIN_USE_On(interp);
+ interp->refcnt++;
+ /* set context (THX) for this thread */
+ PERL_SET_CONTEXT(interp->perl);
+ /* let the perl interpreter point back to its interp */
+ modperl_thx_interp_set(interp->perl, interp);
+
+ return interp;
+ }
+ else {
+ request_rec *r;
+ apr_pool_userdata_get((void **)&r, "MODPERL_R", p);
+ MP_ASSERT(r);
+ MP_TRACE_i(MP_FUNC, "found userdata MODPERL_R in pool %#lx as %lx",
+ (unsigned long)r->pool, (unsigned long)r);
+ return modperl_interp_select(r, NULL, NULL);
+ }
}
modperl_interp_t *modperl_interp_select(request_rec *r, conn_rec *c,
server_rec *s)
{
- MP_dSCFG(s);
- MP_dRCFG;
- modperl_config_dir_t *dcfg = modperl_config_dir_get(r);
+ MP_dSCFG((r ? s=r->server : c ? s=c->base_server : s));
+ MP_dDCFG;
+ modperl_config_con_t *ccfg;
const char *desc = NULL;
modperl_interp_t *interp = NULL;
apr_pool_t *p = NULL;
- int is_subrequest = (r && r->main) ? 1 : 0;
modperl_interp_scope_e scope;
- if (!modperl_threaded_mpm()) {
- MP_TRACE_i(MP_FUNC,
- "using parent 0x%lx for non-threaded mpm (%s:%d)",
- (unsigned long)scfg->mip->parent,
- s->server_hostname, s->port);
+ /* What does the following condition mean?
+ * (r || c): if true we are at runtime. There is some kind of request
+ * being processed.
+ * threaded_mpm: self-explanatory
+ *
+ * Thus, it is true if we are either at initialization time or at runtime
+ * but with prefork-MPM. */
+ if (!((r || c) && modperl_threaded_mpm())) {
+ interp = scfg->mip->parent;
+ MpInterpIN_USE_On(interp);
+ interp->refcnt++;
/* XXX: if no VirtualHosts w/ PerlOptions +Parent we can skip this */
- PERL_SET_CONTEXT(scfg->mip->parent->perl);
- return scfg->mip->parent;
+ PERL_SET_CONTEXT(interp->perl);
+ /* let the perl interpreter point back to its interp */
+ modperl_thx_interp_set(interp->perl, interp);
+
+ MP_TRACE_i(MP_FUNC,
+ "using parent 0x%pp (perl=0x%pp) for %s:%d refcnt set to %d",
+ interp, interp->perl, s->server_hostname, s->port,
+ interp->refcnt);
+ return interp;
}
- if (rcfg && rcfg->interp) {
- /* if scope is per-handler and something selected an interpreter
- * before modperl_callback_run_handlers() and is still holding it,
- * e.g. modperl_response_handler_cgi(), that interpreter will
- * be here
- */
+ if(!c) c = r->connection;
+ ccfg = modperl_config_con_get(c);
+
+ if (ccfg && ccfg->interp) {
+ ccfg->interp->refcnt++;
+
MP_TRACE_i(MP_FUNC,
- "found interp 0x%lx in request config\n",
- (unsigned long)rcfg->interp);
- return rcfg->interp;
+ "found interp 0x%lx in con config, refcnt incremented to %d",
+ (unsigned long)ccfg->interp, ccfg->interp->refcnt);
+ /* set context (THX) for this thread */
+ PERL_SET_CONTEXT(ccfg->interp->perl);
+ /* modperl_thx_interp_set() is not called here because the interp
+ * already belongs to the perl interpreter
+ */
+ return ccfg->interp;
}
+ MP_TRACE_i(MP_FUNC,
+ "fetching interp for %s:%d", s->server_hostname, s->port);
+ interp = modperl_interp_get(s);
+ MP_TRACE_i(MP_FUNC, " --> got %pp (perl=%pp)", interp, interp->perl);
+ ++interp->num_requests; /* should only get here once per request */
+ interp->refcnt = 0;
+
+ /* set context (THX) for this thread */
+ PERL_SET_CONTEXT(interp->perl);
+ /* let the perl interpreter point back to its interp */
+ modperl_thx_interp_set(interp->perl, interp);
+
+ /* make sure ccfg is initialized */
+ modperl_config_con_init(c, ccfg);
+ ccfg->interp = interp;
+ interp->ccfg = ccfg;
+
+ MP_TRACE_i(MP_FUNC,
+ "pulled interp %pp (perl=%pp) from mip, num_requests is %d",
+ interp, interp->perl, interp->num_requests);
+
/*
* if a per-dir PerlInterpScope is specified, use it.
* else if r != NULL use per-server PerlInterpScope
@@ -419,103 +482,50 @@
MP_TRACE_i(MP_FUNC, "scope is per-%s",
modperl_interp_scope_desc(scope));
- /*
- * XXX: goto modperl_interp_get() if scope == handler ?
- */
-
- if (c && (scope == MP_INTERP_SCOPE_CONNECTION)) {
- desc = "conn_rec pool";
- get_interp(c->pool);
-
- if (interp) {
- MP_TRACE_i(MP_FUNC,
- "found interp 0x%lx in %s 0x%lx\n",
- (unsigned long)interp, desc, (unsigned long)c->pool);
- return interp;
+ if (scope != MP_INTERP_SCOPE_HANDLER) {
+ desc = NULL;
+ if (c && (scope == MP_INTERP_SCOPE_CONNECTION || !r)) {
+ p = c->pool;
+ desc = "connection";
}
-
- p = c->pool;
- }
- else if (r) {
- if (is_subrequest && (scope == MP_INTERP_SCOPE_REQUEST)) {
- /* share 1 interpreter across sub-requests */
+ else if (r) {
request_rec *main_r = r->main;
- while (main_r && !interp) {
- p = main_r->pool;
- get_interp(p);
- MP_TRACE_i(MP_FUNC,
- "looking for interp in main request for %s...%s\n",
- main_r->uri, interp ? "found" : "not found");
- main_r = main_r->main;
+ if (main_r && (scope == MP_INTERP_SCOPE_REQUEST)) {
+ /* share 1 interpreter across sub-requests */
+ for(; main_r; main_r = main_r->main) {
+ p = main_r->pool;
+ }
+ desc = "main request";
}
- }
- else {
- p = r->pool;
- get_interp(p);
- }
+ else {
+ p = r->pool;
+ desc = scope == MP_INTERP_SCOPE_REQUEST
+ ? "main request"
+ : "sub request";
+ }
+ }
- desc = "request_rec pool";
+ MP_ASSERT(p);
- if (interp) {
- MP_TRACE_i(MP_FUNC,
- "found interp 0x%lx in %s 0x%lx (%s request for %s)\n",
- (unsigned long)interp, desc, (unsigned long)p,
- (is_subrequest ? "sub" : "main"), r->uri);
- return interp;
- }
-
- /* might have already been set by a ConnectionHandler */
- get_interp(r->connection->pool);
-
- if (interp) {
- desc = "r->connection pool";
- MP_TRACE_i(MP_FUNC,
- "found interp 0x%lx in %s 0x%lx\n",
- (unsigned long)interp, desc,
- (unsigned long)r->connection->pool);
- return interp;
- }
- }
-
- interp = modperl_interp_get(s ? s : r->server);
- ++interp->num_requests; /* should only get here once per request */
-
- if (scope == MP_INTERP_SCOPE_HANDLER) {
- /* caller is responsible for calling modperl_interp_unselect() */
- interp->request = r;
- MpReqCLEANUP_REGISTERED_On(rcfg);
- MpInterpPUTBACK_On(interp);
- }
- else {
- if (!p) {
- /* should never happen */
- MP_TRACE_i(MP_FUNC, "no pool");
- return NULL;
- }
-
- set_interp(p);
-
-#if AP_MODULE_MAGIC_AT_LEAST(20111130, 0)
- MP_TRACE_i(MP_FUNC,
- "set interp 0x%lx in %s 0x%lx (%s request for %s)\n",
- (unsigned long)interp, desc, (unsigned long)p,
- (r ? (is_subrequest ? "sub" : "main") : "conn"),
- (r ? r->uri : c->client_ip));
+#ifdef MP_TRACE
+ apr_pool_cleanup_register(p, (void *)interp,
+ modperl_interp_pool_cleanup,
+ modperl_interp_pool_cleanup);
#else
- MP_TRACE_i(MP_FUNC,
- "set interp 0x%lx in %s 0x%lx (%s request for %s)\n",
- (unsigned long)interp, desc, (unsigned long)p,
- (r ? (is_subrequest ? "sub" : "main") : "conn"),
- (r ? r->uri : c->remote_ip));
+ apr_pool_cleanup_register(p, (void *)interp,
+ modperl_interp_unselect,
+ modperl_interp_unselect);
#endif
+
+ /* add a reference for the registered cleanup */
+ interp->refcnt++;
+
+ MP_TRACE_i(MP_FUNC,
+ "registered unselect cleanup for interp 0x%lx in %s",
+ (unsigned long)interp, desc);
}
- /* set context (THX) for this thread */
- PERL_SET_CONTEXT(interp->perl);
-
- modperl_thx_interp_set(interp->perl, interp);
-
return interp;
}
@@ -584,20 +594,20 @@
}
#define MP_THX_INTERP_KEY "modperl2::thx_interp_key"
-modperl_interp_t *modperl_thx_interp_get(PerlInterpreter *thx)
+modperl_interp_t *modperl_thx_interp_get(pTHX)
{
modperl_interp_t *interp;
- dTHXa(thx);
- SV **svp = hv_fetch(PL_modglobal, MP_THX_INTERP_KEY, strlen(MP_THX_INTERP_KEY), 0);
+ SV **svp = hv_fetch(PL_modglobal, MP_THX_INTERP_KEY,
+ strlen(MP_THX_INTERP_KEY), 0);
if (!svp) return NULL;
interp = INT2PTR(modperl_interp_t *, SvIV(*svp));
return interp;
}
-void modperl_thx_interp_set(PerlInterpreter *thx, modperl_interp_t *interp)
+void modperl_thx_interp_set(pTHX_ modperl_interp_t *interp)
{
- dTHXa(thx);
- (void)hv_store(PL_modglobal, MP_THX_INTERP_KEY, strlen(MP_THX_INTERP_KEY), newSViv(PTR2IV(interp)), 0);
+ (void)hv_store(PL_modglobal, MP_THX_INTERP_KEY, strlen(MP_THX_INTERP_KEY),
+ newSViv(PTR2IV(interp)), 0);
return;
}
@@ -616,3 +626,10 @@
}
#endif /* USE_ITHREADS */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_interp.h b/src/modules/perl/modperl_interp.h
index 70b016e..edfaac5 100644
--- a/src/modules/perl/modperl_interp.h
+++ b/src/modules/perl/modperl_interp.h
@@ -43,8 +43,7 @@
modperl_interp_t *modperl_interp_pool_get(apr_pool_t *p);
void modperl_interp_pool_set(apr_pool_t *p,
- modperl_interp_t *interp,
- int cleanup);
+ modperl_interp_t *interp);
modperl_interp_t *modperl_interp_pool_select(apr_pool_t *p,
server_rec *s);
@@ -52,16 +51,60 @@
modperl_interp_t *modperl_interp_select(request_rec *r, conn_rec *c,
server_rec *s);
-#define MP_dINTERP_SELECT(r, c, s) \
- pTHX; \
- modperl_interp_t *interp = NULL; \
- interp = modperl_interp_select(r, c, s); \
- aTHX = interp->perl
+#define MP_dINTERP pTHX; modperl_interp_t *interp = NULL
-#define MP_INTERP_PUTBACK(interp) \
- if (interp && MpInterpPUTBACK(interp)) { \
- modperl_interp_unselect(interp); \
- }
+#define MP_INTERPa(r, c, s) \
+ MP_TRACE_i(MP_FUNC, "selecting interp: r=%pp, c=%pp, s=%pp", \
+ (r), (c), (s)); \
+ interp = modperl_interp_select((r), (c), (s)); \
+ if (interp) { \
+ MP_TRACE_i(MP_FUNC, " --> got (0x%pp)->refcnt=%d, perl=%pp", \
+ interp, interp->refcnt, interp->perl); \
+ aTHX = interp->perl; \
+ } \
+ else { \
+ MP_TRACE_i(MP_FUNC, " --> failed"); \
+ } \
+ NOOP
+
+#define MP_dINTERPa(r, c, s) \
+ MP_dINTERP; \
+ MP_INTERPa((r), (c), (s))
+
+#define MP_INTERP_POOLa(p, s) \
+ MP_TRACE_i(MP_FUNC, "selecting interp: p=%pp, s=%pp", (p), (s)); \
+ interp = modperl_interp_pool_select((p), (s)); \
+ if (interp) { \
+ MP_TRACE_i(MP_FUNC, " --> got (0x%pp)->refcnt=%d", \
+ interp, interp->refcnt); \
+ aTHX = interp->perl; \
+ } \
+ else { \
+ MP_TRACE_i(MP_FUNC, " --> failed"); \
+ } \
+ NOOP
+
+#define MP_dINTERP_POOLa(p, s) \
+ MP_dINTERP; \
+ MP_INTERP_POOLa((p), (s))
+
+#ifdef MP_DEBUG
+#define MP_INTERP_PUTBACK(interp, thx) \
+ MP_TRACE_i(MP_FUNC, "unselecting interp: (0x%pp)->refcnt=%ld", \
+ (interp), (interp)->refcnt); \
+ modperl_interp_unselect(interp); \
+ interp = NULL; \
+ if( thx ) thx = NULL
+#else /* MP_DEBUG */
+#define MP_INTERP_PUTBACK(interp, thx) \
+ modperl_interp_unselect(interp)
+#endif
+
+#define MP_INTERP_REFCNT_inc(interp) (interp)->refcnt++
+
+#define MP_INTERP_REFCNT_dec(interp) MP_INTERP_PUTBACK(interp, NULL)
+
+#define MP_HAS_INTERP(interp) (interp != NULL)
#define MP_aTHX aTHX
@@ -83,12 +126,33 @@
void *data);
#else
-#define MP_dINTERP_SELECT(r, c, s) dNOOP
+#define MP_dINTERP dNOOP
-#define MP_INTERP_PUTBACK(interp) NOOP
+#define MP_INTERPa(r, c, s) NOOP
+
+#define MP_dINTERPa(r, c, s) NOOP
+
+#define MP_INTERP_POOLa(p, s) NOOP
+
+#define MP_dINTERP_POOLa(p, s) NOOP
+
+#define MP_INTERP_PUTBACK(interp, thx) NOOP
+
+#define MP_INTERP_REFCNT_inc(interp) NOOP
+
+#define MP_INTERP_REFCNT_dec(interp) NOOP
+
+#define MP_HAS_INTERP(interp) (1)
#define MP_aTHX 0
#endif /* USE_ITHREADS */
#endif /* MODPERL_INTERP_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_io.c b/src/modules/perl/modperl_io.c
index d8266dd..608ce3d 100644
--- a/src/modules/perl/modperl_io.c
+++ b/src/modules/perl/modperl_io.c
@@ -175,3 +175,9 @@
modperl_io_perlio_restore_stdhandle(aTHX_ O_WRONLY);
}
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_io.h b/src/modules/perl/modperl_io.h
index 7e07374..cfb9402 100644
--- a/src/modules/perl/modperl_io.h
+++ b/src/modules/perl/modperl_io.h
@@ -75,3 +75,10 @@
#endif /* MODPERL_IO_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_io_apache.c b/src/modules/perl/modperl_io_apache.c
index 4ea4868..c10031c 100644
--- a/src/modules/perl/modperl_io_apache.c
+++ b/src/modules/perl/modperl_io_apache.c
@@ -334,3 +334,10 @@
return total;
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_io_apache.h b/src/modules/perl/modperl_io_apache.h
index 5777ea7..a372222 100644
--- a/src/modules/perl/modperl_io_apache.h
+++ b/src/modules/perl/modperl_io_apache.h
@@ -58,3 +58,10 @@
char *buffer, Size_t len);
#endif /* MODPERL_IO_APACHE_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_log.c b/src/modules/perl/modperl_log.c
index 7c7e31d..a806e00 100644
--- a/src/modules/perl/modperl_log.c
+++ b/src/modules/perl/modperl_log.c
@@ -15,3 +15,10 @@
*/
#include "modperl_log.h"
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_log.h b/src/modules/perl/modperl_log.h
index 9baa17c..7e5f303 100644
--- a/src/modules/perl/modperl_log.h
+++ b/src/modules/perl/modperl_log.h
@@ -45,3 +45,10 @@
msg)
#endif /* MODPERL_LOG_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_mgv.c b/src/modules/perl/modperl_mgv.c
index 9799a5e..c6286f0 100644
--- a/src/modules/perl/modperl_mgv.c
+++ b/src/modules/perl/modperl_mgv.c
@@ -211,14 +211,12 @@
handler->name = NULL;
handler->mgv_obj = modperl_handler_anon_next(aTHX_ p);
modperl_handler_anon_add(aTHX_ handler->mgv_obj, cv);
- MP_TRACE_h(MP_FUNC, "[%s] new anon handler",
- modperl_pid_tid(p));
+ MP_TRACE_h(MP_FUNC, "new anon handler");
#else
SvREFCNT_inc(cv);
handler->cv = cv;
handler->name = NULL;
- MP_TRACE_h(MP_FUNC, "[%s] new cached-cv anon handler",
- modperl_pid_tid(p));
+ MP_TRACE_h(MP_FUNC, "new cached-cv anon handler");
#endif
FREETMPS;LEAVE;
@@ -340,8 +338,7 @@
modperl_mgv_append(aTHX_ p, handler->mgv_cv, handler_name);
MpHandlerPARSED_On(handler);
- MP_TRACE_h(MP_FUNC, "[%s] found `%s' in class `%s' as a %s",
- modperl_pid_tid(p),
+ MP_TRACE_h(MP_FUNC, "found `%s' in class `%s' as a %s",
handler_name, HvNAME(stash),
MpHandlerMETHOD(handler) ? "method" : "function");
MODPERL_MGV_DEEP_RESOLVE(handler, p);
@@ -479,10 +476,7 @@
{
int i;
modperl_config_dir_t *dir_cfg = (modperl_config_dir_t *)cfg;
-#ifdef USE_ITHREADS
- MP_dSCFG(s);
- MP_dSCFG_dTHX;
-#endif
+ dTHXa(data);
if (!dir_cfg) {
return 1;
@@ -500,7 +494,7 @@
{
int i;
modperl_config_srv_t *scfg = (modperl_config_srv_t *)cfg;
- MP_dSCFG_dTHX;
+ dTHXa(data);
for (i=0; i < MP_HANDLER_NUM_PER_SRV; i++) {
modperl_hash_handlers(aTHX_ p, s,
@@ -527,7 +521,21 @@
void modperl_mgv_hash_handlers(apr_pool_t *p, server_rec *s)
{
- ap_pcw_walk_config(p, s, &perl_module, NULL,
+ MP_dINTERPa(NULL, NULL, s);
+ ap_pcw_walk_config(p, s, &perl_module,
+#ifdef USE_ITHREADS
+ aTHX,
+#else
+ NULL,
+#endif
modperl_hash_handlers_dir,
modperl_hash_handlers_srv);
+ MP_INTERP_PUTBACK(interp, aTHX);
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_mgv.h b/src/modules/perl/modperl_mgv.h
index 2a9d870..50ce5b8 100644
--- a/src/modules/perl/modperl_mgv.h
+++ b/src/modules/perl/modperl_mgv.h
@@ -56,3 +56,10 @@
GvCV(sv)
#endif /* MODPERL_MGV_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_module.c b/src/modules/perl/modperl_module.c
index 99e5baa..e804bad 100644
--- a/src/modules/perl/modperl_module.c
+++ b/src/modules/perl/modperl_module.c
@@ -103,7 +103,9 @@
}
typedef struct {
- PerlInterpreter *perl;
+#ifdef USE_ITHREADS
+ modperl_interp_t *interp;
+#endif
PTR_TBL_t *table;
void *ptr;
} config_obj_cleanup_t;
@@ -116,13 +118,17 @@
{
config_obj_cleanup_t *cleanup =
(config_obj_cleanup_t *)data;
- dTHXa(cleanup->perl);
+#ifdef USE_ITHREADS
+ dTHXa(cleanup->interp->perl);
+ MP_ASSERT_CONTEXT(aTHX);
+#endif
modperl_svptr_table_delete(aTHX_ cleanup->table, cleanup->ptr);
- MP_TRACE_c(MP_FUNC, "deleting ptr 0x%lx from table 0x%lx",
- (unsigned long)cleanup->ptr,
- (unsigned long)cleanup->table);
+ MP_TRACE_c(MP_FUNC, "deleting ptr %pp from table %pp",
+ cleanup->ptr, cleanup->table);
+
+ MP_INTERP_PUTBACK(cleanup->interp, aTHX);
return APR_SUCCESS;
}
@@ -138,7 +144,8 @@
cleanup->table = table;
cleanup->ptr = ptr;
#ifdef USE_ITHREADS
- cleanup->perl = aTHX;
+ cleanup->interp = modperl_thx_interp_get(aTHX);
+ MP_INTERP_REFCNT_inc(cleanup->interp);
#endif
apr_pool_cleanup_register(p, cleanup,
@@ -166,10 +173,7 @@
int is_startup;
PTR_TBL_t *table;
SV *mrg_obj = (SV *)NULL, *base_obj, *add_obj;
-#ifdef USE_ITHREADS
- modperl_interp_t *interp;
- MP_PERL_CONTEXT_DECLARE;
-#endif
+ MP_dINTERP;
/* if the module is loaded in vhost, base==NULL */
tmp = (base && base->server) ? base : add;
@@ -182,21 +186,14 @@
s = tmp->server;
is_startup = (p == s->process->pconf);
-#ifdef USE_ITHREADS
- interp = modperl_interp_pool_select(p, s);
- MP_PERL_CONTEXT_STORE_OVERRIDE(interp->perl);
-#endif
+ MP_INTERP_POOLa(p, s);
table = modperl_module_config_table_get(aTHX_ TRUE);
base_obj = modperl_svptr_table_fetch(aTHX_ table, base);
add_obj = modperl_svptr_table_fetch(aTHX_ table, add);
if (!base_obj || (base_obj == add_obj)) {
-#ifdef USE_ITHREADS
- /* XXX: breaks prefork
- modperl_interp_unselect(interp); */
- MP_PERL_CONTEXT_RESTORE;
-#endif
+ MP_INTERP_PUTBACK(interp, aTHX);
return addv;
}
@@ -245,11 +242,7 @@
modperl_module_config_obj_cleanup_register(aTHX_ p, table, mrg);
}
-#ifdef USE_ITHREADS
- /* XXX: breaks prefork
- modperl_interp_unselect(interp); */
- MP_PERL_CONTEXT_RESTORE;
-#endif
+ MP_INTERP_PUTBACK(interp, aTHX);
return (void *)mrg;
}
@@ -363,16 +356,12 @@
modperl_module_info_t *minfo = MP_MODULE_INFO(info->modp);
modperl_module_cfg_t *srv_cfg;
int modules_alias = 0;
-
-#ifdef USE_ITHREADS
- modperl_interp_t *interp = modperl_interp_pool_select(p, s);
- dTHXa(interp->perl);
-#endif
-
int count;
- PTR_TBL_t *table = modperl_module_config_table_get(aTHX_ TRUE);
+ PTR_TBL_t *table;
SV *obj = (SV *)NULL;
- dSP;
+ MP_dINTERP_POOLa(p, s);
+
+ table = modperl_module_config_table_get(aTHX_ TRUE);
if (s->is_virtual) {
MP_dSCFG(s);
@@ -416,6 +405,7 @@
parms, &obj);
if (errmsg) {
+ MP_INTERP_PUTBACK(interp, aTHX);
return errmsg;
}
@@ -436,6 +426,7 @@
minfo->srv_create,
parms, &srv_obj);
if (errmsg) {
+ MP_INTERP_PUTBACK(interp, aTHX);
return errmsg;
}
@@ -446,37 +437,42 @@
}
}
- ENTER;SAVETMPS;
- PUSHMARK(SP);
- EXTEND(SP, 2);
+ {
+ dSP;
+ ENTER;SAVETMPS;
+ PUSHMARK(SP);
+ EXTEND(SP, 2);
- PUSHs(obj);
- PUSHs(modperl_bless_cmd_parms(parms));
+ PUSHs(obj);
+ PUSHs(modperl_bless_cmd_parms(parms));
- if (cmd->args_how != NO_ARGS) {
- PUSH_STR_ARG(one);
- PUSH_STR_ARG(two);
- PUSH_STR_ARG(three);
- }
-
- PUTBACK;
- count = call_method(info->func_name, G_EVAL|G_SCALAR);
- SPAGAIN;
-
- if (count == 1) {
- SV *sv = POPs;
- if (SvPOK(sv) && strEQ(SvPVX(sv), DECLINE_CMD)) {
- retval = DECLINE_CMD;
+ if (cmd->args_how != NO_ARGS) {
+ PUSH_STR_ARG(one);
+ PUSH_STR_ARG(two);
+ PUSH_STR_ARG(three);
}
- }
- PUTBACK;
- FREETMPS;LEAVE;
+ PUTBACK;
+ count = call_method(info->func_name, G_EVAL|G_SCALAR);
+ SPAGAIN;
+
+ if (count == 1) {
+ SV *sv = POPs;
+ if (SvPOK(sv) && strEQ(SvPVX(sv), DECLINE_CMD)) {
+ retval = DECLINE_CMD;
+ }
+ }
+
+ PUTBACK;
+ FREETMPS;LEAVE;
+ }
if (SvTRUE(ERRSV)) {
retval = SvPVX(ERRSV);
}
+ MP_INTERP_PUTBACK(interp, aTHX);
+
if (modules_alias) {
MP_dSCFG(s);
/* unalias the temp aliasing */
@@ -644,10 +640,7 @@
command_rec *cmd;
AV *module_cmds;
I32 i, fill;
-#ifdef USE_ITHREADS
- MP_dSCFG(s);
- dTHXa(scfg->mip->parent->perl);
-#endif
+ MP_dINTERPa(NULL, NULL, s);
module_cmds = (AV*)SvRV(mod_cmds);
fill = AvFILL(module_cmds);
@@ -664,6 +657,7 @@
cmd = apr_array_push(cmds);
if ((errmsg = modperl_module_cmd_fetch(aTHX_ obj, "name", &val))) {
+ MP_INTERP_PUTBACK(interp, aTHX);
return errmsg;
}
@@ -684,6 +678,7 @@
}
if (!modperl_module_cmd_lookup(cmd)) {
+ MP_INTERP_PUTBACK(interp, aTHX);
return apr_psprintf(p,
"no command function defined for args_how=%d",
cmd->args_how);
@@ -736,6 +731,7 @@
modp->cmds = (command_rec *)cmds->elts;
+ MP_INTERP_PUTBACK(interp, aTHX);
return NULL;
}
@@ -783,13 +779,12 @@
const char *name, SV *mod_cmds)
{
MP_dSCFG(s);
-#ifdef USE_ITHREADS
- dTHXa(scfg->mip->parent->perl);
-#endif
const char *errmsg;
- module *modp = (module *)apr_pcalloc(p, sizeof(*modp));
- modperl_module_info_t *minfo =
- (modperl_module_info_t *)apr_pcalloc(p, sizeof(*minfo));
+ module *modp;
+ modperl_module_info_t *minfo;
+ MP_dINTERPa(NULL, NULL, s);
+ modp = (module *)apr_pcalloc(p, sizeof(*modp));
+ minfo = (modperl_module_info_t *)apr_pcalloc(p, sizeof(*minfo));
/* STANDARD20_MODULE_STUFF */
modp->version = MODULE_MAGIC_NUMBER_MAJOR;
@@ -827,6 +822,7 @@
modp->cmds = NULL;
if ((errmsg = modperl_module_add_cmds(p, s, modp, mod_cmds))) {
+ MP_INTERP_PUTBACK(interp, aTHX);
return errmsg;
}
@@ -855,10 +851,13 @@
*/
if (!modperl_interp_pool_get(p)) {
/* for vhosts */
- modperl_interp_pool_set(p, scfg->mip->parent, FALSE);
+ MP_TRACE_i(MP_FUNC, "set interp 0x%lx in pconf pool 0x%lx",
+ (unsigned long)scfg->mip->parent, (unsigned long)p);
+ modperl_interp_pool_set(p, scfg->mip->parent);
}
#endif
+ MP_INTERP_PUTBACK(interp, aTHX);
return NULL;
}
@@ -903,3 +902,10 @@
return obj;
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_module.h b/src/modules/perl/modperl_module.h
index cec12da..41e8312 100644
--- a/src/modules/perl/modperl_module.h
+++ b/src/modules/perl/modperl_module.h
@@ -28,3 +28,10 @@
ap_conf_vector_t *v);
#endif /* MODPERL_MODULE_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_options.c b/src/modules/perl/modperl_options.c
index ee829ac..5077ec4 100644
--- a/src/modules/perl/modperl_options.c
+++ b/src/modules/perl/modperl_options.c
@@ -148,3 +148,10 @@
return conf;
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_options.h b/src/modules/perl/modperl_options.h
index a95ac18..62d23da 100644
--- a/src/modules/perl/modperl_options.h
+++ b/src/modules/perl/modperl_options.h
@@ -27,3 +27,10 @@
modperl_options_t *new);
#endif /* MODPERL_OPTIONS_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_pcw.c b/src/modules/perl/modperl_pcw.c
index 16f8b06..0c247b0 100644
--- a/src/modules/perl/modperl_pcw.c
+++ b/src/modules/perl/modperl_pcw.c
@@ -140,3 +140,10 @@
}
}
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_pcw.h b/src/modules/perl/modperl_pcw.h
index 456a808..4e97acf 100644
--- a/src/modules/perl/modperl_pcw.h
+++ b/src/modules/perl/modperl_pcw.h
@@ -51,3 +51,10 @@
ap_pcw_dir_cb_t dir_cb, ap_pcw_srv_cb_t srv_cb);
#endif /* MODPERL_PCW_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_perl.c b/src/modules/perl/modperl_perl.c
index 1d17339..dfe4d36 100644
--- a/src/modules/perl/modperl_perl.c
+++ b/src/modules/perl/modperl_perl.c
@@ -280,3 +280,10 @@
}
#endif
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_perl.h b/src/modules/perl/modperl_perl.h
index 5d4c838..d91ab5f 100644
--- a/src/modules/perl/modperl_perl.h
+++ b/src/modules/perl/modperl_perl.h
@@ -62,3 +62,10 @@
#endif
#endif /* MODPERL_PERL_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_perl_global.c b/src/modules/perl/modperl_perl_global.c
index f739e73..f52e42c 100644
--- a/src/modules/perl/modperl_perl_global.c
+++ b/src/modules/perl/modperl_perl_global.c
@@ -494,3 +494,10 @@
MP_perl_global_entries);
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_perl_global.h b/src/modules/perl/modperl_perl_global.h
index 9fb45d2..5f1fc44 100644
--- a/src/modules/perl/modperl_perl_global.h
+++ b/src/modules/perl/modperl_perl_global.h
@@ -89,3 +89,10 @@
const char *package, I32 packlen);
#endif
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_perl_includes.h b/src/modules/perl/modperl_perl_includes.h
index 9cacc5d..51ffd72 100644
--- a/src/modules/perl/modperl_perl_includes.h
+++ b/src/modules/perl/modperl_perl_includes.h
@@ -139,3 +139,10 @@
#endif
#endif /* MODPERL_PERL_INCLUDES_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_perl_pp.c b/src/modules/perl/modperl_perl_pp.c
index b255c68..881d99e 100644
--- a/src/modules/perl/modperl_perl_pp.c
+++ b/src/modules/perl/modperl_perl_pp.c
@@ -113,3 +113,10 @@
modperl_perl_pp_unset(i);
}
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_perl_pp.h b/src/modules/perl/modperl_perl_pp.h
index 39d4a49..2386c3e 100644
--- a/src/modules/perl/modperl_perl_pp.h
+++ b/src/modules/perl/modperl_perl_pp.h
@@ -41,3 +41,10 @@
void modperl_perl_pp_unset_all(void);
#endif /* MODPERL_PERL_PP_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_perl_unembed.h b/src/modules/perl/modperl_perl_unembed.h
index ea13f03..4db14a5 100644
--- a/src/modules/perl/modperl_perl_unembed.h
+++ b/src/modules/perl/modperl_perl_unembed.h
@@ -43,3 +43,10 @@
#undef list
#endif /* MODPERL_PERL_UNEMBED_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_svptr_table.c b/src/modules/perl/modperl_svptr_table.c
index 3b0b344..e63a3b8 100644
--- a/src/modules/perl/modperl_svptr_table.c
+++ b/src/modules/perl/modperl_svptr_table.c
@@ -184,7 +184,7 @@
{
PTR_TBL_ENT_t *tblent;
UV hash = PTR2UV(sv);
- assert(tbl);
+ MP_ASSERT(tbl);
tblent = tbl->tbl_ary[hash & tbl->tbl_max];
for (; tblent; tblent = tblent->next) {
if (tblent->oldval == sv)
@@ -205,7 +205,7 @@
UV hash = PTR2UV(oldv);
bool i = 1;
- assert(tbl);
+ MP_ASSERT(tbl);
otblent = &tbl->tbl_ary[hash & tbl->tbl_max];
for (tblent = *otblent; tblent; i=0, tblent = tblent->next) {
if (tblent->oldval == oldv) {
@@ -303,3 +303,10 @@
Safefree(tbl->tbl_ary);
Safefree(tbl);
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_svptr_table.h b/src/modules/perl/modperl_svptr_table.h
index 3382357..673f643 100644
--- a/src/modules/perl/modperl_svptr_table.h
+++ b/src/modules/perl/modperl_svptr_table.h
@@ -55,3 +55,10 @@
modperl_svptr_table_free(pTHX_ PTR_TBL_t *tbl);
#endif /* MODPERL_SVPTR_TABLE_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_sys.c b/src/modules/perl/modperl_sys.c
index 35cc647..3ce3cbc 100644
--- a/src/modules/perl/modperl_sys.c
+++ b/src/modules/perl/modperl_sys.c
@@ -67,3 +67,10 @@
return 0;
#endif
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_sys.h b/src/modules/perl/modperl_sys.h
index 606b310..a52763a 100644
--- a/src/modules/perl/modperl_sys.h
+++ b/src/modules/perl/modperl_sys.h
@@ -28,3 +28,10 @@
int modperl_sys_dlclose(void *handle);
#endif /* MODPERL_SYS_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_time.h b/src/modules/perl/modperl_time.h
index 4b8a527..bc7cbf8 100644
--- a/src/modules/perl/modperl_time.h
+++ b/src/modules/perl/modperl_time.h
@@ -50,3 +50,10 @@
})
#endif /* MODPERL_TIME_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_tipool.c b/src/modules/perl/modperl_tipool.c
index f6747c1..9cb0ad0 100644
--- a/src/modules/perl/modperl_tipool.c
+++ b/src/modules/perl/modperl_tipool.c
@@ -401,3 +401,10 @@
}
#endif /* USE_ITHREADS */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_tipool.h b/src/modules/perl/modperl_tipool.h
index 4e41e4b..c2d15b8 100644
--- a/src/modules/perl/modperl_tipool.h
+++ b/src/modules/perl/modperl_tipool.h
@@ -87,3 +87,10 @@
#endif /* USE_ITHREADS */
#endif /* MODPERL_TIPOOL_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_types.h b/src/modules/perl/modperl_types.h
index 5bfb5e3..c0c9b53 100644
--- a/src/modules/perl/modperl_types.h
+++ b/src/modules/perl/modperl_types.h
@@ -40,6 +40,8 @@
server_rec *s;
} modperl_rcs_t;
+typedef struct modperl_config_con_t modperl_config_con_t;
+
#ifdef USE_ITHREADS
typedef struct modperl_list_t modperl_list_t;
@@ -52,13 +54,14 @@
typedef struct modperl_interp_t modperl_interp_t;
typedef struct modperl_interp_pool_t modperl_interp_pool_t;
typedef struct modperl_tipool_t modperl_tipool_t;
+typedef struct modperl_tipool_config_t modperl_tipool_config_t;
struct modperl_interp_t {
modperl_interp_pool_t *mip;
PerlInterpreter *perl;
int num_requests;
U8 flags;
- request_rec *request;
+ modperl_config_con_t *ccfg;
int refcnt;
#ifdef MP_TRACE
unsigned long tid;
@@ -79,13 +82,13 @@
modperl_list_t *listp);
} modperl_tipool_vtbl_t;
-typedef struct {
+struct modperl_tipool_config_t {
int start; /* number of items to create at startup */
int min_spare; /* minimum number of spare items */
int max_spare; /* maximum number of spare items */
int max; /* maximum number of items */
int max_requests; /* maximum number of requests per item */
-} modperl_tipool_config_t;
+};
struct modperl_tipool_t {
perl_mutex tiplock;
@@ -240,11 +243,21 @@
int sent_eos;
SV *data;
modperl_handler_t *handler;
- PerlInterpreter *perl;
+#ifdef USE_ITHREADS
+ modperl_interp_t *interp;
+#endif
} modperl_filter_ctx_t;
typedef struct {
HV *pnotes;
+ apr_pool_t *pool;
+#ifdef USE_ITHREADS
+ modperl_interp_t *interp;
+#endif
+} modperl_pnotes_t;
+
+typedef struct {
+ modperl_pnotes_t pnotes;
SV *global_request_obj;
U8 flags;
int status;
@@ -252,14 +265,14 @@
MpAV *handlers_per_dir[MP_HANDLER_NUM_PER_DIR];
MpAV *handlers_per_srv[MP_HANDLER_NUM_PER_SRV];
modperl_perl_globals_t perl_globals;
+} modperl_config_req_t;
+
+struct modperl_config_con_t {
+ modperl_pnotes_t pnotes;
#ifdef USE_ITHREADS
modperl_interp_t *interp;
#endif
-} modperl_config_req_t;
-
-typedef struct {
- HV *pnotes;
-} modperl_config_con_t;
+};
typedef struct {
apr_pool_t *pool;
@@ -279,3 +292,10 @@
} modperl_hook_run_mode_e;
#endif /* MODPERL_TYPES_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_util.c b/src/modules/perl/modperl_util.c
index 2a67030..b7f0436 100644
--- a/src/modules/perl/modperl_util.c
+++ b/src/modules/perl/modperl_util.c
@@ -470,9 +470,8 @@
I32 i, oldscope = PL_scopestack_ix;
SV **ary = AvARRAY(subs);
- MP_TRACE_g(MP_FUNC, "pid %lu" MP_TRACEf_TID MP_TRACEf_PERLID
- " running %d %s subs",
- (unsigned long)getpid(), MP_TRACEv_TID_ MP_TRACEv_PERLID_
+ MP_TRACE_g(MP_FUNC, MP_TRACEf_PERLID
+ " running %d %s subs", MP_TRACEv_PERLID_
AvFILLp(subs)+1, name);
for (i=0; i<=AvFILLp(subs); i++) {
@@ -830,56 +829,44 @@
return data ? *(int *)data : 0;
}
-#ifdef USE_ITHREADS
-typedef struct {
- HV **pnotes;
- PerlInterpreter *perl;
-} modperl_cleanup_pnotes_data_t;
-#endif
-
static MP_INLINE
apr_status_t modperl_cleanup_pnotes(void *data) {
- HV **pnotes = data;
+ modperl_pnotes_t *pnotes = data;
- if (*pnotes) {
-#ifdef USE_ITHREADS
- modperl_cleanup_pnotes_data_t *cleanup_data = data;
- dTHXa(cleanup_data->perl);
- pnotes = cleanup_data->pnotes;
-#else
- pnotes = data;
-#endif
- SvREFCNT_dec(*pnotes);
- *pnotes = (HV *)NULL;
- }
+ dTHXa(pnotes->interp->perl);
+ MP_ASSERT_CONTEXT(aTHX);
+ SvREFCNT_dec(pnotes->pnotes);
+ pnotes->pnotes = NULL;
+ pnotes->pool = NULL;
+
+ MP_INTERP_PUTBACK(pnotes->interp, aTHX);
return APR_SUCCESS;
}
-MP_INLINE
-static void *modperl_pnotes_cleanup_data(pTHX_ HV **pnotes, apr_pool_t *p) {
-#ifdef USE_ITHREADS
- modperl_cleanup_pnotes_data_t *cleanup_data = apr_palloc(p, sizeof(*cleanup_data));
- cleanup_data->pnotes = pnotes;
- cleanup_data->perl = aTHX;
- return cleanup_data;
-#else
- return pnotes;
-#endif
+void modperl_pnotes_kill(void *data) {
+ modperl_pnotes_t *pnotes = data;
+
+ if( !pnotes->pnotes ) return;
+
+ apr_pool_cleanup_kill(pnotes->pool, pnotes, modperl_cleanup_pnotes);
+ modperl_cleanup_pnotes(pnotes);
}
-SV *modperl_pnotes(pTHX_ HV **pnotes, SV *key, SV *val,
- request_rec *r, conn_rec *c) {
+SV *modperl_pnotes(pTHX_ modperl_pnotes_t *pnotes, SV *key, SV *val,
+ apr_pool_t *pool) {
SV *retval = (SV *)NULL;
- if (!*pnotes) {
- apr_pool_t *pool = r ? r->pool : c->pool;
- void *cleanup_data;
- *pnotes = newHV();
-
- cleanup_data = modperl_pnotes_cleanup_data(aTHX_ pnotes, pool);
-
- apr_pool_cleanup_register(pool, cleanup_data,
+ if (!pnotes->pnotes) {
+ pnotes->pool = pool;
+#ifdef USE_ITHREADS
+ pnotes->interp = modperl_thx_interp_get(aTHX);
+ pnotes->interp->refcnt++;
+ MP_TRACE_i(MP_FUNC, "TO: (0x%lx)->refcnt incremented to %ld",
+ pnotes->interp, pnotes->interp->refcnt);
+#endif
+ pnotes->pnotes = newHV();
+ apr_pool_cleanup_register(pool, pnotes,
modperl_cleanup_pnotes,
apr_pool_cleanup_null);
}
@@ -889,15 +876,15 @@
char *k = SvPV(key, len);
if (val) {
- retval = *hv_store(*pnotes, k, len, SvREFCNT_inc(val), 0);
+ retval = *hv_store(pnotes->pnotes, k, len, SvREFCNT_inc(val), 0);
}
- else if (hv_exists(*pnotes, k, len)) {
- retval = *hv_fetch(*pnotes, k, len, FALSE);
+ else if (hv_exists(pnotes->pnotes, k, len)) {
+ retval = *hv_fetch(pnotes->pnotes, k, len, FALSE);
}
return retval ? SvREFCNT_inc(retval) : &PL_sv_undef;
}
- return newRV_inc((SV *)*pnotes);
+ return newRV_inc((SV *)pnotes->pnotes);
}
U16 *modperl_code_attrs(pTHX_ CV *cv) {
@@ -910,3 +897,372 @@
mg = mg_find((SV*)cv, PERL_MAGIC_ext);
return &(mg->mg_private);
}
+
+#if AP_SERVER_MAJORVERSION_NUMBER>2 || \
+ (AP_SERVER_MAJORVERSION_NUMBER == 2 && AP_SERVER_MINORVERSION_NUMBER>=3)
+
+static apr_hash_t *global_authz_providers = NULL;
+static apr_hash_t *global_authn_providers = NULL;
+
+typedef struct {
+ SV *cb1;
+ SV *cb2;
+ modperl_handler_t *cb1_handler;
+ modperl_handler_t *cb2_handler;
+} auth_callback;
+
+static apr_status_t cleanup_perl_global_providers(void *ctx)
+{
+ global_authz_providers = NULL;
+ global_authn_providers = NULL;
+ return APR_SUCCESS;
+}
+
+static authz_status perl_check_authorization(request_rec *r,
+ const char *require_args,
+ const void *parsed_require_args)
+{
+ authz_status ret = AUTHZ_DENIED;
+ int count;
+ AV *args = Nullav;
+ const char *key;
+ auth_callback *ab;
+ MP_dINTERPa(r, NULL, NULL);
+
+ if (global_authz_providers == NULL) {
+ MP_INTERP_PUTBACK(interp, aTHX);
+ return ret;
+ }
+
+ key = apr_table_get(r->notes, AUTHZ_PROVIDER_NAME_NOTE);
+ ab = apr_hash_get(global_authz_providers, key, APR_HASH_KEY_STRING);
+ if (ab == NULL) {
+ MP_INTERP_PUTBACK(interp, aTHX);
+ return ret;
+ }
+
+ if (ab->cb1 == NULL) {
+ if (ab->cb1_handler == NULL) {
+ MP_INTERP_PUTBACK(interp, aTHX);
+ return ret;
+ }
+
+ modperl_handler_make_args(aTHX_ &args, "Apache2::RequestRec", r,
+ "PV", require_args, NULL);
+ ret = modperl_callback(aTHX_ ab->cb1_handler, r->pool, r, r->server,
+ args);
+ SvREFCNT_dec((SV*)args);
+ MP_INTERP_PUTBACK(interp, aTHX);
+ return ret;
+ }
+
+ {
+ dSP;
+ ENTER;
+ SAVETMPS;
+ PUSHMARK(SP);
+ XPUSHs(sv_2mortal(modperl_ptr2obj(aTHX_ "Apache2::RequestRec", r)));
+ XPUSHs(sv_2mortal(newSVpv(require_args, 0)));
+ PUTBACK;
+ count = call_sv(ab->cb1, G_SCALAR);
+ SPAGAIN;
+
+ if (count == 1) {
+ ret = (authz_status) POPi;
+ }
+
+ PUTBACK;
+ FREETMPS;
+ LEAVE;
+ }
+
+ MP_INTERP_PUTBACK(interp, aTHX);
+ return ret;
+}
+
+static const char *perl_parse_require_line(cmd_parms *cmd,
+ const char *require_line,
+ const void **parsed_require_line)
+{
+ char *ret = NULL;
+ void *key;
+ auth_callback *ab;
+
+ if (global_authz_providers == NULL ||
+ apr_hash_count(global_authz_providers) == 0)
+ {
+ return NULL;
+ }
+
+ apr_pool_userdata_get(&key, AUTHZ_PROVIDER_NAME_NOTE, cmd->temp_pool);
+ ab = apr_hash_get(global_authz_providers, (char *) key, APR_HASH_KEY_STRING);
+ if (ab == NULL || ab->cb2 == NULL) {
+ return NULL;
+ }
+
+ {
+ /* PerlAddAuthzProvider currently does not support an optional second
+ * handler, so ab->cb2 should always be NULL above and we will never get
+ * here. If such support is added in the future then this code will be
+ * reached, but cannot succeed in the absence of an interpreter. The
+ * second handler would be called at init to check a Require line for
+ * errors, but in the current design there is no interpreter available
+ * at that time.
+ */
+ MP_dINTERP_POOLa(cmd->pool, cmd->server);
+ if (!MP_HAS_INTERP(interp)) {
+ return "Require handler is not currently supported in this context";
+ }
+
+ {
+ SV *ret_sv;
+ int count;
+ dSP;
+
+ ENTER;
+ SAVETMPS;
+ PUSHMARK(SP);
+ XPUSHs(sv_2mortal(modperl_ptr2obj(aTHX_ "Apache2::CmdParms", cmd)));
+ XPUSHs(sv_2mortal(newSVpv(require_line, 0)));
+ PUTBACK;
+ count = call_sv(ab->cb2, G_SCALAR);
+ SPAGAIN;
+
+ if (count == 1) {
+ ret_sv = POPs;
+ if (SvOK(ret_sv)) {
+ char *tmp = SvPV_nolen(ret_sv);
+ if (*tmp != '\0') {
+ ret = apr_pstrdup(cmd->pool, tmp);
+ }
+ }
+ }
+
+ PUTBACK;
+ FREETMPS;
+ LEAVE;
+ }
+
+ MP_INTERP_PUTBACK(interp, aTHX);
+ }
+ return ret;
+}
+
+static authn_status perl_check_password(request_rec *r, const char *user,
+ const char *password)
+{
+ authn_status ret = AUTH_DENIED;
+ int count;
+ AV *args = Nullav;
+ const char *key;
+ auth_callback *ab;
+ MP_dINTERPa(r, NULL, NULL);
+
+ if (global_authn_providers == NULL) {
+ MP_INTERP_PUTBACK(interp, aTHX);
+ return ret;
+ }
+
+ key = apr_table_get(r->notes, AUTHN_PROVIDER_NAME_NOTE);
+ ab = apr_hash_get(global_authn_providers, key,
+ APR_HASH_KEY_STRING);
+ if (ab == NULL || ab->cb1) {
+ MP_INTERP_PUTBACK(interp, aTHX);
+ return ret;
+ }
+
+ if (ab->cb1 == NULL) {
+ if (ab->cb1_handler == NULL) {
+ MP_INTERP_PUTBACK(interp, aTHX);
+ return ret;
+ }
+
+ modperl_handler_make_args(aTHX_ &args, "Apache2::RequestRec", r,
+ "PV", user,
+ "PV", password, NULL);
+ ret = modperl_callback(aTHX_ ab->cb1_handler, r->pool, r, r->server,
+ args);
+ SvREFCNT_dec((SV*)args);
+ MP_INTERP_PUTBACK(interp, aTHX);
+ return ret;
+ }
+
+ {
+ dSP;
+ ENTER;
+ SAVETMPS;
+ PUSHMARK(SP);
+ XPUSHs(sv_2mortal(modperl_ptr2obj(aTHX_ "Apache2::RequestRec", r)));
+ XPUSHs(sv_2mortal(newSVpv(user, 0)));
+ XPUSHs(sv_2mortal(newSVpv(password, 0)));
+ PUTBACK;
+ count = call_sv(ab->cb1, G_SCALAR);
+ SPAGAIN;
+
+ if (count == 1) {
+ ret = (authn_status) POPi;
+ }
+
+ PUTBACK;
+ FREETMPS;
+ LEAVE;
+ }
+
+ MP_INTERP_PUTBACK(interp, aTHX);
+ return ret;
+}
+
+static authn_status perl_get_realm_hash(request_rec *r, const char *user,
+ const char *realm, char **rethash)
+{
+ authn_status ret = AUTH_USER_NOT_FOUND;
+ const char *key;
+ auth_callback *ab;
+
+ if (global_authn_providers == NULL ||
+ apr_hash_count(global_authn_providers) == 0)
+ {
+ return AUTH_GENERAL_ERROR;
+ }
+
+ key = apr_table_get(r->notes, AUTHN_PROVIDER_NAME_NOTE);
+ ab = apr_hash_get(global_authn_providers, key, APR_HASH_KEY_STRING);
+ if (ab == NULL || ab->cb2 == NULL) {
+ return AUTH_GENERAL_ERROR;
+ }
+
+ {
+ /* PerlAddAuthnProvider currently does not support an optional second
+ * handler, so ab->cb2 should always be NULL above and we will never get
+ * here. If such support is added in the future then this code will be
+ * reached. Unlike the PerlAddAuthzProvider case, the second handler here
+ * would be called during request_rec processing to obtain a password hash
+ * for the realm so there should be no problem grabbing an interpreter.
+ */
+ MP_dINTERPa(r, NULL, NULL);
+
+ {
+ SV* rh = sv_2mortal(newSVpv("", 0));
+ int count;
+ dSP;
+
+ ENTER;
+ SAVETMPS;
+ PUSHMARK(SP);
+ XPUSHs(sv_2mortal(modperl_ptr2obj(aTHX_ "Apache2::RequestRec", r)));
+ XPUSHs(sv_2mortal(newSVpv(user, 0)));
+ XPUSHs(sv_2mortal(newSVpv(realm, 0)));
+ XPUSHs(newRV_noinc(rh));
+ PUTBACK;
+ count = call_sv(ab->cb2, G_SCALAR);
+ SPAGAIN;
+
+ if (count == 1) {
+ const char *tmp = SvPV_nolen(rh);
+ ret = (authn_status) POPi;
+ if (*tmp != '\0') {
+ *rethash = apr_pstrdup(r->pool, tmp);
+ }
+ }
+
+ PUTBACK;
+ FREETMPS;
+ LEAVE;
+ }
+
+ MP_INTERP_PUTBACK(interp, aTHX);
+ }
+
+ return ret;
+}
+
+static const authz_provider authz_perl_provider = { perl_check_authorization,
+ perl_parse_require_line };
+
+static const authn_provider authn_perl_provider = { perl_check_password,
+ perl_get_realm_hash };
+
+static apr_status_t register_auth_provider(apr_pool_t *pool,
+ const char *provider_group,
+ const char *provider_name,
+ const char *provider_version,
+ auth_callback *ab, int type)
+{
+ void *provider_ = NULL;
+
+ if (global_authz_providers == NULL) {
+ global_authz_providers = apr_hash_make(pool);
+ global_authn_providers = apr_hash_make(pool);
+ /* We have to use pre_cleanup here, otherwise this cleanup method
+ * would be called after another cleanup method which unloads
+ * mod_perl module.
+ */
+ apr_pool_pre_cleanup_register(pool, NULL,
+ cleanup_perl_global_providers);
+ }
+
+ if (strcmp(provider_group, AUTHZ_PROVIDER_GROUP) == 0) {
+ provider_ = (void *) &authz_perl_provider;
+ apr_hash_set(global_authz_providers, provider_name,
+ APR_HASH_KEY_STRING, ab);
+ }
+ else {
+ provider_ = (void *) &authn_perl_provider;
+ apr_hash_set(global_authn_providers, provider_name,
+ APR_HASH_KEY_STRING, ab);
+ }
+
+ return ap_register_auth_provider(pool, provider_group, provider_name,
+ provider_version, provider_, type);
+
+}
+
+apr_status_t modperl_register_auth_provider(apr_pool_t *pool,
+ const char *provider_group,
+ const char *provider_name,
+ const char *provider_version,
+ SV *callback1, SV *callback2,
+ int type)
+{
+ char *provider_name_dup;
+ auth_callback *ab = NULL;
+
+ provider_name_dup = apr_pstrdup(pool, provider_name);
+ ab = apr_pcalloc(pool, sizeof(auth_callback));
+ ab->cb1 = callback1;
+ ab->cb2 = callback2;
+
+ return register_auth_provider(pool, provider_group, provider_name_dup,
+ provider_version, ab, type);
+}
+
+apr_status_t modperl_register_auth_provider_name(apr_pool_t *pool,
+ const char *provider_group,
+ const char *provider_name,
+ const char *provider_version,
+ const char *callback1,
+ const char *callback2,
+ int type)
+{
+ char *provider_name_dup;
+ auth_callback *ab = NULL;
+
+ provider_name_dup = apr_pstrdup(pool, provider_name);
+ ab = apr_pcalloc(pool, sizeof(auth_callback));
+ ab->cb1_handler = modperl_handler_new(pool, callback1);
+ if (callback2) {
+ ab->cb2_handler = modperl_handler_new(pool, callback2);
+ }
+
+ return register_auth_provider(pool, provider_group, provider_name_dup,
+ provider_version, ab, type);
+}
+
+#endif /* httpd-2.4 */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/src/modules/perl/modperl_util.h b/src/modules/perl/modperl_util.h
index fcb23c3..83e51d4 100644
--- a/src/modules/perl/modperl_util.h
+++ b/src/modules/perl/modperl_util.h
@@ -101,20 +101,8 @@
apr_array_header_t *modperl_avrv2apr_array_header(pTHX_ apr_pool_t *p,
SV *avrv);
void modperl_package_unload(pTHX_ const char *package);
-#if defined(MP_TRACE) && APR_HAS_THREADS
-#define MP_TRACEf_TID "/tid 0x%lx"
-#define MP_TRACEv_TID (unsigned long)apr_os_thread_current()
-#define MP_TRACEv_TID_ MP_TRACEv_TID,
-#define MP_TRACEv__TID ,MP_TRACEv_TID
-#else
-#define MP_TRACEf_TID
-#define MP_TRACEv_TID
-#define MP_TRACEv_TID_
-#define MP_TRACEv__TID
-#endif /* APR_HAS_THREADS */
-
#if defined(MP_TRACE) && defined(USE_ITHREADS)
-#define MP_TRACEf_PERLID "/perl id 0x%lx"
+#define MP_TRACEf_PERLID "perl id 0x%lx"
#define MP_TRACEv_PERLID (unsigned long)my_perl
#define MP_TRACEv_PERLID_ MP_TRACEv_PERLID,
#define MP_TRACEv__PERLID ,MP_TRACEv_PERLID
@@ -146,9 +134,35 @@
void modperl_restart_count_inc(server_rec *base_server);
int modperl_restart_count(void);
-SV *modperl_pnotes(pTHX_ HV **pnotes, SV *key, SV *val,
- request_rec *r, conn_rec *c);
+void modperl_pnotes_kill(void *data);
+
+SV *modperl_pnotes(pTHX_ modperl_pnotes_t *pnotes, SV *key, SV *val,
+ apr_pool_t *pool );
U16 *modperl_code_attrs(pTHX_ CV *cv);
+#if AP_SERVER_MAJORVERSION_NUMBER>2 || \
+ (AP_SERVER_MAJORVERSION_NUMBER == 2 && AP_SERVER_MINORVERSION_NUMBER>=3)
+apr_status_t
+modperl_register_auth_provider(apr_pool_t *pool, const char *provider_group,
+ const char *provider_name,
+ const char *provider_version, SV *callback1,
+ SV *callback2, int type);
+
+apr_status_t
+modperl_register_auth_provider_name(apr_pool_t *pool,
+ const char *provider_group,
+ const char *provider_name,
+ const char *provider_version,
+ const char *callback1,
+ const char *callback2, int type);
+#endif
+
#endif /* MODPERL_UTIL_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/t/apache/add_config.t b/t/apache/add_config.t
index 976fb8e..90edaec 100644
--- a/t/apache/add_config.t
+++ b/t/apache/add_config.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# the handler is configured in modperl_extra.pl via
# Apache2::ServerUtil->server->add_config
use Apache::TestRequest 'GET_BODY_ASSERT';
diff --git a/t/apache/cgihandler.t b/t/apache/cgihandler.t
index 987f4e9..ace671c 100644
--- a/t/apache/cgihandler.t
+++ b/t/apache/cgihandler.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/apache/constants.t b/t/apache/constants.t
index 97a3e6a..81fe6aa 100644
--- a/t/apache/constants.t
+++ b/t/apache/constants.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use ExtUtils::testlib;
use strict;
use warnings FATAL => 'all';
diff --git a/t/apache/content_length_header.t b/t/apache/content_length_header.t
index 880d256..2b414e4 100644
--- a/t/apache/content_length_header.t
+++ b/t/apache/content_length_header.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/apache/discard_rbody.t b/t/apache/discard_rbody.t
index d59a8e4..49caab0 100644
--- a/t/apache/discard_rbody.t
+++ b/t/apache/discard_rbody.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/apache/post.t b/t/apache/post.t
index 1f4fa4e..ba0f573 100644
--- a/t/apache/post.t
+++ b/t/apache/post.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/apache/read.t b/t/apache/read.t
index d3231ec..83670c9 100644
--- a/t/apache/read.t
+++ b/t/apache/read.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/apache/read2.t b/t/apache/read2.t
index eaf5aa7..fc585d7 100644
--- a/t/apache/read2.t
+++ b/t/apache/read2.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use Apache::TestRequest 'POST_BODY_ASSERT';
print POST_BODY_ASSERT "/TestApache__read2",
content => "foobar";
diff --git a/t/apache/scanhdrs.t b/t/apache/scanhdrs.t
index 583fc28..da305c5 100644
--- a/t/apache/scanhdrs.t
+++ b/t/apache/scanhdrs.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/apache/scanhdrs2.t b/t/apache/scanhdrs2.t
index 466e06d..7956b84 100644
--- a/t/apache/scanhdrs2.t
+++ b/t/apache/scanhdrs2.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/apache/send_cgi_header.t b/t/apache/send_cgi_header.t
index 39c6e0d..6a2bd53 100644
--- a/t/apache/send_cgi_header.t
+++ b/t/apache/send_cgi_header.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/api/access2.t b/t/api/access2.t
index 5421d2e..fc0b0a6 100644
--- a/t/api/access2.t
+++ b/t/api/access2.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
@@ -5,6 +6,8 @@
use Apache::TestUtil;
use Apache::TestRequest;
+if (!have_min_apache_version("2.4.0")) {
+
plan tests => 6, need need_lwp, need_auth, need_access, 'HTML::HeadParser';
my $location = "/TestAPI__access2";
@@ -27,4 +30,9 @@
ok POST_OK $location, username => 'bar', password => 'goopass1',
content => "a";
+}
+else {
+plan tests => 1, need {"mod_perl is not compiled with httpd-2.2" => 0};
+
+}
diff --git a/t/api/access2_24.t b/t/api/access2_24.t
new file mode 100644
index 0000000..5f74ee6
--- /dev/null
+++ b/t/api/access2_24.t
@@ -0,0 +1,37 @@
+use strict;
+use warnings FATAL => 'all';
+
+use Apache::Test;
+use Apache::TestUtil;
+use Apache::TestRequest;
+
+if (have_min_apache_version("2.4.0")) {
+
+plan tests => 6, need need_lwp, need_auth, need_access, 'HTML::HeadParser';
+
+my $location = "/TestAPI__access2";
+
+ok !GET_OK $location;
+
+my $rc = GET_RC $location;
+ok t_cmp $rc, 401, "no credentials passed";
+
+# bad user
+ok !GET_OK $location, username => 'root', password => '1234';
+
+# good user/bad pass
+ok !GET_OK $location, username => 'goo', password => 'foo';
+
+# good user/good pass
+ok GET_OK $location, username => 'goo', password => 'goopass';
+
+# any user/any pass POST works
+ok POST_OK $location, username => 'bar', password => 'goopass1',
+ content => "a";
+
+}
+else {
+
+plan tests => 1, need {"mod_perl is not compiled with httpd-2.4" => 0};
+
+}
diff --git a/t/api/add_config.t b/t/api/add_config.t
index e771143..20a1b7a 100644
--- a/t/api/add_config.t
+++ b/t/api/add_config.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/api/content_encoding.t b/t/api/content_encoding.t
index dbc3370..d030f00 100644
--- a/t/api/content_encoding.t
+++ b/t/api/content_encoding.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/api/custom_response.t b/t/api/custom_response.t
index 979760e..3986008 100644
--- a/t/api/custom_response.t
+++ b/t/api/custom_response.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/api/err_headers_out.t b/t/api/err_headers_out.t
index fb67203..a1eb446 100644
--- a/t/api/err_headers_out.t
+++ b/t/api/err_headers_out.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/api/in_out_filters.t b/t/api/in_out_filters.t
index 529b146..f9aa7a1 100644
--- a/t/api/in_out_filters.t
+++ b/t/api/in_out_filters.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/api/internal_redirect.t b/t/api/internal_redirect.t
index 421f41a..ecdd9bd 100644
--- a/t/api/internal_redirect.t
+++ b/t/api/internal_redirect.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/api/internal_redirect_handler.t b/t/api/internal_redirect_handler.t
index 953a563..26237d1 100644
--- a/t/api/internal_redirect_handler.t
+++ b/t/api/internal_redirect_handler.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/api/lookup_misc.t b/t/api/lookup_misc.t
index f48a578..e73079b 100644
--- a/t/api/lookup_misc.t
+++ b/t/api/lookup_misc.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/api/lookup_uri.t b/t/api/lookup_uri.t
index ad07d44..7864a01 100644
--- a/t/api/lookup_uri.t
+++ b/t/api/lookup_uri.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/api/request_rec.t b/t/api/request_rec.t
index 6011c87..f9163ab 100644
--- a/t/api/request_rec.t
+++ b/t/api/request_rec.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/api/rflush.t b/t/api/rflush.t
index 66b46c5..8f4fca0 100644
--- a/t/api/rflush.t
+++ b/t/api/rflush.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/api/sendfile.t b/t/api/sendfile.t
index 72a520b..6c3d5e5 100644
--- a/t/api/sendfile.t
+++ b/t/api/sendfile.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/api/slurp_filename.t b/t/api/slurp_filename.t
index 0faeae7..b75da7e 100644
--- a/t/api/slurp_filename.t
+++ b/t/api/slurp_filename.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use Apache::TestRequest 'GET_BODY_ASSERT';
# we want r->filename to be "/slurp/slurp.pl", even though the
diff --git a/t/api/status.t b/t/api/status.t
index 6d1b479..534da3b 100644
--- a/t/api/status.t
+++ b/t/api/status.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/apr-ext/base64.t b/t/apr-ext/base64.t
index 9522819..0a6926c 100644
--- a/t/apr-ext/base64.t
+++ b/t/apr-ext/base64.t
@@ -1,4 +1,5 @@
#!perl -T
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/apr-ext/brigade.t b/t/apr-ext/brigade.t
index 30f4304..ce65cda 100644
--- a/t/apr-ext/brigade.t
+++ b/t/apr-ext/brigade.t
@@ -1,4 +1,5 @@
#!perl -T
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/apr-ext/bucket.t b/t/apr-ext/bucket.t
index 8615a27..5f7937f 100644
--- a/t/apr-ext/bucket.t
+++ b/t/apr-ext/bucket.t
@@ -1,4 +1,5 @@
#!perl -T
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/apr-ext/date.t b/t/apr-ext/date.t
index b573bc2..675d5c0 100644
--- a/t/apr-ext/date.t
+++ b/t/apr-ext/date.t
@@ -1,4 +1,5 @@
#!perl -T
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/apr-ext/error.t b/t/apr-ext/error.t
index e6f3650..297637a 100644
--- a/t/apr-ext/error.t
+++ b/t/apr-ext/error.t
@@ -1,4 +1,5 @@
#!perl -T
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/apr-ext/finfo.t b/t/apr-ext/finfo.t
index d927a62..828edee 100644
--- a/t/apr-ext/finfo.t
+++ b/t/apr-ext/finfo.t
@@ -1,4 +1,5 @@
#!perl -T
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/apr-ext/os.t b/t/apr-ext/os.t
index e177a85..bc3ca57 100644
--- a/t/apr-ext/os.t
+++ b/t/apr-ext/os.t
@@ -1,4 +1,5 @@
#!perl -T
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/apr-ext/perlio.t b/t/apr-ext/perlio.t
index 189ef2c..543e57d 100644
--- a/t/apr-ext/perlio.t
+++ b/t/apr-ext/perlio.t
@@ -1,4 +1,5 @@
#!perl -T
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/apr-ext/pool.t b/t/apr-ext/pool.t
index a9a9fd6..a2f9f15 100644
--- a/t/apr-ext/pool.t
+++ b/t/apr-ext/pool.t
@@ -1,4 +1,5 @@
#!perl -T
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/apr-ext/status.t b/t/apr-ext/status.t
index 89d0504..e5232cf 100644
--- a/t/apr-ext/status.t
+++ b/t/apr-ext/status.t
@@ -1,4 +1,5 @@
#!perl -T
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/apr-ext/string.t b/t/apr-ext/string.t
index 7ecaa7f..ec2389f 100644
--- a/t/apr-ext/string.t
+++ b/t/apr-ext/string.t
@@ -1,4 +1,5 @@
#!perl -T
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/apr-ext/table.t b/t/apr-ext/table.t
index ed8ed7c..2e6f599 100644
--- a/t/apr-ext/table.t
+++ b/t/apr-ext/table.t
@@ -1,4 +1,5 @@
#!perl -T
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/apr-ext/threadmutex.t b/t/apr-ext/threadmutex.t
index b40fb1f..64d9d02 100644
--- a/t/apr-ext/threadmutex.t
+++ b/t/apr-ext/threadmutex.t
@@ -1,4 +1,5 @@
#!perl -T
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/apr-ext/threadrwlock.t b/t/apr-ext/threadrwlock.t
index 318cbf1..ba4a5db 100644
--- a/t/apr-ext/threadrwlock.t
+++ b/t/apr-ext/threadrwlock.t
@@ -1,4 +1,5 @@
#!perl -T
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/apr-ext/uri.t b/t/apr-ext/uri.t
index 3f5e693..88d601d 100644
--- a/t/apr-ext/uri.t
+++ b/t/apr-ext/uri.t
@@ -1,4 +1,5 @@
#!perl -T
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/apr-ext/util.t b/t/apr-ext/util.t
index a9e4f98..dd36331 100644
--- a/t/apr-ext/util.t
+++ b/t/apr-ext/util.t
@@ -1,4 +1,5 @@
#!perl -T
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/apr-ext/uuid.t b/t/apr-ext/uuid.t
index d09e9e9..973bb65 100644
--- a/t/apr-ext/uuid.t
+++ b/t/apr-ext/uuid.t
@@ -1,4 +1,5 @@
#!perl -T
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/apr/constants.t b/t/apr/constants.t
index 72b9743..b9921e4 100644
--- a/t/apr/constants.t
+++ b/t/apr/constants.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use ExtUtils::testlib;
use strict;
use warnings FATAL => 'all';
diff --git a/t/apr/pool_lifetime.t b/t/apr/pool_lifetime.t
index d637490..4955c6f 100644
--- a/t/apr/pool_lifetime.t
+++ b/t/apr/pool_lifetime.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/compat/conn_authen.t b/t/compat/conn_authen.t
index b1d163a..880862f 100644
--- a/t/compat/conn_authen.t
+++ b/t/compat/conn_authen.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/compat/request_body.t b/t/compat/request_body.t
index 6ee7029..fc02b9b 100644
--- a/t/compat/request_body.t
+++ b/t/compat/request_body.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/compat/send_fd.t b/t/compat/send_fd.t
index ca24abe..a2e6d97 100644
--- a/t/compat/send_fd.t
+++ b/t/compat/send_fd.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/conf/modperl_extra.pl b/t/conf/modperl_extra.pl
index b82c182..f80e416 100644
--- a/t/conf/modperl_extra.pl
+++ b/t/conf/modperl_extra.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
##########################################################
### IMPORTANT: only things that must be run absolutely ###
### during the config phase should be in this file ###
diff --git a/t/conf/post_config_startup.pl b/t/conf/post_config_startup.pl
index 391a0e2..f8a09fb 100644
--- a/t/conf/post_config_startup.pl
+++ b/t/conf/post_config_startup.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
##########################################################
### this file contains code that should be run on the ###
### server startup but not during the config phase ###
diff --git a/t/directive/perl.t b/t/directive/perl.t
index cb212d5..1ffe3b2 100644
--- a/t/directive/perl.t
+++ b/t/directive/perl.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/directive/perlcleanuphandler.t b/t/directive/perlcleanuphandler.t
new file mode 100644
index 0000000..47bbc1e
--- /dev/null
+++ b/t/directive/perlcleanuphandler.t
@@ -0,0 +1,20 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
+use strict;
+use warnings FATAL => 'all';
+
+use Apache::Test;
+use Apache::TestUtil;
+use Apache::TestRequest 'GET_BODY';
+
+plan tests => 3, need_lwp;
+
+my $module = 'TestDirective::perlcleanuphandler';
+
+Apache::TestRequest::user_agent(reset => 1, keep_alive=>1);
+sub u {Apache::TestRequest::module2url($module, {path=>$_[0]})}
+
+t_debug("connecting to ".u(''));
+ok t_cmp GET_BODY(u('/get?incr')), 'UNDEF', 'before increment';
+ok t_cmp GET_BODY(u('/get')), '1', 'incremented';
+(undef)=GET_BODY(u('/index.html?incr'));
+ok t_cmp GET_BODY(u('/get')), '2', 'incremented again';
diff --git a/t/directive/perlloadmodule2.t b/t/directive/perlloadmodule2.t
index 7a82543..6533011 100644
--- a/t/directive/perlloadmodule2.t
+++ b/t/directive/perlloadmodule2.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/directive/perlloadmodule3.t b/t/directive/perlloadmodule3.t
index 8c1d0dc..8ced2a6 100644
--- a/t/directive/perlloadmodule3.t
+++ b/t/directive/perlloadmodule3.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/directive/perlloadmodule4.t b/t/directive/perlloadmodule4.t
index 5422f88..8efff0f 100644
--- a/t/directive/perlloadmodule4.t
+++ b/t/directive/perlloadmodule4.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/directive/perlloadmodule5.t b/t/directive/perlloadmodule5.t
index 8db4bb9..a466dee 100644
--- a/t/directive/perlloadmodule5.t
+++ b/t/directive/perlloadmodule5.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/directive/perlloadmodule6.t b/t/directive/perlloadmodule6.t
index 087033f..038d148 100644
--- a/t/directive/perlloadmodule6.t
+++ b/t/directive/perlloadmodule6.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/directive/perlmodule.t b/t/directive/perlmodule.t
index 2d3cf9f..e1b3b6f 100644
--- a/t/directive/perlmodule.t
+++ b/t/directive/perlmodule.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# this test tests PerlRequire configuration directive
########################################################################
diff --git a/t/directive/perlrequire.t b/t/directive/perlrequire.t
index e14b6e7..f2b48b5 100644
--- a/t/directive/perlrequire.t
+++ b/t/directive/perlrequire.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# this test tests PerlRequire configuration directive
########################################################################
diff --git a/t/directive/setupenv.t b/t/directive/setupenv.t
index fde3b5c..1778be8 100644
--- a/t/directive/setupenv.t
+++ b/t/directive/setupenv.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/error/runtime.t b/t/error/runtime.t
index e734f08..dd961a5 100644
--- a/t/error/runtime.t
+++ b/t/error/runtime.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/error/syntax.t b/t/error/syntax.t
index b0c374d..81eaa04 100644
--- a/t/error/syntax.t
+++ b/t/error/syntax.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/filter/TestFilter/both_str_con_add.pm b/t/filter/TestFilter/both_str_con_add.pm
index c3d3f75..d2bbbe5 100644
--- a/t/filter/TestFilter/both_str_con_add.pm
+++ b/t/filter/TestFilter/both_str_con_add.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::both_str_con_add;
# insert an input filter which lowers the case of the data
diff --git a/t/filter/TestFilter/both_str_native_remove.pm b/t/filter/TestFilter/both_str_native_remove.pm
index cfd698b..8cb7a3a 100644
--- a/t/filter/TestFilter/both_str_native_remove.pm
+++ b/t/filter/TestFilter/both_str_native_remove.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::both_str_native_remove;
# this tests verifies that we can remove input and output native
diff --git a/t/filter/TestFilter/both_str_req_add.pm b/t/filter/TestFilter/both_str_req_add.pm
index 9bf8989..4f76426 100644
--- a/t/filter/TestFilter/both_str_req_add.pm
+++ b/t/filter/TestFilter/both_str_req_add.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::both_str_req_add;
# insert an input filter which lowers the case of the data
diff --git a/t/filter/TestFilter/both_str_req_mix.pm b/t/filter/TestFilter/both_str_req_mix.pm
index 5c96020..0db61d8 100644
--- a/t/filter/TestFilter/both_str_req_mix.pm
+++ b/t/filter/TestFilter/both_str_req_mix.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::both_str_req_mix;
# this is an elaborated test, where we mix several apache and mod_perl
diff --git a/t/filter/TestFilter/both_str_req_proxy.pm b/t/filter/TestFilter/both_str_req_proxy.pm
index 9e2ba81..8e15816 100644
--- a/t/filter/TestFilter/both_str_req_proxy.pm
+++ b/t/filter/TestFilter/both_str_req_proxy.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::both_str_req_proxy;
# very similar to TestFilter::both_str_req_add, but the request is
diff --git a/t/filter/TestFilter/in_autoload.pm b/t/filter/TestFilter/in_autoload.pm
index 330732f..5595f44 100644
--- a/t/filter/TestFilter/in_autoload.pm
+++ b/t/filter/TestFilter/in_autoload.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::in_autoload;
# test that PerlInputFilterHandler autoloads the module containing the
diff --git a/t/filter/TestFilter/in_bbs_body.pm b/t/filter/TestFilter/in_bbs_body.pm
index 24830e9..3380df1 100644
--- a/t/filter/TestFilter/in_bbs_body.pm
+++ b/t/filter/TestFilter/in_bbs_body.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::in_bbs_body;
use strict;
diff --git a/t/filter/TestFilter/in_bbs_consume.pm b/t/filter/TestFilter/in_bbs_consume.pm
index da05276..b83f2f4 100644
--- a/t/filter/TestFilter/in_bbs_consume.pm
+++ b/t/filter/TestFilter/in_bbs_consume.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::in_bbs_consume;
# this test consumes a chunk of input, then consumes and throws away
diff --git a/t/filter/TestFilter/in_bbs_inject_header.pm b/t/filter/TestFilter/in_bbs_inject_header.pm
index 9b03f08..b09d6f9 100644
--- a/t/filter/TestFilter/in_bbs_inject_header.pm
+++ b/t/filter/TestFilter/in_bbs_inject_header.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::in_bbs_inject_header;
# this filter demonstrates two things:
diff --git a/t/filter/TestFilter/in_bbs_msg.pm b/t/filter/TestFilter/in_bbs_msg.pm
index db2153c..12e0868 100644
--- a/t/filter/TestFilter/in_bbs_msg.pm
+++ b/t/filter/TestFilter/in_bbs_msg.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::in_bbs_msg;
use strict;
diff --git a/t/filter/TestFilter/in_bbs_underrun.pm b/t/filter/TestFilter/in_bbs_underrun.pm
index 70b0196..f8f33bb 100644
--- a/t/filter/TestFilter/in_bbs_underrun.pm
+++ b/t/filter/TestFilter/in_bbs_underrun.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::in_bbs_underrun;
# this test exercises the underrun filter concept. Sometimes filters
diff --git a/t/filter/TestFilter/in_error.pm b/t/filter/TestFilter/in_error.pm
index dbc52e8..633b3a3 100644
--- a/t/filter/TestFilter/in_error.pm
+++ b/t/filter/TestFilter/in_error.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::in_error;
# errors in filters should be properly propogated to httpd
diff --git a/t/filter/TestFilter/in_init_basic.pm b/t/filter/TestFilter/in_init_basic.pm
index 15d52b8..630a511 100644
--- a/t/filter/TestFilter/in_init_basic.pm
+++ b/t/filter/TestFilter/in_init_basic.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::in_init_basic;
use strict;
diff --git a/t/filter/TestFilter/in_str_bin_data.pm b/t/filter/TestFilter/in_str_bin_data.pm
index 999878a..f304f43 100644
--- a/t/filter/TestFilter/in_str_bin_data.pm
+++ b/t/filter/TestFilter/in_str_bin_data.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::in_str_bin_data;
# test that $r->print and $f->print handle binary data correctly
diff --git a/t/filter/TestFilter/in_str_consume.pm b/t/filter/TestFilter/in_str_consume.pm
index 3b773ca..4bd32ce 100644
--- a/t/filter/TestFilter/in_str_consume.pm
+++ b/t/filter/TestFilter/in_str_consume.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::in_str_consume;
# this test verifies that streaming filters framework handles
diff --git a/t/filter/TestFilter/in_str_declined.pm b/t/filter/TestFilter/in_str_declined.pm
index a9d09ed..6b0f17b 100644
--- a/t/filter/TestFilter/in_str_declined.pm
+++ b/t/filter/TestFilter/in_str_declined.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::in_str_declined;
use strict;
diff --git a/t/filter/TestFilter/in_str_declined_read.pm b/t/filter/TestFilter/in_str_declined_read.pm
index 4ec3788..1a242c5 100644
--- a/t/filter/TestFilter/in_str_declined_read.pm
+++ b/t/filter/TestFilter/in_str_declined_read.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::in_str_declined_read;
use strict;
diff --git a/t/filter/TestFilter/in_str_lc.pm b/t/filter/TestFilter/in_str_lc.pm
index b17ec52..60f5a80 100644
--- a/t/filter/TestFilter/in_str_lc.pm
+++ b/t/filter/TestFilter/in_str_lc.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::in_str_lc;
use strict;
diff --git a/t/filter/TestFilter/in_str_msg.pm b/t/filter/TestFilter/in_str_msg.pm
index 9f23ecf..e3a4733 100644
--- a/t/filter/TestFilter/in_str_msg.pm
+++ b/t/filter/TestFilter/in_str_msg.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::in_str_msg;
# test:
diff --git a/t/filter/TestFilter/in_str_sandwich.pm b/t/filter/TestFilter/in_str_sandwich.pm
index d1d14c4..a7a9f19 100644
--- a/t/filter/TestFilter/in_str_sandwich.pm
+++ b/t/filter/TestFilter/in_str_sandwich.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::in_str_sandwich;
# this test verifies whether the filter can pre-insert data (using
diff --git a/t/filter/TestFilter/out_bbs_basic.pm b/t/filter/TestFilter/out_bbs_basic.pm
index fecd9b5..8071992 100644
--- a/t/filter/TestFilter/out_bbs_basic.pm
+++ b/t/filter/TestFilter/out_bbs_basic.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::out_bbs_basic;
use strict;
diff --git a/t/filter/TestFilter/out_bbs_ctx.pm b/t/filter/TestFilter/out_bbs_ctx.pm
index a3c3a48..b6f2175 100644
--- a/t/filter/TestFilter/out_bbs_ctx.pm
+++ b/t/filter/TestFilter/out_bbs_ctx.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::out_bbs_ctx;
# this is the same test as TestFilter::context_stream, but uses the
diff --git a/t/filter/TestFilter/out_bbs_filebucket.pm b/t/filter/TestFilter/out_bbs_filebucket.pm
index 8c01a5f..80f56dd 100644
--- a/t/filter/TestFilter/out_bbs_filebucket.pm
+++ b/t/filter/TestFilter/out_bbs_filebucket.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::out_bbs_filebucket;
# testing how the filter handles file buckets
diff --git a/t/filter/TestFilter/out_init_basic.pm b/t/filter/TestFilter/out_init_basic.pm
index f02e5e3..ccfa876 100644
--- a/t/filter/TestFilter/out_init_basic.pm
+++ b/t/filter/TestFilter/out_init_basic.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::out_init_basic;
use strict;
diff --git a/t/filter/TestFilter/out_str_api.pm b/t/filter/TestFilter/out_str_api.pm
index 2abb5f8..b1c6bb7 100644
--- a/t/filter/TestFilter/out_str_api.pm
+++ b/t/filter/TestFilter/out_str_api.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::out_str_api;
# Test Apache2::FilterRec and Apache2::Filter accessors
diff --git a/t/filter/TestFilter/out_str_buffer.pm b/t/filter/TestFilter/out_str_buffer.pm
index ce1c373..027e10f 100644
--- a/t/filter/TestFilter/out_str_buffer.pm
+++ b/t/filter/TestFilter/out_str_buffer.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::out_str_buffer;
# in this test we want to buffer the data, modify the length of the
diff --git a/t/filter/TestFilter/out_str_ctx.pm b/t/filter/TestFilter/out_str_ctx.pm
index 8a4eeda..762c60b 100644
--- a/t/filter/TestFilter/out_str_ctx.pm
+++ b/t/filter/TestFilter/out_str_ctx.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::out_str_ctx;
# this is the same test as TestFilter::context, but uses the streaming
diff --git a/t/filter/TestFilter/out_str_declined.pm b/t/filter/TestFilter/out_str_declined.pm
index f732bc1..0f4cbf6 100644
--- a/t/filter/TestFilter/out_str_declined.pm
+++ b/t/filter/TestFilter/out_str_declined.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::out_str_declined;
use strict;
diff --git a/t/filter/TestFilter/out_str_eval.pm b/t/filter/TestFilter/out_str_eval.pm
index 83d09dd..0201bcd 100644
--- a/t/filter/TestFilter/out_str_eval.pm
+++ b/t/filter/TestFilter/out_str_eval.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::out_str_eval;
# at some point there was a problem when eval {} in a non-filter
diff --git a/t/filter/TestFilter/out_str_lc.pm b/t/filter/TestFilter/out_str_lc.pm
index 363e881..8325b38 100644
--- a/t/filter/TestFilter/out_str_lc.pm
+++ b/t/filter/TestFilter/out_str_lc.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::out_str_lc;
use strict;
diff --git a/t/filter/TestFilter/out_str_remove.pm b/t/filter/TestFilter/out_str_remove.pm
index dbb775b..cc3d14d 100644
--- a/t/filter/TestFilter/out_str_remove.pm
+++ b/t/filter/TestFilter/out_str_remove.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::out_str_remove;
use strict;
diff --git a/t/filter/TestFilter/out_str_req_eos.pm b/t/filter/TestFilter/out_str_req_eos.pm
index d6a293c..866c8a1 100644
--- a/t/filter/TestFilter/out_str_req_eos.pm
+++ b/t/filter/TestFilter/out_str_req_eos.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::out_str_req_eos;
# here we test how EOS is passed from one streaming filter to another,
diff --git a/t/filter/TestFilter/out_str_req_mix.pm b/t/filter/TestFilter/out_str_req_mix.pm
index e50acfd..771cb09 100644
--- a/t/filter/TestFilter/out_str_req_mix.pm
+++ b/t/filter/TestFilter/out_str_req_mix.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::out_str_req_mix;
# in this test we verify that we can preserve the mixed order of
diff --git a/t/filter/TestFilter/out_str_reverse.pm b/t/filter/TestFilter/out_str_reverse.pm
index b661ede..5237f1f 100644
--- a/t/filter/TestFilter/out_str_reverse.pm
+++ b/t/filter/TestFilter/out_str_reverse.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::out_str_reverse;
# this filter tests how the data can be set-aside between filter
diff --git a/t/filter/TestFilter/out_str_subreq_default.pm b/t/filter/TestFilter/out_str_subreq_default.pm
index 9589dc3..2ffcc0f 100644
--- a/t/filter/TestFilter/out_str_subreq_default.pm
+++ b/t/filter/TestFilter/out_str_subreq_default.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::out_str_subreq_default;
use strict;
diff --git a/t/filter/TestFilter/out_str_subreq_modperl.pm b/t/filter/TestFilter/out_str_subreq_modperl.pm
index fa82a97..ba3b4a4 100644
--- a/t/filter/TestFilter/out_str_subreq_modperl.pm
+++ b/t/filter/TestFilter/out_str_subreq_modperl.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::out_str_subreq_modperl;
use strict;
diff --git a/t/filter/both_str_con_add.t b/t/filter/both_str_con_add.t
index 9a72856..1937406 100644
--- a/t/filter/both_str_con_add.t
+++ b/t/filter/both_str_con_add.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/filter/both_str_native_remove.t b/t/filter/both_str_native_remove.t
index 6ff381e..4dbc1c1 100644
--- a/t/filter/both_str_native_remove.t
+++ b/t/filter/both_str_native_remove.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/filter/both_str_req_add.t b/t/filter/both_str_req_add.t
index 4606e3a..867ebf8 100644
--- a/t/filter/both_str_req_add.t
+++ b/t/filter/both_str_req_add.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/filter/both_str_req_mix.t b/t/filter/both_str_req_mix.t
index 71562aa..fa44462 100644
--- a/t/filter/both_str_req_mix.t
+++ b/t/filter/both_str_req_mix.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/filter/both_str_req_proxy.t b/t/filter/both_str_req_proxy.t
index 9d59721..e0cc065 100644
--- a/t/filter/both_str_req_proxy.t
+++ b/t/filter/both_str_req_proxy.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/filter/in_autoload.t b/t/filter/in_autoload.t
index a15db45..d57ae30 100644
--- a/t/filter/in_autoload.t
+++ b/t/filter/in_autoload.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/filter/in_bbs_body.t b/t/filter/in_bbs_body.t
index 9816662..8ca5e5c 100644
--- a/t/filter/in_bbs_body.t
+++ b/t/filter/in_bbs_body.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/filter/in_bbs_consume.t b/t/filter/in_bbs_consume.t
index a39c9fc..3defa2b 100644
--- a/t/filter/in_bbs_consume.t
+++ b/t/filter/in_bbs_consume.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/filter/in_bbs_inject_header.t b/t/filter/in_bbs_inject_header.t
index fea5f94..e45b047 100644
--- a/t/filter/in_bbs_inject_header.t
+++ b/t/filter/in_bbs_inject_header.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/filter/in_bbs_msg.t b/t/filter/in_bbs_msg.t
index 2e3c1b3..02a3027 100644
--- a/t/filter/in_bbs_msg.t
+++ b/t/filter/in_bbs_msg.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use Apache::Test ();
use Apache::TestUtil;
diff --git a/t/filter/in_bbs_underrun.t b/t/filter/in_bbs_underrun.t
index 86a5716..70e999b 100644
--- a/t/filter/in_bbs_underrun.t
+++ b/t/filter/in_bbs_underrun.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/filter/in_error.t b/t/filter/in_error.t
index ce40e78..0ac9662 100644
--- a/t/filter/in_error.t
+++ b/t/filter/in_error.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/filter/in_init_basic.t b/t/filter/in_init_basic.t
index a24f12c..a82ffaa 100644
--- a/t/filter/in_init_basic.t
+++ b/t/filter/in_init_basic.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/filter/in_str_bin_data.t b/t/filter/in_str_bin_data.t
index 5abd826..da801bd 100644
--- a/t/filter/in_str_bin_data.t
+++ b/t/filter/in_str_bin_data.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/filter/in_str_consume.t b/t/filter/in_str_consume.t
index 2aaa11a..7ad619d 100644
--- a/t/filter/in_str_consume.t
+++ b/t/filter/in_str_consume.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/filter/in_str_declined.t b/t/filter/in_str_declined.t
index 70754c0..f22db3b 100644
--- a/t/filter/in_str_declined.t
+++ b/t/filter/in_str_declined.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/filter/in_str_declined_read.t b/t/filter/in_str_declined_read.t
index f92d4ec..94b6618 100644
--- a/t/filter/in_str_declined_read.t
+++ b/t/filter/in_str_declined_read.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/filter/in_str_lc.t b/t/filter/in_str_lc.t
index 0ce0d06..e2dceaf 100644
--- a/t/filter/in_str_lc.t
+++ b/t/filter/in_str_lc.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/filter/in_str_msg.t b/t/filter/in_str_msg.t
index 2244850..74a781f 100644
--- a/t/filter/in_str_msg.t
+++ b/t/filter/in_str_msg.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use Apache::Test ();
use Apache::TestUtil;
diff --git a/t/filter/in_str_sandwich.t b/t/filter/in_str_sandwich.t
index c02f158..a9d7ef6 100644
--- a/t/filter/in_str_sandwich.t
+++ b/t/filter/in_str_sandwich.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/filter/out_apache.t b/t/filter/out_apache.t
index b3d1e1b..79c1325 100644
--- a/t/filter/out_apache.t
+++ b/t/filter/out_apache.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# test the situation where a native apache response filter is
# configured outside the <Location> block with PerlSet*Filter
# directive. In this case we need to make sure that mod_perl doesn't
diff --git a/t/filter/out_bbs_ctx.t b/t/filter/out_bbs_ctx.t
index ec26c4b..8e16c98 100644
--- a/t/filter/out_bbs_ctx.t
+++ b/t/filter/out_bbs_ctx.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/filter/out_bbs_filebucket.t b/t/filter/out_bbs_filebucket.t
index 4419614..53cd409 100644
--- a/t/filter/out_bbs_filebucket.t
+++ b/t/filter/out_bbs_filebucket.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/filter/out_init_basic.t b/t/filter/out_init_basic.t
index 8af052f..ac879f7 100644
--- a/t/filter/out_init_basic.t
+++ b/t/filter/out_init_basic.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/filter/out_str_buffer.t b/t/filter/out_str_buffer.t
index 69d88f2..1b48c82 100644
--- a/t/filter/out_str_buffer.t
+++ b/t/filter/out_str_buffer.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/filter/out_str_ctx.t b/t/filter/out_str_ctx.t
index da11936..4f1f44b 100644
--- a/t/filter/out_str_ctx.t
+++ b/t/filter/out_str_ctx.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/filter/out_str_declined.t b/t/filter/out_str_declined.t
index ea2dd5e..488cadd 100644
--- a/t/filter/out_str_declined.t
+++ b/t/filter/out_str_declined.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/filter/out_str_lc.t b/t/filter/out_str_lc.t
index 72a0c96..710c2e5 100644
--- a/t/filter/out_str_lc.t
+++ b/t/filter/out_str_lc.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/filter/out_str_remove.t b/t/filter/out_str_remove.t
index 22cb459..0740136 100644
--- a/t/filter/out_str_remove.t
+++ b/t/filter/out_str_remove.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/filter/out_str_req_eos.t b/t/filter/out_str_req_eos.t
index 8e13f43..3e09ee1 100644
--- a/t/filter/out_str_req_eos.t
+++ b/t/filter/out_str_req_eos.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/filter/out_str_req_mix.t b/t/filter/out_str_req_mix.t
index 9d2e80d..d7d839d 100644
--- a/t/filter/out_str_req_mix.t
+++ b/t/filter/out_str_req_mix.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/filter/out_str_reverse.t b/t/filter/out_str_reverse.t
index 41bc353..8513dac 100644
--- a/t/filter/out_str_reverse.t
+++ b/t/filter/out_str_reverse.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/filter/out_str_subreq_default.t b/t/filter/out_str_subreq_default.t
index fa78e68..1f408e5 100644
--- a/t/filter/out_str_subreq_default.t
+++ b/t/filter/out_str_subreq_default.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/filter/out_str_subreq_modperl.t b/t/filter/out_str_subreq_modperl.t
index 847f734..9b1a875 100644
--- a/t/filter/out_str_subreq_modperl.t
+++ b/t/filter/out_str_subreq_modperl.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/hooks/TestHooks/access.pm b/t/hooks/TestHooks/access.pm
index 73c30b8..e78c974 100644
--- a/t/hooks/TestHooks/access.pm
+++ b/t/hooks/TestHooks/access.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestHooks::access;
# demonstrates the phases execution (sometimes users claim that
diff --git a/t/hooks/TestHooks/authen_basic.pm b/t/hooks/TestHooks/authen_basic.pm
index 3ebc689..a7ba01e 100644
--- a/t/hooks/TestHooks/authen_basic.pm
+++ b/t/hooks/TestHooks/authen_basic.pm
@@ -1,11 +1,16 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestHooks::authen_basic;
use strict;
use warnings FATAL => 'all';
+use Apache::Test;
+use Apache::TestUtil;
+
use Apache2::Access ();
use Apache2::Const -compile => qw(OK HTTP_UNAUTHORIZED SERVER_ERROR);
+use constant APACHE24 => have_min_apache_version('2.4.0');
sub handler {
my $r = shift;
@@ -16,9 +21,13 @@
my $user = $r->user;
- my $requirement = $r->requires->[0]->{requirement};
-
- return Apache2::Const::SERVER_ERROR unless $requirement eq 'valid-user';
+ # We don't have to check for valid-user in 2.4.0+. If there is bug
+ # in require valid-user handling, it will result in failed test with
+ # bad username/password.
+ if (!APACHE24) {
+ my $requirement = $r->requires->[0]->{requirement};
+ return Apache2::Const::SERVER_ERROR unless $requirement eq 'valid-user';
+ }
unless ($user eq 'dougm' and $sent_pw eq 'foo') {
$r->note_basic_auth_failure;
diff --git a/t/hooks/TestHooks/authen_digest.pm b/t/hooks/TestHooks/authen_digest.pm
index 35110d2..9ccc396 100644
--- a/t/hooks/TestHooks/authen_digest.pm
+++ b/t/hooks/TestHooks/authen_digest.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestHooks::authen_digest;
use strict;
@@ -21,6 +22,9 @@
return Apache2::Const::HTTP_UNAUTHORIZED;
}
+ $r->user("user");
+ $r->ap_auth_type("Digest");
+
return Apache2::Const::OK;
}
diff --git a/t/hooks/TestHooks/authz.pm b/t/hooks/TestHooks/authz.pm
index cb9abcd..1134eb3 100644
--- a/t/hooks/TestHooks/authz.pm
+++ b/t/hooks/TestHooks/authz.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestHooks::authz;
use strict;
@@ -8,6 +9,7 @@
use Apache2::Const -compile => qw(OK HTTP_UNAUTHORIZED);
sub auth_any {
+ my $self = shift;
my $r = shift;
my ($res, $sent_pw) = $r->get_basic_auth_pw;
@@ -30,9 +32,7 @@
return Apache2::Const::HTTP_UNAUTHORIZED unless $user;
- my ($u, @allowed) = split /\s+/, $r->requires->[0]->{requirement};
-
- return Apache2::Const::HTTP_UNAUTHORIZED unless grep { $_ eq $user } @allowed;
+ return Apache2::Const::HTTP_UNAUTHORIZED unless "dougm" eq $user;
Apache2::Const::OK;
}
@@ -43,6 +43,6 @@
AuthType Basic
AuthName simple
PerlModule TestHooks::authz
-PerlAuthenHandler TestHooks::authz::auth_any
+PerlAuthenHandler TestHooks::authz->auth_any
PerlResponseHandler Apache::TestHandler::ok1
SetHandler modperl
diff --git a/t/hooks/TestHooks/cleanup.pm b/t/hooks/TestHooks/cleanup.pm
index d08b5b7..f493e24 100644
--- a/t/hooks/TestHooks/cleanup.pm
+++ b/t/hooks/TestHooks/cleanup.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestHooks::cleanup;
# test various ways to assign cleanup handlers
diff --git a/t/hooks/TestHooks/cleanup2.pm b/t/hooks/TestHooks/cleanup2.pm
index 02fbee1..1c68dfa 100644
--- a/t/hooks/TestHooks/cleanup2.pm
+++ b/t/hooks/TestHooks/cleanup2.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestHooks::cleanup2;
# test the cleanup handler removing a temp file
diff --git a/t/hooks/TestHooks/error.pm b/t/hooks/TestHooks/error.pm
index 61452f4..6ce74fd 100644
--- a/t/hooks/TestHooks/error.pm
+++ b/t/hooks/TestHooks/error.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestHooks::error;
use strict;
diff --git a/t/hooks/TestHooks/fixup.pm b/t/hooks/TestHooks/fixup.pm
index f3f19b3..80d6fff 100644
--- a/t/hooks/TestHooks/fixup.pm
+++ b/t/hooks/TestHooks/fixup.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestHooks::fixup;
use strict;
diff --git a/t/hooks/TestHooks/headerparser.pm b/t/hooks/TestHooks/headerparser.pm
index 83f59fd..780bf78 100644
--- a/t/hooks/TestHooks/headerparser.pm
+++ b/t/hooks/TestHooks/headerparser.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestHooks::headerparser;
use strict;
diff --git a/t/hooks/TestHooks/hookrun.pm b/t/hooks/TestHooks/hookrun.pm
index dee6fc9..c842ee9 100644
--- a/t/hooks/TestHooks/hookrun.pm
+++ b/t/hooks/TestHooks/hookrun.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestHooks::hookrun;
# this test runs all Apache phases from within the very first http
diff --git a/t/hooks/TestHooks/init.pm b/t/hooks/TestHooks/init.pm
index d61932d..dada6a8 100644
--- a/t/hooks/TestHooks/init.pm
+++ b/t/hooks/TestHooks/init.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestHooks::init;
use strict;
diff --git a/t/hooks/TestHooks/inlined_handlers.pm b/t/hooks/TestHooks/inlined_handlers.pm
index 87fbfa2..be25837 100644
--- a/t/hooks/TestHooks/inlined_handlers.pm
+++ b/t/hooks/TestHooks/inlined_handlers.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestHooks::inlined_handlers;
# this test exercises httpd.conf inlined one-liner handlers, like:
diff --git a/t/hooks/TestHooks/push_handlers.pm b/t/hooks/TestHooks/push_handlers.pm
index 4e21b9f..2d85f6d 100644
--- a/t/hooks/TestHooks/push_handlers.pm
+++ b/t/hooks/TestHooks/push_handlers.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestHooks::push_handlers;
# test various ways to push handlers
diff --git a/t/hooks/TestHooks/push_handlers_anon.pm b/t/hooks/TestHooks/push_handlers_anon.pm
index 62977be..abfd028 100644
--- a/t/hooks/TestHooks/push_handlers_anon.pm
+++ b/t/hooks/TestHooks/push_handlers_anon.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestHooks::push_handlers_anon;
# in addition to other anon sub handler tests in push_handlers*, here
diff --git a/t/hooks/TestHooks/push_handlers_blessed.pm b/t/hooks/TestHooks/push_handlers_blessed.pm
index 9b1996a..0a5dd53 100644
--- a/t/hooks/TestHooks/push_handlers_blessed.pm
+++ b/t/hooks/TestHooks/push_handlers_blessed.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestHooks::push_handlers_blessed;
# test that we
diff --git a/t/hooks/TestHooks/push_handlers_same_phase.pm b/t/hooks/TestHooks/push_handlers_same_phase.pm
index 52dce86..6584e12 100644
--- a/t/hooks/TestHooks/push_handlers_same_phase.pm
+++ b/t/hooks/TestHooks/push_handlers_same_phase.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestHooks::push_handlers_same_phase;
# test that we
diff --git a/t/hooks/TestHooks/set_handlers.pm b/t/hooks/TestHooks/set_handlers.pm
index 59f9581..f64dbf1 100644
--- a/t/hooks/TestHooks/set_handlers.pm
+++ b/t/hooks/TestHooks/set_handlers.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestHooks::set_handlers;
# test various ways to reset/unset handlers list
diff --git a/t/hooks/TestHooks/stacked_handlers.pm b/t/hooks/TestHooks/stacked_handlers.pm
index 7cd6fc6..e74a974 100644
--- a/t/hooks/TestHooks/stacked_handlers.pm
+++ b/t/hooks/TestHooks/stacked_handlers.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestHooks::stacked_handlers;
# this test exercises the execution of the stacked handlers and test
diff --git a/t/hooks/TestHooks/stacked_handlers2.pm b/t/hooks/TestHooks/stacked_handlers2.pm
index bb0a369..25f1ca7 100644
--- a/t/hooks/TestHooks/stacked_handlers2.pm
+++ b/t/hooks/TestHooks/stacked_handlers2.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestHooks::stacked_handlers2;
# this test exercises the execution of the stacked handlers
@@ -24,6 +25,17 @@
return Apache2::Const::OK;
}
+sub ok_authen {
+
+ my $r = shift;
+ callback($r);
+
+ $r->user("user");
+ $r->ap_auth_type("Basic");
+
+ return Apache2::Const::OK;
+}
+
sub declined {
callback(shift);
@@ -168,7 +180,7 @@
PerlAccessHandler TestHooks::stacked_handlers2::ok TestHooks::stacked_handlers2::ok
# 2 run, 1 left behind
- PerlAuthenHandler TestHooks::stacked_handlers2::declined TestHooks::stacked_handlers2::ok
+ PerlAuthenHandler TestHooks::stacked_handlers2::declined TestHooks::stacked_handlers2::ok_authen
PerlAuthenHandler TestHooks::stacked_handlers2::auth_required
# 2 run, 1 left behind
diff --git a/t/hooks/TestHooks/startup.pm b/t/hooks/TestHooks/startup.pm
index d3cd631..ecceeba 100644
--- a/t/hooks/TestHooks/startup.pm
+++ b/t/hooks/TestHooks/startup.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestHooks::startup;
# test PerlPostConfigHandler and PerlOpenLogsHandler phases
diff --git a/t/hooks/TestHooks/trans.pm b/t/hooks/TestHooks/trans.pm
index 20cea21..279fd5c 100644
--- a/t/hooks/TestHooks/trans.pm
+++ b/t/hooks/TestHooks/trans.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestHooks::trans;
use strict;
diff --git a/t/hooks/access.t b/t/hooks/access.t
index 0b3a132..3266a3c 100644
--- a/t/hooks/access.t
+++ b/t/hooks/access.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/hooks/authen_basic.t b/t/hooks/authen_basic.t
index ba6558c..759d010 100644
--- a/t/hooks/authen_basic.t
+++ b/t/hooks/authen_basic.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/hooks/authen_digest.t b/t/hooks/authen_digest.t
index 2a54726..b789b8b 100644
--- a/t/hooks/authen_digest.t
+++ b/t/hooks/authen_digest.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/hooks/authz.t b/t/hooks/authz.t
index 4458a7c..5ad3b8e 100644
--- a/t/hooks/authz.t
+++ b/t/hooks/authz.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/hooks/cleanup.t b/t/hooks/cleanup.t
index f6102be..d47554b 100644
--- a/t/hooks/cleanup.t
+++ b/t/hooks/cleanup.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/hooks/cleanup2.t b/t/hooks/cleanup2.t
index ea51c4d..fcd9e74 100644
--- a/t/hooks/cleanup2.t
+++ b/t/hooks/cleanup2.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/hooks/error.t b/t/hooks/error.t
index a562c5d..160d43a 100644
--- a/t/hooks/error.t
+++ b/t/hooks/error.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/hooks/hookrun.t b/t/hooks/hookrun.t
index fcd0311..d1c44f1 100644
--- a/t/hooks/hookrun.t
+++ b/t/hooks/hookrun.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/hooks/init.t b/t/hooks/init.t
index 9476b30..e7355ae 100644
--- a/t/hooks/init.t
+++ b/t/hooks/init.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/hooks/inlined_handlers.t b/t/hooks/inlined_handlers.t
index 59d3c11..2aa7f6d 100644
--- a/t/hooks/inlined_handlers.t
+++ b/t/hooks/inlined_handlers.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/hooks/push_handlers.t b/t/hooks/push_handlers.t
index 17cbf18..c4656b6 100644
--- a/t/hooks/push_handlers.t
+++ b/t/hooks/push_handlers.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/hooks/push_handlers_anon.t b/t/hooks/push_handlers_anon.t
index 8e4f721..5c39d92 100644
--- a/t/hooks/push_handlers_anon.t
+++ b/t/hooks/push_handlers_anon.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# the handler is configured in modperl_extra.pl via
# Apache2::ServerUtil->server->add_config
diff --git a/t/hooks/stacked_handlers.t b/t/hooks/stacked_handlers.t
index 3eb9e6e..6d6f242 100644
--- a/t/hooks/stacked_handlers.t
+++ b/t/hooks/stacked_handlers.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/hooks/stacked_handlers2.t b/t/hooks/stacked_handlers2.t
index 28f592c..9c29d12 100644
--- a/t/hooks/stacked_handlers2.t
+++ b/t/hooks/stacked_handlers2.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/hooks/startup.t b/t/hooks/startup.t
index d3c9395..7e2c218 100644
--- a/t/hooks/startup.t
+++ b/t/hooks/startup.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/hooks/trans.t b/t/hooks/trans.t
index afc6611..95b21e9 100644
--- a/t/hooks/trans.t
+++ b/t/hooks/trans.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/htdocs/api/slurp.pl b/t/htdocs/api/slurp.pl
index abd8782..43adae0 100644
--- a/t/htdocs/api/slurp.pl
+++ b/t/htdocs/api/slurp.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
my $z = <<EOI;
English: Internet
Hebrew : \x{05D0}\x{05D9}\x{05E0}\x{05D8}\x{05E8}\x{05E0}\x{05D8}
diff --git a/t/htdocs/includes-registry/cgipm.pl b/t/htdocs/includes-registry/cgipm.pl
index ba0be67..1f2b824 100755
--- a/t/htdocs/includes-registry/cgipm.pl
+++ b/t/htdocs/includes-registry/cgipm.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use Apache2::compat ();
use CGI ();
diff --git a/t/htdocs/includes-registry/test.pl b/t/htdocs/includes-registry/test.pl
index 61257d6..87d29cc 100755
--- a/t/htdocs/includes-registry/test.pl
+++ b/t/htdocs/includes-registry/test.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
print "Content-type: text/html\n\n";
print "Hello World<br>\n";
diff --git a/t/htdocs/modperl/setupenv2/config_require.pl b/t/htdocs/modperl/setupenv2/config_require.pl
index a79e178..c1a7709 100644
--- a/t/htdocs/modperl/setupenv2/config_require.pl
+++ b/t/htdocs/modperl/setupenv2/config_require.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
TestModperl::setupenv2::register_mixed();
TestModperl::setupenv2::register_perl();
$ENV{EnvChangeMixedTest} = "config_require";
diff --git a/t/htdocs/modperl/setupenv2/module.pm b/t/htdocs/modperl/setupenv2/module.pm
index e4b54f8..df7c5f2 100644
--- a/t/htdocs/modperl/setupenv2/module.pm
+++ b/t/htdocs/modperl/setupenv2/module.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package htdocs::modperl::setupenv2::module;
TestModperl::setupenv2::register_mixed();
TestModperl::setupenv2::register_perl();
diff --git a/t/htdocs/modperl/setupenv2/post_config_require.pl b/t/htdocs/modperl/setupenv2/post_config_require.pl
index ae51c4c..d75fefb 100644
--- a/t/htdocs/modperl/setupenv2/post_config_require.pl
+++ b/t/htdocs/modperl/setupenv2/post_config_require.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
TestModperl::setupenv2::register_mixed();
TestModperl::setupenv2::register_perl();
$ENV{EnvChangeMixedTest} = "post_config_require";
diff --git a/t/htdocs/modperl/setupenv2/require.pl b/t/htdocs/modperl/setupenv2/require.pl
index 36712b1..417f471 100644
--- a/t/htdocs/modperl/setupenv2/require.pl
+++ b/t/htdocs/modperl/setupenv2/require.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
TestModperl::setupenv2::register_mixed();
TestModperl::setupenv2::register_perl();
$ENV{EnvChangeMixedTest} = "require";
diff --git a/t/htdocs/vhost/post_config.pl b/t/htdocs/vhost/post_config.pl
index 13e2b37..472f80f 100644
--- a/t/htdocs/vhost/post_config.pl
+++ b/t/htdocs/vhost/post_config.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/htdocs/vhost/startup.pl b/t/htdocs/vhost/startup.pl
index ae2b8eb..ae156e6 100644
--- a/t/htdocs/vhost/startup.pl
+++ b/t/htdocs/vhost/startup.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use warnings;
use strict;
diff --git a/t/lib/TestAPRlib/base64.pm b/t/lib/TestAPRlib/base64.pm
index 713fc82..1867a4a 100644
--- a/t/lib/TestAPRlib/base64.pm
+++ b/t/lib/TestAPRlib/base64.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPRlib::base64;
# testing APR::Base64 API
diff --git a/t/lib/TestAPRlib/brigade.pm b/t/lib/TestAPRlib/brigade.pm
index d4619a0..5fdcc4c 100644
--- a/t/lib/TestAPRlib/brigade.pm
+++ b/t/lib/TestAPRlib/brigade.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPRlib::brigade;
# testing APR::Brigade in this tests.
diff --git a/t/lib/TestAPRlib/bucket.pm b/t/lib/TestAPRlib/bucket.pm
index 3c274c8..2e9b542 100644
--- a/t/lib/TestAPRlib/bucket.pm
+++ b/t/lib/TestAPRlib/bucket.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPRlib::bucket;
# a mix of APR::Bucket and APR::BucketType tests
diff --git a/t/lib/TestAPRlib/date.pm b/t/lib/TestAPRlib/date.pm
index dafd53c..2f3dd80 100644
--- a/t/lib/TestAPRlib/date.pm
+++ b/t/lib/TestAPRlib/date.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPRlib::date;
# testing APR::Date API
diff --git a/t/lib/TestAPRlib/error.pm b/t/lib/TestAPRlib/error.pm
index 869518e..233045c 100644
--- a/t/lib/TestAPRlib/error.pm
+++ b/t/lib/TestAPRlib/error.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPRlib::error;
# testing APR::Error API
diff --git a/t/lib/TestAPRlib/finfo.pm b/t/lib/TestAPRlib/finfo.pm
index 7d7c030..283c672 100644
--- a/t/lib/TestAPRlib/finfo.pm
+++ b/t/lib/TestAPRlib/finfo.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPRlib::finfo;
use strict;
diff --git a/t/lib/TestAPRlib/os.pm b/t/lib/TestAPRlib/os.pm
index bd6de22..12344fb 100644
--- a/t/lib/TestAPRlib/os.pm
+++ b/t/lib/TestAPRlib/os.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPRlib::os;
# testing APR::OS API
diff --git a/t/lib/TestAPRlib/pool.pm b/t/lib/TestAPRlib/pool.pm
index 5c542e4..519cba7 100644
--- a/t/lib/TestAPRlib/pool.pm
+++ b/t/lib/TestAPRlib/pool.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPRlib::pool;
use strict;
diff --git a/t/lib/TestAPRlib/status.pm b/t/lib/TestAPRlib/status.pm
index 9ba6377..6bf7f50 100644
--- a/t/lib/TestAPRlib/status.pm
+++ b/t/lib/TestAPRlib/status.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPRlib::status;
# Testing APR::Status
diff --git a/t/lib/TestAPRlib/string.pm b/t/lib/TestAPRlib/string.pm
index 290fae5..9185e3b 100644
--- a/t/lib/TestAPRlib/string.pm
+++ b/t/lib/TestAPRlib/string.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPRlib::string;
use strict;
diff --git a/t/lib/TestAPRlib/table.pm b/t/lib/TestAPRlib/table.pm
index 1e1e2a2..3310674 100644
--- a/t/lib/TestAPRlib/table.pm
+++ b/t/lib/TestAPRlib/table.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPRlib::table;
# testing APR::Table API
diff --git a/t/lib/TestAPRlib/threadmutex.pm b/t/lib/TestAPRlib/threadmutex.pm
index 62c7dd4..c632a21 100644
--- a/t/lib/TestAPRlib/threadmutex.pm
+++ b/t/lib/TestAPRlib/threadmutex.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPRlib::threadmutex;
use strict;
diff --git a/t/lib/TestAPRlib/threadrwlock.pm b/t/lib/TestAPRlib/threadrwlock.pm
index 7785e56..df07afb 100644
--- a/t/lib/TestAPRlib/threadrwlock.pm
+++ b/t/lib/TestAPRlib/threadrwlock.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPRlib::threadrwlock;
use strict;
diff --git a/t/lib/TestAPRlib/uri.pm b/t/lib/TestAPRlib/uri.pm
index 78aacf5..a68ad77 100644
--- a/t/lib/TestAPRlib/uri.pm
+++ b/t/lib/TestAPRlib/uri.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPRlib::uri;
# Testing APR::URI (more tests in TestAPI::uri)
diff --git a/t/lib/TestAPRlib/util.pm b/t/lib/TestAPRlib/util.pm
index e5b4c7e..cd5f761 100644
--- a/t/lib/TestAPRlib/util.pm
+++ b/t/lib/TestAPRlib/util.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPRlib::util;
# test APR::Util
diff --git a/t/lib/TestAPRlib/uuid.pm b/t/lib/TestAPRlib/uuid.pm
index f0325b0..8942c79 100644
--- a/t/lib/TestAPRlib/uuid.pm
+++ b/t/lib/TestAPRlib/uuid.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPRlib::uuid;
use strict;
diff --git a/t/lib/TestCommon/FilterDebug.pm b/t/lib/TestCommon/FilterDebug.pm
index 9856b51..8836f15 100644
--- a/t/lib/TestCommon/FilterDebug.pm
+++ b/t/lib/TestCommon/FilterDebug.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestCommon::FilterDebug;
use strict;
diff --git a/t/lib/TestCommon/Handlers.pm b/t/lib/TestCommon/Handlers.pm
index 658e2fb..de7bf33 100644
--- a/t/lib/TestCommon/Handlers.pm
+++ b/t/lib/TestCommon/Handlers.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestCommon::Handlers;
use strict;
diff --git a/t/lib/TestCommon/LogDiff.pm b/t/lib/TestCommon/LogDiff.pm
index 6c3e5da..36b8314 100644
--- a/t/lib/TestCommon/LogDiff.pm
+++ b/t/lib/TestCommon/LogDiff.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestCommon::LogDiff;
use strict;
diff --git a/t/lib/TestCommon/MemoryLeak.pm b/t/lib/TestCommon/MemoryLeak.pm
index c12bf80..c007005 100644
--- a/t/lib/TestCommon/MemoryLeak.pm
+++ b/t/lib/TestCommon/MemoryLeak.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestCommon::MemoryLeak;
# handy functions to measure memory leaks. since it measures the total
diff --git a/t/lib/TestCommon/SameInterp.pm b/t/lib/TestCommon/SameInterp.pm
index d6781b5..ad7a01d 100644
--- a/t/lib/TestCommon/SameInterp.pm
+++ b/t/lib/TestCommon/SameInterp.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestCommon::SameInterp;
use Apache::Test;
diff --git a/t/lib/TestCommon/TiePerlSection.pm b/t/lib/TestCommon/TiePerlSection.pm
index 27c94ab..e7c0780 100644
--- a/t/lib/TestCommon/TiePerlSection.pm
+++ b/t/lib/TestCommon/TiePerlSection.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestCommon::TiePerlSection;
use strict;
diff --git a/t/lib/TestCommon/Utils.pm b/t/lib/TestCommon/Utils.pm
index dba6421..672c439 100644
--- a/t/lib/TestCommon/Utils.pm
+++ b/t/lib/TestCommon/Utils.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestCommon::Utils;
use strict;
diff --git a/t/lib/TestExit/FromPerlModule.pm b/t/lib/TestExit/FromPerlModule.pm
index f609cb6..774c281 100644
--- a/t/lib/TestExit/FromPerlModule.pm
+++ b/t/lib/TestExit/FromPerlModule.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestExit::FromPerlModule;
use strict;
diff --git a/t/modperl/cookie.t b/t/modperl/cookie.t
index a5a7646..13d275b 100644
--- a/t/modperl/cookie.t
+++ b/t/modperl/cookie.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/modperl/cookie2.t b/t/modperl/cookie2.t
index 37258e0..e49ae21 100644
--- a/t/modperl/cookie2.t
+++ b/t/modperl/cookie2.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/modperl/exit.t b/t/modperl/exit.t
index 96470b5..b519d7a 100644
--- a/t/modperl/exit.t
+++ b/t/modperl/exit.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/modperl/getc.t b/t/modperl/getc.t
index 4cafd5f..62763f1 100644
--- a/t/modperl/getc.t
+++ b/t/modperl/getc.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/modperl/local_env.t b/t/modperl/local_env.t
index c5da3b5..7aeb728 100644
--- a/t/modperl/local_env.t
+++ b/t/modperl/local_env.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
@@ -5,6 +6,8 @@
use Apache::TestUtil;
use Apache::TestRequest;
+plan tests => 1, skip_reason('local %ENV is still broken');
+
my $module = 'TestModperl::local_env';
my $url = Apache::TestRequest::module2url($module);
diff --git a/t/modperl/merge.t b/t/modperl/merge.t
index a8d673c..9e1a5cd 100644
--- a/t/modperl/merge.t
+++ b/t/modperl/merge.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/modperl/merge2.t b/t/modperl/merge2.t
index 5c7ca73..4b64e49 100644
--- a/t/modperl/merge2.t
+++ b/t/modperl/merge2.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/modperl/merge3.t b/t/modperl/merge3.t
index c329c42..b208f37 100644
--- a/t/modperl/merge3.t
+++ b/t/modperl/merge3.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/modperl/perl_options.t b/t/modperl/perl_options.t
index 44c6e5d..9d99cb3 100644
--- a/t/modperl/perl_options.t
+++ b/t/modperl/perl_options.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/modperl/perl_options2.t b/t/modperl/perl_options2.t
index 53cd7b9..9223b30 100644
--- a/t/modperl/perl_options2.t
+++ b/t/modperl/perl_options2.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/modperl/pnotes.t b/t/modperl/pnotes.t
index 0335ed4..3ef4b37 100644
--- a/t/modperl/pnotes.t
+++ b/t/modperl/pnotes.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/modperl/pnotes2.t b/t/modperl/pnotes2.t
index e5c09a1..87f752a 100644
--- a/t/modperl/pnotes2.t
+++ b/t/modperl/pnotes2.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
@@ -25,8 +26,3 @@
/pnotes are destroyed after cleanup passed/;
} t_finish_error_log_watch), 1, $u;
}
-
-# Local Variables: #
-# mode: cperl #
-# cperl-indent-level: 4 #
-# End: #
diff --git a/t/modperl/post_utf8.t b/t/modperl/post_utf8.t
index 62ddb2d..83e6b28 100644
--- a/t/modperl/post_utf8.t
+++ b/t/modperl/post_utf8.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/modperl/print_utf8.t b/t/modperl/print_utf8.t
index dace6be..d29d543 100644
--- a/t/modperl/print_utf8.t
+++ b/t/modperl/print_utf8.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/modperl/print_utf8_2.t b/t/modperl/print_utf8_2.t
index 1684a42..9a12dd2 100644
--- a/t/modperl/print_utf8_2.t
+++ b/t/modperl/print_utf8_2.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/modperl/readline.t b/t/modperl/readline.t
index 25e3a8b..11b4cb7 100644
--- a/t/modperl/readline.t
+++ b/t/modperl/readline.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/modperl/request_rec_perlio_api.t b/t/modperl/request_rec_perlio_api.t
index e847692..2801ddc 100644
--- a/t/modperl/request_rec_perlio_api.t
+++ b/t/modperl/request_rec_perlio_api.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
@@ -16,7 +17,7 @@
{
my $content = join "", 'a'..'j', 'k'..'t';
my $location = "$uri?STDIN";
- my $expected = join "", 'a'..'j', "package", 'k'..'t';
+ my $expected = join "", 'a'..'j', "# please", 'k'..'t';
my $received = POST_BODY_ASSERT $location, content => $content;
ok t_cmp($received, $expected, "STDIN tests");
}
diff --git a/t/modperl/setupenv.t b/t/modperl/setupenv.t
index 4dd9fab..a4611f6 100644
--- a/t/modperl/setupenv.t
+++ b/t/modperl/setupenv.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/modperl/setupenv2.t b/t/modperl/setupenv2.t
index 877da97..f8752b0 100644
--- a/t/modperl/setupenv2.t
+++ b/t/modperl/setupenv2.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/modperl/status.t b/t/modperl/status.t
index 2161da4..9cb8aba 100644
--- a/t/modperl/status.t
+++ b/t/modperl/status.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/modules/apache_resource.t b/t/modules/apache_resource.t
index 3c10fdb..316365d 100644
--- a/t/modules/apache_resource.t
+++ b/t/modules/apache_resource.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/modules/apache_status.t b/t/modules/apache_status.t
index a6225f4..5d07703 100644
--- a/t/modules/apache_status.t
+++ b/t/modules/apache_status.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/modules/cgi.t b/t/modules/cgi.t
index 5d8f0b5..0445d8e 100644
--- a/t/modules/cgi.t
+++ b/t/modules/cgi.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/modules/cgi2.t b/t/modules/cgi2.t
index 975be6d..491ee03 100644
--- a/t/modules/cgi2.t
+++ b/t/modules/cgi2.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/modules/cgipost.t b/t/modules/cgipost.t
index a7dfcc8..0cd94f2 100644
--- a/t/modules/cgipost.t
+++ b/t/modules/cgipost.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/modules/cgipost2.t b/t/modules/cgipost2.t
index 26978ae..8c062f6 100644
--- a/t/modules/cgipost2.t
+++ b/t/modules/cgipost2.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/modules/cgiupload.t b/t/modules/cgiupload.t
index 65359c3..b0a961f 100644
--- a/t/modules/cgiupload.t
+++ b/t/modules/cgiupload.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/modules/cgiupload2.t b/t/modules/cgiupload2.t
index f882560..b298419 100644
--- a/t/modules/cgiupload2.t
+++ b/t/modules/cgiupload2.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/modules/include.t b/t/modules/include.t
index dd3785c..a2c54b3 100644
--- a/t/modules/include.t
+++ b/t/modules/include.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/modules/include2.t b/t/modules/include2.t
index 9f1feb1..80d51dd 100644
--- a/t/modules/include2.t
+++ b/t/modules/include2.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/modules/include_subreq.t b/t/modules/include_subreq.t
index b17e3c7..8295292 100644
--- a/t/modules/include_subreq.t
+++ b/t/modules/include_subreq.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/modules/proxy.t b/t/modules/proxy.t
index e46635b..7d82a55 100644
--- a/t/modules/proxy.t
+++ b/t/modules/proxy.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/perl/hash_attack.t b/t/perl/hash_attack.t
index 8839561..bb91ef2 100644
--- a/t/perl/hash_attack.t
+++ b/t/perl/hash_attack.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/perl/ithreads.t b/t/perl/ithreads.t
index 827e663..53757a0 100644
--- a/t/perl/ithreads.t
+++ b/t/perl/ithreads.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# perl/ithreads2 is a similar test but is running from within a
# virtual host with its own perl interpreter pool (+Parent)
diff --git a/t/perl/ithreads2.t b/t/perl/ithreads2.t
index 9475ecd..ec2718b 100644
--- a/t/perl/ithreads2.t
+++ b/t/perl/ithreads2.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# perl/ithreads is a similar test but is running from the global perl
# interpreter pool. whereas this test is running against a
# virtual host with its own perl interpreter pool (+Parent)
diff --git a/t/perl/ithreads3.t b/t/perl/ithreads3.t
new file mode 100644
index 0000000..ef3feb5
--- /dev/null
+++ b/t/perl/ithreads3.t
@@ -0,0 +1,36 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
+use strict;
+use warnings FATAL => 'all';
+
+use Apache::Test;
+use Apache::TestUtil;
+use Apache::TestRequest 'GET_BODY';
+
+plan tests => 6, need_apache_mpm('worker') && need_perl('ithreads');
+
+my $module = 'TestPerl::ithreads3';
+
+sub u {Apache::TestRequest::module2url($module, {path=>$_[0]})}
+sub t {
+ my $rc;
+ eval {
+ local $SIG{ALRM}=sub {die "Timeout\n"};
+ alarm 2;
+ eval {
+ $rc=GET_BODY u(shift);
+ };
+ alarm 0;
+ };
+ alarm 0;
+ return $rc;
+}
+
+t_debug("connecting to ".u(''));
+ok t_cmp t('/perl-script?1'), 2, 'perl-script 1';
+ok t_cmp t('/modperl?1'), 2, 'modperl 1';
+
+ok t_cmp t('/perl-script?2'), 5, 'perl-script 2';
+ok t_cmp t('/modperl?2'), 5, 'modperl 2';
+
+ok t_cmp t('/perl-script?3'), 3, 'perl-script 3';
+ok t_cmp t('/modperl?3'), 3, 'modperl 3';
diff --git a/t/preconnection/TestPreConnection/note.pm b/t/preconnection/TestPreConnection/note.pm
index 4d770b2..f485952 100644
--- a/t/preconnection/TestPreConnection/note.pm
+++ b/t/preconnection/TestPreConnection/note.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestPreConnection::note;
use strict;
@@ -6,13 +7,16 @@
use Apache2::Connection ();
use Apache::TestTrace;
+use Apache::Test;
+use Apache::TestUtil;
use Apache2::Const -compile => qw(OK);
+use constant APACHE24 => have_min_apache_version('2.4.0');
sub handler {
my Apache2::Connection $c = shift;
- my $ip = $c->remote_ip;
+ my $ip = APACHE24 ? $c->client_ip : $c->remote_ip;
debug "ip: $ip";
diff --git a/t/preconnection/note.t b/t/preconnection/note.t
index 2623038..29453db 100644
--- a/t/preconnection/note.t
+++ b/t/preconnection/note.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/protocol/TestProtocol/echo_bbs.pm b/t/protocol/TestProtocol/echo_bbs.pm
index cc2459b..1951b0e 100644
--- a/t/protocol/TestProtocol/echo_bbs.pm
+++ b/t/protocol/TestProtocol/echo_bbs.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestProtocol::echo_bbs;
# this test is similar to TestProtocol::echo_filter, but performs the
diff --git a/t/protocol/TestProtocol/echo_bbs2.pm b/t/protocol/TestProtocol/echo_bbs2.pm
index c328a32..dacf27f 100644
--- a/t/protocol/TestProtocol/echo_bbs2.pm
+++ b/t/protocol/TestProtocol/echo_bbs2.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestProtocol::echo_bbs2;
# similar to TestProtocol::echo_bbs but here re-using one bucket
diff --git a/t/protocol/TestProtocol/echo_block.pm b/t/protocol/TestProtocol/echo_block.pm
index bf74c17..e13f93d 100644
--- a/t/protocol/TestProtocol/echo_block.pm
+++ b/t/protocol/TestProtocol/echo_block.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestProtocol::echo_block;
# this test reads from/writes to the socket doing blocking IO
diff --git a/t/protocol/TestProtocol/echo_filter.pm b/t/protocol/TestProtocol/echo_filter.pm
index 0e43727..91d19f6 100644
--- a/t/protocol/TestProtocol/echo_filter.pm
+++ b/t/protocol/TestProtocol/echo_filter.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestProtocol::echo_filter;
# see also TestFilter::both_str_con_add
diff --git a/t/protocol/TestProtocol/echo_nonblock.pm b/t/protocol/TestProtocol/echo_nonblock.pm
index f9340a8..d99d576 100644
--- a/t/protocol/TestProtocol/echo_nonblock.pm
+++ b/t/protocol/TestProtocol/echo_nonblock.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestProtocol::echo_nonblock;
# this test reads from/writes to the socket doing nonblocking IO
diff --git a/t/protocol/TestProtocol/echo_timeout.pm b/t/protocol/TestProtocol/echo_timeout.pm
index b44ba80..50c81fa 100644
--- a/t/protocol/TestProtocol/echo_timeout.pm
+++ b/t/protocol/TestProtocol/echo_timeout.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestProtocol::echo_timeout;
# this test reads from/writes to the socket doing nonblocking IO but
diff --git a/t/protocol/TestProtocol/eliza.pm b/t/protocol/TestProtocol/eliza.pm
index 9200730..3e1bdac 100644
--- a/t/protocol/TestProtocol/eliza.pm
+++ b/t/protocol/TestProtocol/eliza.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestProtocol::eliza;
use strict;
diff --git a/t/protocol/TestProtocol/pseudo_http.pm b/t/protocol/TestProtocol/pseudo_http.pm
index bb49ec8..63f6dec 100644
--- a/t/protocol/TestProtocol/pseudo_http.pm
+++ b/t/protocol/TestProtocol/pseudo_http.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestProtocol::pseudo_http;
# this is a more advanced protocol implementation. While using a
diff --git a/t/protocol/echo_bbs.t b/t/protocol/echo_bbs.t
index fb082a1..a5080cf 100644
--- a/t/protocol/echo_bbs.t
+++ b/t/protocol/echo_bbs.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/protocol/echo_bbs2.t b/t/protocol/echo_bbs2.t
index 2e76e5a..1dd3329 100644
--- a/t/protocol/echo_bbs2.t
+++ b/t/protocol/echo_bbs2.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/protocol/echo_block.t b/t/protocol/echo_block.t
index 07a8e7c..30715b5 100644
--- a/t/protocol/echo_block.t
+++ b/t/protocol/echo_block.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/protocol/echo_filter.t b/t/protocol/echo_filter.t
index 519e381..b311af1 100644
--- a/t/protocol/echo_filter.t
+++ b/t/protocol/echo_filter.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/protocol/echo_nonblock.t b/t/protocol/echo_nonblock.t
index a987bf6..0de4da8 100644
--- a/t/protocol/echo_nonblock.t
+++ b/t/protocol/echo_nonblock.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/protocol/echo_timeout.t b/t/protocol/echo_timeout.t
index d3de53b..261b448 100644
--- a/t/protocol/echo_timeout.t
+++ b/t/protocol/echo_timeout.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
@@ -16,5 +17,5 @@
for (@test_strings) {
print $socket "$_\n";
chomp(my $reply = <$socket>||'');
- ok t_cmp($_, $reply);
+ ok t_cmp($reply, $_);
}
diff --git a/t/protocol/eliza.t b/t/protocol/eliza.t
index d4e5b66..0df216f 100644
--- a/t/protocol/eliza.t
+++ b/t/protocol/eliza.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/protocol/pseudo_http.t b/t/protocol/pseudo_http.t
index 6911b53..80b7e73 100644
--- a/t/protocol/pseudo_http.t
+++ b/t/protocol/pseudo_http.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/response/TestAPI/access.pm b/t/response/TestAPI/access.pm
index 44f46a2..82b1a03 100644
--- a/t/response/TestAPI/access.pm
+++ b/t/response/TestAPI/access.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPI::access;
use strict;
diff --git a/t/response/TestAPI/access2.pm b/t/response/TestAPI/access2.pm
index a31df44..b3d43c3 100644
--- a/t/response/TestAPI/access2.pm
+++ b/t/response/TestAPI/access2.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPI::access2;
# testing $r->requires
@@ -44,8 +45,9 @@
sub handler {
my $r = shift;
-
+ print 'xxxxx\n';
die '$r->some_auth_required failed' unless $r->some_auth_required;
+
my $satisfies = $r->satisfies;
die "wanted satisfies=" . Apache2::Const::SATISFY_ALL . ", got $satisfies"
@@ -90,7 +92,10 @@
1;
__DATA__
+
<NoAutoConfig>
+<IfModule mod_version.c>
+<IfVersion < 2.3.0>
<Location /TestAPI__access2>
PerlAuthenHandler TestAPI::access2
PerlResponseHandler Apache::TestHandler::ok1
@@ -117,4 +122,6 @@
AuthGroupFile @DocumentRoot@/api/auth-groups
</IfModule>
</Location>
+</IfVersion>
+</IfModule>
</NoAutoConfig>
diff --git a/t/response/TestAPI/access2_24.pm b/t/response/TestAPI/access2_24.pm
new file mode 100644
index 0000000..ed855cc
--- /dev/null
+++ b/t/response/TestAPI/access2_24.pm
@@ -0,0 +1,130 @@
+package TestAPI::access2_24;
+
+# testing $r->requires
+# in the POST test it returns:
+#
+# [
+# {
+# 'method_mask' => -1,
+# 'requirement' => 'user goo bar'
+# },
+# {
+# 'method_mask' => -1,
+# 'requirement' => 'group bar tar'
+# }
+# {
+# 'method_mask' => 4,
+# 'requirement' => 'valid-user'
+# }
+# ];
+#
+# otherwise it returns the same, sans the 'valid-user' entry
+#
+# also test:
+# - $r->some_auth_required when it's required
+# - $r->satisfies when Satisfy is set
+
+use strict;
+use warnings FATAL => 'all';
+
+use Apache2::Access ();
+use Apache2::RequestRec ();
+
+use Apache::TestTrace;
+
+use Apache2::Const -compile => qw(OK HTTP_UNAUTHORIZED SERVER_ERROR
+ AUTHZ_GRANTED AUTHZ_DENIED M_POST :satisfy
+ AUTHZ_DENIED_NO_USER);
+
+my $users = "goo bar";
+my $groups = "xar tar";
+my %users = (
+ goo => "goopass",
+ bar => "barpass",
+);
+
+sub authz_handler {
+ my $self = shift;
+ my $r = shift;
+ my $requires = shift;
+
+ if (!$r->user) {
+ return Apache2::Const::AUTHZ_DENIED_NO_USER;
+ }
+
+ return Apache2::Const::SERVER_ERROR unless
+ $requires eq $users or $requires eq $groups;
+
+ my @require_args = split(/\s+/, $requires);
+ if (grep {$_ eq $r->user} @require_args) {
+ return Apache2::Const::AUTHZ_GRANTED;
+ }
+
+ return Apache2::Const::AUTHZ_DENIED;
+}
+
+sub authn_handler {
+ my $self = shift;
+ my $r = shift;
+
+ die '$r->some_auth_required failed' unless $r->some_auth_required;
+
+ my $satisfies = $r->satisfies;
+ die "wanted satisfies=" . Apache2::Const::SATISFY_ALL . ", got $satisfies"
+ unless $r->satisfies() == Apache2::Const::SATISFY_ALL;
+
+ my ($rc, $sent_pw) = $r->get_basic_auth_pw;
+ return $rc if $rc != Apache2::Const::OK;
+
+ if ($r->method_number == Apache2::Const::M_POST) {
+ return Apache2::Const::OK;
+ }
+
+ my $user = $r->user;
+ my $pass = $users{$user} || '';
+ unless (defined $pass and $sent_pw eq $pass) {
+ $r->note_basic_auth_failure;
+ return Apache2::Const::HTTP_UNAUTHORIZED;
+ }
+
+ Apache2::Const::OK;
+}
+
+1;
+__DATA__
+
+<NoAutoConfig>
+<IfModule mod_version.c>
+<IfVersion > 2.4.1>
+
+PerlAddAuthzProvider my-user TestAPI::access2_24->authz_handler
+PerlAddAuthzProvider my-group TestAPI::access2_24->authz_handler
+<Location /TestAPI__access2>
+ PerlAuthenHandler TestAPI::access2_24->authn_handler
+ PerlResponseHandler Apache::TestHandler::ok1
+ SetHandler modperl
+
+ <IfModule @ACCESS_MODULE@>
+ # needed to test $r->satisfies
+ Allow from All
+ </IfModule>
+ AuthType Basic
+ AuthName "Access"
+ Require my-user goo bar
+ Require my-group xar tar
+ <Limit POST>
+ Require valid-user
+ </Limit>
+ Satisfy All
+ <IfModule @AUTH_MODULE@>
+ # htpasswd -mbc auth-users goo foo
+ # htpasswd -mb auth-users bar mar
+ # using md5 password so it'll work on win32 too
+ AuthUserFile @DocumentRoot@/api/auth-users
+ # group: user1 user2 ...
+ AuthGroupFile @DocumentRoot@/api/auth-groups
+ </IfModule>
+</Location>
+</IfVersion>
+</IfModule>
+</NoAutoConfig>
diff --git a/t/response/TestAPI/add_config.pm b/t/response/TestAPI/add_config.pm
index f02a717..661608c 100644
--- a/t/response/TestAPI/add_config.pm
+++ b/t/response/TestAPI/add_config.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPI::add_config;
use strict;
@@ -21,6 +22,7 @@
use constant KEY => "TestAddConfig";
use constant APACHE22 => have_min_apache_version('2.2.0');
+use constant APACHE24 => have_min_apache_version('2.4.0');
my @directives = (
{
@@ -53,10 +55,13 @@
};
$r->pnotes(add_config2 => "$@");
- eval {
- $r->add_config(['AllowOverride Options=FollowSymLinks'], -1);
- };
- $r->pnotes(followsymlinks => "$@");
+ # We can set AllowOverride only from .htacces in 2.4.0+
+ if (!APACHE24) {
+ eval {
+ $r->add_config(['AllowOverride Options=FollowSymLinks'], -1);
+ };
+ $r->pnotes(followsymlinks => "$@");
+ }
eval {
my $path="/a/path/to/somewhere";
@@ -96,7 +101,12 @@
ok t_cmp $r->pnotes('add_config2'), (APACHE22 ? qr/.+\n/ : '');
ok t_cmp $r->pnotes('add_config3'), '';
ok t_cmp $r->pnotes('add_config4'), qr/after server startup/;
- ok t_cmp $r->pnotes('followsymlinks'), (APACHE22 ? '': qr/.*\n/);
+ if (!APACHE24) {
+ ok t_cmp $r->pnotes('followsymlinks'), (APACHE22 ? '': qr/.*\n/);
+ }
+ else {
+ ok 1;
+ }
my $expect = Apache2::Const::OPT_ALL |
Apache2::Const::OPT_UNSET |
@@ -109,7 +119,12 @@
ok t_cmp $r->allow_options, Apache2::Const::OPT_EXECCGI;
my $opts = APACHE22 ? Apache2::Const::OPT_SYM_LINKS : $expect;
- ok t_cmp $r->allow_override_opts, $opts;
+ if (!APACHE24) {
+ ok t_cmp $r->allow_override_opts, $opts;
+ }
+ else {
+ ok 1;
+ }
ok t_cmp $r->location, '/a/path/to/somewhere';
diff --git a/t/response/TestAPI/aplog.pm b/t/response/TestAPI/aplog.pm
index f2a4e19..122c8a4 100644
--- a/t/response/TestAPI/aplog.pm
+++ b/t/response/TestAPI/aplog.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPI::aplog;
use strict;
@@ -17,6 +18,7 @@
use Apache2::Const -compile => qw(OK :log);
use APR::Const -compile => qw(:error SUCCESS);
+use constant APACHE24 => have_min_apache_version('2.4.0');
my @LogLevels = qw(emerg alert crit error warn notice info debug);
my $package = __PACKAGE__;
@@ -59,6 +61,11 @@
# log_serror
{
+ my $orig_log_level = 0;
+ if (APACHE24) {
+ $orig_log_level = $s->loglevel;
+ $s->loglevel(Apache2::Const::LOG_DEBUG);
+ }
t_server_log_warn_is_expected();
$s->log_serror(Apache2::Log::LOG_MARK,
Apache2::Const::LOG_INFO|Apache2::Const::LOG_STARTUP,
@@ -85,6 +92,9 @@
ok t_cmp $logdiff->diff,
qr/$egeneral: log_serror test 2/,
'$s->log_serror(LOG_MARK, LOG_DEBUG, APR::Const::EGENERAL...)';
+ if (APACHE24) {
+ $s->loglevel($orig_log_level);
+ }
}
# log_rerror
@@ -92,38 +102,73 @@
$r->log_rerror(Apache2::Log::LOG_MARK, Apache2::Const::LOG_CRIT,
APR::Const::ENOTIME, "log_rerror test");
# can't match against the error string, since a locale may kick in
- ok t_cmp $logdiff->diff,
- qr/\[crit\] .*?: log_rerror test/,
- '$r->log_rerror(LOG_MARK, LOG_CRIT, APR::Const::ENOTIME...)';
+ if (APACHE24) {
+ ok t_cmp $logdiff->diff,
+ qr/\[\w*:crit\] \[pid[^]]+\] .*?: \[[^]]+\] log_rerror test/,
+ '$r->log_rerror(LOG_MARK, LOG_CRIT, APR::Const::ENOTIME...)';
+ }
+ else {
+ ok t_cmp $logdiff->diff,
+ qr/\[crit\] .*?: log_rerror test/,
+ '$r->log_rerror(LOG_MARK, LOG_CRIT, APR::Const::ENOTIME...)';
+ }
# log_error
{
t_server_log_error_is_expected();
$r->log_error('$r->log_error test');
- ok t_cmp $logdiff->diff,
- qr/\[error\] \$r->log_error test/,
- '$r->log_error(...)';
+ if (APACHE24) {
+ ok t_cmp $logdiff->diff,
+ qr/\[\w*:error\] \[pid[^]]+\] \$r->log_error test/,
+ '$r->log_error(...)';
+ }
+ else {
+ ok t_cmp $logdiff->diff,
+ qr/\[error\] \$r->log_error test/,
+ '$r->log_error(...)';
+ }
t_server_log_error_is_expected();
$s->log_error('$s->log_error test');
- ok t_cmp $logdiff->diff,
- qr/\[error\] \$s->log_error test/,
- '$s->log_error(...)';
+ if (APACHE24) {
+ ok t_cmp $logdiff->diff,
+ qr/\[\w*:error\] \[pid[^]]+\] \$s->log_error test/,
+ '$s->log_error(...)';
+ }
+ else {
+ ok t_cmp $logdiff->diff,
+ qr/\[error\] \$s->log_error test/,
+ '$s->log_error(...)';
+ }
}
# log_reason
{
t_server_log_error_is_expected();
$r->log_reason('$r->log_reason test');
- ok t_cmp $logdiff->diff,
- qr/\[error\] access to.*failed.*reason: \$r->log_reason test/,
- '$r->log_reason(msg)';
+ if (APACHE24) {
+ ok t_cmp $logdiff->diff,
+ qr/\[\w*:error\] \[pid[^]]+\] access to.*failed.*reason: \$r->log_reason test/,
+ '$r->log_reason(msg)';
+ }
+ else {
+ ok t_cmp $logdiff->diff,
+ qr/\[error\] access to.*failed.*reason: \$r->log_reason test/,
+ '$r->log_reason(msg)';
+ }
t_server_log_error_is_expected();
$r->log_reason('$r->log_reason filename test','filename');
- ok t_cmp $logdiff->diff,
- qr/\[error\] access to filename failed.*\$r->log_reason filename test/,
- '$r->log_reason(msg, filename)';
+ if (APACHE24) {
+ ok t_cmp $logdiff->diff,
+ qr/\[\w*:error\] \[pid[^]]+\] access to filename failed.*\$r->log_reason filename test/,
+ '$r->log_reason(msg, filename)';
+ }
+ else {
+ ok t_cmp $logdiff->diff,
+ qr/\[error\] access to filename failed.*\$r->log_reason filename test/,
+ '$r->log_reason(msg, filename)';
+ }
}
# XXX: at the moment we can't change loglevel after server startup
@@ -176,32 +221,60 @@
t_server_log_warn_is_expected();
$s->warn('$s->warn test');
- ok t_cmp $logdiff->diff,
- qr/\[warn\] \$s->warn test/,
- '$s->warn()';
+ if (APACHE24) {
+ ok t_cmp $logdiff->diff,
+ qr/\[\w*:warn\] \[pid[^]]+\] \$s->warn test/,
+ '$s->warn()';
+ }
+ else {
+ ok t_cmp $logdiff->diff,
+ qr/\[warn\] \$s->warn test/,
+ '$s->warn()';
+ }
{
t_server_log_warn_is_expected();
# this uses global server to get $s internally
Apache2::ServerRec::warn("Apache2::ServerRec::warn test");
- ok t_cmp $logdiff->diff,
- qr/\[warn\] Apache2::ServerRec::warn test/,
- 'Apache2::ServerRec::warn() w/o Apache2::RequestUtil->request ';
+ if (APACHE24) {
+ ok t_cmp $logdiff->diff,
+ qr/\[\w*:warn\] \[pid[^]]+\] Apache2::ServerRec::warn test/,
+ 'Apache2::ServerRec::warn() w/o Apache2::RequestUtil->request ';
+ }
+ else {
+ ok t_cmp $logdiff->diff,
+ qr/\[warn\] Apache2::ServerRec::warn test/,
+ 'Apache2::ServerRec::warn() w/o Apache2::RequestUtil->request ';
+ }
Apache2::RequestUtil->request($r);
t_server_log_warn_is_expected();
# this uses the global $r to get $s internally
Apache2::ServerRec::warn("Apache2::ServerRec::warn test");
- ok t_cmp $logdiff->diff,
- qr/\[warn\] Apache2::ServerRec::warn test/,
- 'Apache2::ServerRec::warn() w/ Apache2::RequestUtil->request ';
+ if (APACHE24) {
+ ok t_cmp $logdiff->diff,
+ qr/\[\w*:warn\] \[pid[^]]+\] Apache2::ServerRec::warn test/,
+ 'Apache2::ServerRec::warn() w/ Apache2::RequestUtil->request ';
+ }
+ else {
+ ok t_cmp $logdiff->diff,
+ qr/\[warn\] Apache2::ServerRec::warn test/,
+ 'Apache2::ServerRec::warn() w/ Apache2::RequestUtil->request ';
+ }
}
t_server_log_warn_is_expected();
warn "warn test";
- ok t_cmp $logdiff->diff,
- qr/\[warn\] warn test/,
- 'overriden via export warn()';
+ if (APACHE24) {
+ ok t_cmp $logdiff->diff,
+ qr/\[\w*:warn\] \[pid[^]]+\] warn test/,
+ 'overriden via export warn()';
+ }
+ else {
+ ok t_cmp $logdiff->diff,
+ qr/\[warn\] warn test/,
+ 'overriden via export warn()';
+ }
Apache2::Const::OK;
}
diff --git a/t/response/TestAPI/command.pm b/t/response/TestAPI/command.pm
index ecef6f3..db32ea1 100644
--- a/t/response/TestAPI/command.pm
+++ b/t/response/TestAPI/command.pm
@@ -1,4 +1,4 @@
-
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPI::command;
use strict;
diff --git a/t/response/TestAPI/conn_rec.pm b/t/response/TestAPI/conn_rec.pm
index 991146a..a561629 100644
--- a/t/response/TestAPI/conn_rec.pm
+++ b/t/response/TestAPI/conn_rec.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPI::conn_rec;
# this test module is only for testing fields in the conn_rec listed
@@ -15,6 +16,8 @@
use Apache2::Const -compile => qw(OK CONN_CLOSE);
+use constant APACHE24 => have_min_apache_version('2.4.0');
+
sub handler {
my $r = shift;
@@ -32,20 +35,39 @@
ok $c->local_addr->isa('APR::SockAddr');
- ok $c->remote_addr->isa('APR::SockAddr');
+ if (APACHE24) {
+ ok $c->client_addr->isa('APR::SockAddr');
- # remote_ip
- {
- my $remote_ip_org = $c->remote_ip;
- my $remote_ip_new = "10.10.10.255";
- ok $remote_ip_org;
+ # client_ip
+ {
+ my $client_ip_org = $c->client_ip;
+ my $client_ip_new = "10.10.10.255";
+ ok $client_ip_org;
- $c->remote_ip($remote_ip_new);
- ok t_cmp $c->remote_ip, $remote_ip_new;
+ $c->client_ip($client_ip_new);
+ ok t_cmp $c->client_ip, $client_ip_new;
- # restore
- $c->remote_ip($remote_ip_org);
- ok t_cmp $c->remote_ip, $remote_ip_org;
+ # restore
+ $c->client_ip($client_ip_org);
+ ok t_cmp $c->client_ip, $client_ip_org;
+ }
+ }
+ else {
+ ok $c->remote_addr->isa('APR::SockAddr');
+ # remote_ip
+ {
+ my $remote_ip_org = $c->remote_ip;
+ my $remote_ip_new = "10.10.10.255";
+ ok $remote_ip_org;
+
+ $c->remote_ip($remote_ip_new);
+ ok t_cmp $c->remote_ip, $remote_ip_new;
+
+
+ # restore
+ $c->remote_ip($remote_ip_org);
+ ok t_cmp $c->remote_ip, $remote_ip_org;
+ }
}
ok $c->remote_host || 1;
diff --git a/t/response/TestAPI/conn_util.pm b/t/response/TestAPI/conn_util.pm
index 6bc75aa..b3e167f 100644
--- a/t/response/TestAPI/conn_util.pm
+++ b/t/response/TestAPI/conn_util.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPI::conn_util;
use strict;
diff --git a/t/response/TestAPI/content_encoding.pm b/t/response/TestAPI/content_encoding.pm
index 4efb9b4..a405000 100644
--- a/t/response/TestAPI/content_encoding.pm
+++ b/t/response/TestAPI/content_encoding.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPI::content_encoding;
# tests: $r->content_encoding("gzip");
diff --git a/t/response/TestAPI/custom_response.pm b/t/response/TestAPI/custom_response.pm
index 05f4345..b7dc429 100644
--- a/t/response/TestAPI/custom_response.pm
+++ b/t/response/TestAPI/custom_response.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPI::custom_response;
# custom_response() doesn't alter the response code, but is used to
diff --git a/t/response/TestAPI/err_headers_out.pm b/t/response/TestAPI/err_headers_out.pm
index 8d92ed8..c8447ab 100644
--- a/t/response/TestAPI/err_headers_out.pm
+++ b/t/response/TestAPI/err_headers_out.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPI::err_headers_out;
# tests: $r->err_headers_out
diff --git a/t/response/TestAPI/in_out_filters.pm b/t/response/TestAPI/in_out_filters.pm
index 039fb58..1bb03a2 100644
--- a/t/response/TestAPI/in_out_filters.pm
+++ b/t/response/TestAPI/in_out_filters.pm
@@ -1,4 +1,4 @@
-
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPI::in_out_filters;
# testing: $r->input_filters and $r->output_filters
diff --git a/t/response/TestAPI/internal_redirect.pm b/t/response/TestAPI/internal_redirect.pm
index 4ac1d67..1918f3b 100644
--- a/t/response/TestAPI/internal_redirect.pm
+++ b/t/response/TestAPI/internal_redirect.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPI::internal_redirect;
use strict;
diff --git a/t/response/TestAPI/internal_redirect_handler.pm b/t/response/TestAPI/internal_redirect_handler.pm
index ec6bfe5..8bab332 100644
--- a/t/response/TestAPI/internal_redirect_handler.pm
+++ b/t/response/TestAPI/internal_redirect_handler.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPI::internal_redirect_handler;
# $r->internal_redirect_handler() is the same as
diff --git a/t/response/TestAPI/lookup_misc.pm b/t/response/TestAPI/lookup_misc.pm
index 45d55f9..57d39d3 100644
--- a/t/response/TestAPI/lookup_misc.pm
+++ b/t/response/TestAPI/lookup_misc.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPI::lookup_misc;
# testing misc lookup_ methods. TestAPI::lookup_uri includes the tests
diff --git a/t/response/TestAPI/lookup_uri.pm b/t/response/TestAPI/lookup_uri.pm
index a61023b..17fd9d2 100644
--- a/t/response/TestAPI/lookup_uri.pm
+++ b/t/response/TestAPI/lookup_uri.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPI::lookup_uri;
# tests $r->lookup_uri and its work with filters
diff --git a/t/response/TestAPI/lookup_uri2.pm b/t/response/TestAPI/lookup_uri2.pm
index 31ab28d..c167210 100644
--- a/t/response/TestAPI/lookup_uri2.pm
+++ b/t/response/TestAPI/lookup_uri2.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPI::lookup_uri2;
use strict;
diff --git a/t/response/TestAPI/module.pm b/t/response/TestAPI/module.pm
index fc84428..4d0754f 100644
--- a/t/response/TestAPI/module.pm
+++ b/t/response/TestAPI/module.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPI::module;
use strict;
diff --git a/t/response/TestAPI/process.pm b/t/response/TestAPI/process.pm
index 5f28b6d..c137646 100644
--- a/t/response/TestAPI/process.pm
+++ b/t/response/TestAPI/process.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPI::process;
use strict;
diff --git a/t/response/TestAPI/query.pm b/t/response/TestAPI/query.pm
index 50d7324..78f1148 100644
--- a/t/response/TestAPI/query.pm
+++ b/t/response/TestAPI/query.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPI::query;
use strict;
diff --git a/t/response/TestAPI/request_rec.pm b/t/response/TestAPI/request_rec.pm
index 23d1fae..7e61717 100644
--- a/t/response/TestAPI/request_rec.pm
+++ b/t/response/TestAPI/request_rec.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPI::request_rec;
use strict;
diff --git a/t/response/TestAPI/request_subclass.pm b/t/response/TestAPI/request_subclass.pm
index 210a48b..1b76229 100644
--- a/t/response/TestAPI/request_subclass.pm
+++ b/t/response/TestAPI/request_subclass.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPI::request_subclass;
use strict;
diff --git a/t/response/TestAPI/request_util.pm b/t/response/TestAPI/request_util.pm
index 39ba311..2af76fe 100644
--- a/t/response/TestAPI/request_util.pm
+++ b/t/response/TestAPI/request_util.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPI::request_util;
use strict;
@@ -24,7 +25,8 @@
plan $r, tests => (scalar keys %status_lines) + 11;
- ok $r->default_type;
+ # default_type() is gone as of httpd 2.3.2-dev
+ ok !defined(&Apache2::RequestRec::default_type) || $r->default_type;
my $document_root = $r->document_root;
diff --git a/t/response/TestAPI/response.pm b/t/response/TestAPI/response.pm
index 7ec14b0..352ced7 100644
--- a/t/response/TestAPI/response.pm
+++ b/t/response/TestAPI/response.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPI::response;
# testing Apache2::Response methods
diff --git a/t/response/TestAPI/rflush.pm b/t/response/TestAPI/rflush.pm
index 1478322..41df75d 100644
--- a/t/response/TestAPI/rflush.pm
+++ b/t/response/TestAPI/rflush.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPI::rflush;
use strict;
diff --git a/t/response/TestAPI/sendfile.pm b/t/response/TestAPI/sendfile.pm
index 3fcd53a..17f445a 100644
--- a/t/response/TestAPI/sendfile.pm
+++ b/t/response/TestAPI/sendfile.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPI::sendfile;
use strict;
diff --git a/t/response/TestAPI/server_const.pm b/t/response/TestAPI/server_const.pm
index d7b17ad..2e814ef 100644
--- a/t/response/TestAPI/server_const.pm
+++ b/t/response/TestAPI/server_const.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPI::server_const;
use strict;
diff --git a/t/response/TestAPI/server_rec.pm b/t/response/TestAPI/server_rec.pm
index e297444..7cd37fb 100644
--- a/t/response/TestAPI/server_rec.pm
+++ b/t/response/TestAPI/server_rec.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPI::server_rec;
# this test module is only for testing fields in the server_rec listed
diff --git a/t/response/TestAPI/server_util.pm b/t/response/TestAPI/server_util.pm
index 6b74ab4..e7d3a05 100644
--- a/t/response/TestAPI/server_util.pm
+++ b/t/response/TestAPI/server_util.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPI::server_util;
use strict;
diff --git a/t/response/TestAPI/show.pm b/t/response/TestAPI/show.pm
index 09dc529..aece5f0 100644
--- a/t/response/TestAPI/show.pm
+++ b/t/response/TestAPI/show.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPI::show;
use strict;
diff --git a/t/response/TestAPI/slurp_filename.pm b/t/response/TestAPI/slurp_filename.pm
index 0a715a9..27bf236 100644
--- a/t/response/TestAPI/slurp_filename.pm
+++ b/t/response/TestAPI/slurp_filename.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPI::slurp_filename;
# test slurp_filename()'s taintness options and that it works properly
diff --git a/t/response/TestAPI/status.pm b/t/response/TestAPI/status.pm
index 2760c31..b875a09 100644
--- a/t/response/TestAPI/status.pm
+++ b/t/response/TestAPI/status.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPI::status;
# see the client for details
diff --git a/t/response/TestAPI/sub_request.pm b/t/response/TestAPI/sub_request.pm
index ffcb198..b5b55f0 100644
--- a/t/response/TestAPI/sub_request.pm
+++ b/t/response/TestAPI/sub_request.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPI::sub_request;
# basic subrequest tests
diff --git a/t/response/TestAPI/uri.pm b/t/response/TestAPI/uri.pm
index b00f0fc..89f22bc 100644
--- a/t/response/TestAPI/uri.pm
+++ b/t/response/TestAPI/uri.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPI::uri;
use strict;
diff --git a/t/response/TestAPR/base64.pm b/t/response/TestAPR/base64.pm
index 775cda8..9088fc0 100644
--- a/t/response/TestAPR/base64.pm
+++ b/t/response/TestAPR/base64.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPR::base64;
use strict;
diff --git a/t/response/TestAPR/brigade.pm b/t/response/TestAPR/brigade.pm
index 4e687b2..167592a 100644
--- a/t/response/TestAPR/brigade.pm
+++ b/t/response/TestAPR/brigade.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPR::brigade;
# testing APR::Brigade in this tests.
diff --git a/t/response/TestAPR/bucket.pm b/t/response/TestAPR/bucket.pm
index 1c7942d..6d85abf 100644
--- a/t/response/TestAPR/bucket.pm
+++ b/t/response/TestAPR/bucket.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPR::bucket;
# a mix of APR::Brigade, APR::Bucket abd APR::BucketType tests
diff --git a/t/response/TestAPR/date.pm b/t/response/TestAPR/date.pm
index fa8d34e..d427fbe 100644
--- a/t/response/TestAPR/date.pm
+++ b/t/response/TestAPR/date.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPR::date;
# testing APR::Date API
diff --git a/t/response/TestAPR/finfo.pm b/t/response/TestAPR/finfo.pm
index c56b735..318cfca 100644
--- a/t/response/TestAPR/finfo.pm
+++ b/t/response/TestAPR/finfo.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPR::finfo;
use strict;
diff --git a/t/response/TestAPR/flatten.pm b/t/response/TestAPR/flatten.pm
index baa7023..2246959 100644
--- a/t/response/TestAPR/flatten.pm
+++ b/t/response/TestAPR/flatten.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPR::flatten;
use strict;
diff --git a/t/response/TestAPR/ipsubnet.pm b/t/response/TestAPR/ipsubnet.pm
index 748bc4e..1aa3b2e 100644
--- a/t/response/TestAPR/ipsubnet.pm
+++ b/t/response/TestAPR/ipsubnet.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPR::ipsubnet;
use strict;
@@ -13,6 +14,7 @@
use APR::SockAddr ();
use Apache2::Const -compile => 'OK';
+use constant APACHE24 => have_min_apache_version('2.4.0');
sub handler {
my $r = shift;
@@ -21,24 +23,30 @@
plan $r, tests => 8;
- my $ip = $c->remote_ip;
+ my $ip = APACHE24 ? $c->client_ip : $c->remote_ip;
ok $ip;
- ok t_cmp($c->remote_addr->ip_get, $ip,
- "remote_ip eq remote_addr->ip_get");
+ if (APACHE24) {
+ ok t_cmp($c->client_addr->ip_get, $ip,
+ "client_ip eq client_addr->ip_get");
+ }
+ else {
+ ok t_cmp($c->remote_addr->ip_get, $ip,
+ "remote_ip eq remote_addr->ip_get");
+ }
{
my $ipsub = APR::IpSubnet->new($p, $ip);
- ok $ipsub->test($c->remote_addr);
+ ok $ipsub->test(APACHE24 ? $c->client_addr : $c->remote_addr);
}
# use IP mask
{
my $ipsub = APR::IpSubnet->new($p, $ip, "255.0.0.0");
- ok $ipsub->test($c->remote_addr);
+ ok $ipsub->test(APACHE24 ? $c->client_addr : $c->remote_addr);
}
# fail match
@@ -49,7 +57,7 @@
(my $mismatch = $ip) =~ s/(?<=\.)(\d+)$/$1 == 255 ? $1-1 : $1+1/e;
t_debug($mismatch);
my $ipsub = APR::IpSubnet->new($p, $mismatch, $mismatch);
- ok ! $ipsub->test($c->remote_addr);
+ ok ! $ipsub->test(APACHE24 ? $c->client_addr : $c->remote_addr);
}
else {
# XXX: similar ipv6 trick?
@@ -77,7 +85,7 @@
my $table = APR::Table::make(APR::Pool->new, 50);
$table->set($_ => $_) for 'aa'..'za';
# now test that we are still OK
- ok $ipsub->test($c->remote_addr);
+ ok $ipsub->test(APACHE24 ? $c->client_addr : $c->remote_addr);
}
Apache2::Const::OK;
diff --git a/t/response/TestAPR/os.pm b/t/response/TestAPR/os.pm
index 04dcb80..0ecdafc 100644
--- a/t/response/TestAPR/os.pm
+++ b/t/response/TestAPR/os.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPR::os;
use strict;
diff --git a/t/response/TestAPR/perlio.pm b/t/response/TestAPR/perlio.pm
index 59237fe..d2f4865 100644
--- a/t/response/TestAPR/perlio.pm
+++ b/t/response/TestAPR/perlio.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPR::perlio;
# to see what happens inside the io layer, assuming that you built
diff --git a/t/response/TestAPR/pool.pm b/t/response/TestAPR/pool.pm
index f3b357d..1b04974 100644
--- a/t/response/TestAPR/pool.pm
+++ b/t/response/TestAPR/pool.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPR::pool;
use strict;
diff --git a/t/response/TestAPR/pool_lifetime.pm b/t/response/TestAPR/pool_lifetime.pm
index 483db7c..8ac97ac 100644
--- a/t/response/TestAPR/pool_lifetime.pm
+++ b/t/response/TestAPR/pool_lifetime.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPR::pool_lifetime;
# this test verifies that if the perl pool object exceeds the
diff --git a/t/response/TestAPR/sockaddr.pm b/t/response/TestAPR/sockaddr.pm
index 65344d6..0b45937 100644
--- a/t/response/TestAPR/sockaddr.pm
+++ b/t/response/TestAPR/sockaddr.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPR::sockaddr;
# testing APR::SockAddr API
@@ -13,6 +14,7 @@
use APR::SockAddr ();
use Apache2::Const -compile => 'OK';
+use constant APACHE24 => have_min_apache_version('2.4.0');
sub handler {
my $r = shift;
@@ -21,10 +23,15 @@
plan $r, tests => 4;
my $local = $c->local_addr;
- my $remote = $c->remote_addr;
+ my $remote = APACHE24 ? $c->client_addr : $c->remote_addr;
ok t_cmp($local->ip_get, $c->local_ip, "local ip");
- ok t_cmp($remote->ip_get, $c->remote_ip, "remote ip");
+ if (APACHE24) {
+ ok t_cmp($remote->ip_get, $c->client_ip, "client ip");
+ }
+ else {
+ ok t_cmp($remote->ip_get, $c->remote_ip, "remote ip");
+ }
$r->subprocess_env;
ok t_cmp($local->port, $ENV{SERVER_PORT}, "local port");
diff --git a/t/response/TestAPR/socket.pm b/t/response/TestAPR/socket.pm
index ef6f53a..abbc192 100644
--- a/t/response/TestAPR/socket.pm
+++ b/t/response/TestAPR/socket.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPR::socket;
# more tests in t/protocol/TestProtocol/echo_*.pm
diff --git a/t/response/TestAPR/status.pm b/t/response/TestAPR/status.pm
index bb935ee..b38b7dd 100644
--- a/t/response/TestAPR/status.pm
+++ b/t/response/TestAPR/status.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPR::status;
# Testing APR::Status
diff --git a/t/response/TestAPR/string.pm b/t/response/TestAPR/string.pm
index 0632bfa..61b41f6 100644
--- a/t/response/TestAPR/string.pm
+++ b/t/response/TestAPR/string.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPR::string;
use strict;
diff --git a/t/response/TestAPR/table.pm b/t/response/TestAPR/table.pm
index 65f24ca..abe452c 100644
--- a/t/response/TestAPR/table.pm
+++ b/t/response/TestAPR/table.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPR::table;
# testing APR::Table API
diff --git a/t/response/TestAPR/threadmutex.pm b/t/response/TestAPR/threadmutex.pm
index 863c64e..e1df238 100644
--- a/t/response/TestAPR/threadmutex.pm
+++ b/t/response/TestAPR/threadmutex.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPR::threadmutex;
use strict;
diff --git a/t/response/TestAPR/threadrwlock.pm b/t/response/TestAPR/threadrwlock.pm
index f18254a..a6ff19f 100644
--- a/t/response/TestAPR/threadrwlock.pm
+++ b/t/response/TestAPR/threadrwlock.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPR::threadrwlock;
use strict;
diff --git a/t/response/TestAPR/uri.pm b/t/response/TestAPR/uri.pm
index 2d55112..89b8471 100644
--- a/t/response/TestAPR/uri.pm
+++ b/t/response/TestAPR/uri.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPR::uri;
# Testing APR::URI (more tests in TestAPI::uri)
diff --git a/t/response/TestAPR/util.pm b/t/response/TestAPR/util.pm
index 6c8608e..19ccfc7 100644
--- a/t/response/TestAPR/util.pm
+++ b/t/response/TestAPR/util.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPR::util;
# test APR::Util
diff --git a/t/response/TestAPR/uuid.pm b/t/response/TestAPR/uuid.pm
index 582a46e..97e81f3 100644
--- a/t/response/TestAPR/uuid.pm
+++ b/t/response/TestAPR/uuid.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestAPR::uuid;
use strict;
diff --git a/t/response/TestApache/cgihandler.pm b/t/response/TestApache/cgihandler.pm
index 970819d..be4f2cc 100644
--- a/t/response/TestApache/cgihandler.pm
+++ b/t/response/TestApache/cgihandler.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestApache::cgihandler;
use strict;
diff --git a/t/response/TestApache/conftree.pm b/t/response/TestApache/conftree.pm
index 95cd3fe..af13a6e 100644
--- a/t/response/TestApache/conftree.pm
+++ b/t/response/TestApache/conftree.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestApache::conftree;
use strict;
diff --git a/t/response/TestApache/content_length_header.pm b/t/response/TestApache/content_length_header.pm
index 901edba..acdca06 100644
--- a/t/response/TestApache/content_length_header.pm
+++ b/t/response/TestApache/content_length_header.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestApache::content_length_header;
# see the client t/apache/content_length_header.t for the comments
diff --git a/t/response/TestApache/daemon.pm b/t/response/TestApache/daemon.pm
index a7622d1..c0ae342 100644
--- a/t/response/TestApache/daemon.pm
+++ b/t/response/TestApache/daemon.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestApache::daemon;
# Apache2::ServerUtil tests
diff --git a/t/response/TestApache/discard_rbody.pm b/t/response/TestApache/discard_rbody.pm
index 3a3d35d..27475e1 100644
--- a/t/response/TestApache/discard_rbody.pm
+++ b/t/response/TestApache/discard_rbody.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestApache::discard_rbody;
# test $r->discard_request_body when the input body wasn't read at
diff --git a/t/response/TestApache/post.pm b/t/response/TestApache/post.pm
index 8234458..40527eb 100644
--- a/t/response/TestApache/post.pm
+++ b/t/response/TestApache/post.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestApache::post;
use strict;
diff --git a/t/response/TestApache/read.pm b/t/response/TestApache/read.pm
index 4ad98fe..8b90c99 100644
--- a/t/response/TestApache/read.pm
+++ b/t/response/TestApache/read.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestApache::read;
use strict;
diff --git a/t/response/TestApache/read2.pm b/t/response/TestApache/read2.pm
index 8e67dc4..4307181 100644
--- a/t/response/TestApache/read2.pm
+++ b/t/response/TestApache/read2.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestApache::read2;
# extra tests in addition to TestApache::read
diff --git a/t/response/TestApache/scanhdrs.pm b/t/response/TestApache/scanhdrs.pm
index d51775c..00e3050 100644
--- a/t/response/TestApache/scanhdrs.pm
+++ b/t/response/TestApache/scanhdrs.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestApache::scanhdrs;
use strict;
diff --git a/t/response/TestApache/scanhdrs2.pm b/t/response/TestApache/scanhdrs2.pm
index 458c433..7327941 100644
--- a/t/response/TestApache/scanhdrs2.pm
+++ b/t/response/TestApache/scanhdrs2.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestApache::scanhdrs2;
use strict;
diff --git a/t/response/TestApache/send_cgi_header.pm b/t/response/TestApache/send_cgi_header.pm
index f9b0a59..9738038 100644
--- a/t/response/TestApache/send_cgi_header.pm
+++ b/t/response/TestApache/send_cgi_header.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestApache::send_cgi_header;
use strict;
diff --git a/t/response/TestApache/subprocess.pm b/t/response/TestApache/subprocess.pm
index 70e1dc8..c6bc3bb 100644
--- a/t/response/TestApache/subprocess.pm
+++ b/t/response/TestApache/subprocess.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestApache::subprocess;
use strict;
@@ -13,7 +14,6 @@
use Apache2::Const -compile => 'OK';
use Config;
-use constant PERLIO_5_8_IS_ENABLED => $Config{useperlio} && $] >= 5.007;
my $perl = Apache2::Build->build_config()->perl_config('perlpath');
@@ -149,18 +149,21 @@
#
# PerlIO-based pipe fh on the other hand does the select
# internally via apr_wait_for_io_or_timeout() in
- # apr_file_read(). But you cannot call select() on the
+ # apr_file_read() (on *nix, but not on Win32).
+ # But you cannot call select() on the
# PerlIO-based, because its fileno() returns (-1), remember that
# apr_file_t is an opaque object, and on certain platforms
# fileno() is different from unix
#
# so we use the following wrapper: if we are under perlio we just
- # go ahead and read the data, if we are under non-perlio we first
+ # go ahead and read the data, but with a short sleep first on Win32;
+ # if we are under non-perlio we first
# select for a few secs. (XXX: is 10 secs enough?)
#
# btw: we use perlIO only for perl 5.7+
#
if (APR::PerlIO::PERLIO_LAYERS_ARE_ENABLED() || $sel->can_read(10)) {
+ sleep(1) if $^O eq 'MSWin32' && APR::PerlIO::PERLIO_LAYERS_ARE_ENABLED();
@data = wantarray ? (<$fh>) : <$fh>;
}
diff --git a/t/response/TestApache/util.pm b/t/response/TestApache/util.pm
index 676cce0..da61e38 100644
--- a/t/response/TestApache/util.pm
+++ b/t/response/TestApache/util.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestApache::util;
# Apache2::Util tests
diff --git a/t/response/TestApache/write.pm b/t/response/TestApache/write.pm
index 314697a..ebb7553 100644
--- a/t/response/TestApache/write.pm
+++ b/t/response/TestApache/write.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestApache::write;
use strict;
diff --git a/t/response/TestCompat/apache.pm b/t/response/TestCompat/apache.pm
index 10538a6..9202916 100644
--- a/t/response/TestCompat/apache.pm
+++ b/t/response/TestCompat/apache.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestCompat::apache;
# Apache->"method" and Apache::"function" compat layer tests
diff --git a/t/response/TestCompat/apache_file.pm b/t/response/TestCompat/apache_file.pm
index f79c701..20f0c0c 100644
--- a/t/response/TestCompat/apache_file.pm
+++ b/t/response/TestCompat/apache_file.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestCompat::apache_file;
# Apache::File compat layer tests
diff --git a/t/response/TestCompat/apache_module.pm b/t/response/TestCompat/apache_module.pm
index 5894867..2df1df4 100644
--- a/t/response/TestCompat/apache_module.pm
+++ b/t/response/TestCompat/apache_module.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestCompat::apache_module;
# Apache2::Module compat layer tests
diff --git a/t/response/TestCompat/apache_table.pm b/t/response/TestCompat/apache_table.pm
index d9d238e..31d3992 100644
--- a/t/response/TestCompat/apache_table.pm
+++ b/t/response/TestCompat/apache_table.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestCompat::apache_table;
# Apache::Table compat layer tests
diff --git a/t/response/TestCompat/apache_uri.pm b/t/response/TestCompat/apache_uri.pm
index 35014de..c830d60 100644
--- a/t/response/TestCompat/apache_uri.pm
+++ b/t/response/TestCompat/apache_uri.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestCompat::apache_uri;
# Apache::Util compat layer tests
diff --git a/t/response/TestCompat/apache_util.pm b/t/response/TestCompat/apache_util.pm
index dfd18a3..ec1496f 100644
--- a/t/response/TestCompat/apache_util.pm
+++ b/t/response/TestCompat/apache_util.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestCompat::apache_util;
# Apache::Util compat layer tests
diff --git a/t/response/TestCompat/conn_authen.pm b/t/response/TestCompat/conn_authen.pm
index becb033..1cb80ad 100644
--- a/t/response/TestCompat/conn_authen.pm
+++ b/t/response/TestCompat/conn_authen.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestCompat::conn_authen;
# compat checks for
diff --git a/t/response/TestCompat/conn_rec.pm b/t/response/TestCompat/conn_rec.pm
index 60e98d1..a19339c 100644
--- a/t/response/TestCompat/conn_rec.pm
+++ b/t/response/TestCompat/conn_rec.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestCompat::conn_rec;
use strict;
diff --git a/t/response/TestCompat/request.pm b/t/response/TestCompat/request.pm
index 0c8426a..c2406d3 100644
--- a/t/response/TestCompat/request.pm
+++ b/t/response/TestCompat/request.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestCompat::request;
# $r->"method" compat layer tests
diff --git a/t/response/TestCompat/request_body.pm b/t/response/TestCompat/request_body.pm
index 8567fab..5f0f1e9 100644
--- a/t/response/TestCompat/request_body.pm
+++ b/t/response/TestCompat/request_body.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestCompat::request_body;
# $r->"method" tests that are validated by the client
diff --git a/t/response/TestCompat/send_fd.pm b/t/response/TestCompat/send_fd.pm
index f0a5136..7ee2f53 100644
--- a/t/response/TestCompat/send_fd.pm
+++ b/t/response/TestCompat/send_fd.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestCompat::send_fd;
use strict;
diff --git a/t/response/TestDirective/cmdparms.pm b/t/response/TestDirective/cmdparms.pm
index 72e0d33..b3070d2 100644
--- a/t/response/TestDirective/cmdparms.pm
+++ b/t/response/TestDirective/cmdparms.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestDirective::cmdparms;
use strict;
@@ -133,7 +134,7 @@
</Base>
TestCmdParms "Location"
-
-<LimitExcept GET>
- TestCmdParms "Limit"
-</LimitExcept>
+#FIXME! httpd 2.4 does not allow LimitExcept here
+#<LimitExcept GET>
+ #TestCmdParms "Limit"
+#</LimitExcept>
diff --git a/t/response/TestDirective/env.pm b/t/response/TestDirective/env.pm
index 600a5b0..8a048ab 100644
--- a/t/response/TestDirective/env.pm
+++ b/t/response/TestDirective/env.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestDirective::env;
use strict;
diff --git a/t/response/TestDirective/perlcleanuphandler.pm b/t/response/TestDirective/perlcleanuphandler.pm
new file mode 100644
index 0000000..bc77318
--- /dev/null
+++ b/t/response/TestDirective/perlcleanuphandler.pm
@@ -0,0 +1,66 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
+package TestDirective::perlcleanuphandler;
+
+use strict;
+use warnings FATAL => 'all';
+
+use Apache2::RequestRec ();
+use Apache2::RequestIO ();
+use Apache2::RequestUtil ();
+use Apache2::Connection ();
+use Apache2::ConnectionUtil ();
+use Apache2::Const -compile => 'OK', 'DECLINED';
+
+# This test is to show an error that occurs if in the whole request cycle
+# only a PerlCleanupHandler is defined. In this case it is not called.
+# To check that "/get?incr" is called first. This returns "UNDEF" to the
+# browser and sets the counter to "1". Next "/get" is called again without
+# args to check the counter without increment. Then we fetch
+# "/index.html?incr". Here no other Perl*Handler save the PerlCleanupHandler
+# is involved. So the next "/get" must return "2" but it shows "1".
+
+sub cleanup {
+ my $r=shift;
+ $r->connection->pnotes->{counter}++ if( $r->args eq 'incr' );
+ return Apache2::Const::OK;
+}
+
+sub get {
+ my $r=shift;
+ $r->content_type('text/plain');
+ $r->print($r->connection->pnotes->{counter} || "UNDEF");
+ return Apache2::Const::OK;
+}
+
+1;
+
+__END__
+<VirtualHost TestDirective::perlcleanuphandler>
+
+ <IfDefine PERL_USEITHREADS>
+ # a new interpreter pool
+ PerlOptions +Parent
+ PerlInterpStart 1
+ PerlInterpMax 1
+ PerlInterpMinSpare 0
+ PerlInterpMaxSpare 1
+ PerlInterpScope connection
+ </IfDefine>
+
+ KeepAlive On
+ KeepAliveTimeout 300
+ MaxKeepAliveRequests 100
+
+ # use test system's @INC
+ PerlSwitches -I@serverroot@
+ PerlRequire "conf/modperl_inc.pl"
+ PerlModule TestDirective::perlcleanuphandler
+
+ <Location /get>
+ SetHandler modperl
+ PerlResponseHandler TestDirective::perlcleanuphandler::get
+ </Location>
+
+ PerlCleanupHandler TestDirective::perlcleanuphandler::cleanup
+
+</VirtualHost>
diff --git a/t/response/TestDirective/perldo.pm b/t/response/TestDirective/perldo.pm
index 6b0e55f..a825089 100644
--- a/t/response/TestDirective/perldo.pm
+++ b/t/response/TestDirective/perldo.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestDirective::perldo;
use strict;
diff --git a/t/response/TestDirective/perlloadmodule.pm b/t/response/TestDirective/perlloadmodule.pm
index 17e3480..8c85288 100644
--- a/t/response/TestDirective/perlloadmodule.pm
+++ b/t/response/TestDirective/perlloadmodule.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestDirective::perlloadmodule;
use strict;
diff --git a/t/response/TestDirective/perlloadmodule2.pm b/t/response/TestDirective/perlloadmodule2.pm
index 7c24be3..5829678 100644
--- a/t/response/TestDirective/perlloadmodule2.pm
+++ b/t/response/TestDirective/perlloadmodule2.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestDirective::perlloadmodule2;
# in this test the merge is inherits all the values from the ancestors
@@ -82,7 +83,7 @@
my $s = $r->server;
- if ($r->args eq 'srv') {
+ if (defined $r->args and $r->args eq 'srv') {
my $srv_cfg = $self->get_config($s);
$r->print("srv: @{ $srv_cfg->{MyMergeTest}||[] }");
}
diff --git a/t/response/TestDirective/perlloadmodule3.pm b/t/response/TestDirective/perlloadmodule3.pm
index f513ebc..facb918 100644
--- a/t/response/TestDirective/perlloadmodule3.pm
+++ b/t/response/TestDirective/perlloadmodule3.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestDirective::perlloadmodule3;
# in this test we test various merging techniques. As a side effect it
diff --git a/t/response/TestDirective/perlloadmodule4.pm b/t/response/TestDirective/perlloadmodule4.pm
index b471800..6edc88a 100644
--- a/t/response/TestDirective/perlloadmodule4.pm
+++ b/t/response/TestDirective/perlloadmodule4.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestDirective::perlloadmodule4;
# XXX: the package is 99% the same as perlloadlmodule5 and 6, just the
diff --git a/t/response/TestDirective/perlloadmodule5.pm b/t/response/TestDirective/perlloadmodule5.pm
index 05f4ed6..9e88e2c 100644
--- a/t/response/TestDirective/perlloadmodule5.pm
+++ b/t/response/TestDirective/perlloadmodule5.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestDirective::perlloadmodule5;
# in this test we test an early mod_perl startup caused by an
diff --git a/t/response/TestDirective/perlloadmodule6.pm b/t/response/TestDirective/perlloadmodule6.pm
index 14d544a..fd8cdfe 100644
--- a/t/response/TestDirective/perlloadmodule6.pm
+++ b/t/response/TestDirective/perlloadmodule6.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestDirective::perlloadmodule6;
# in this test we test an early mod_perl startup caused by an
diff --git a/t/response/TestDirective/perlloadmodule7.pm b/t/response/TestDirective/perlloadmodule7.pm
index b589487..a4fc27a 100644
--- a/t/response/TestDirective/perlloadmodule7.pm
+++ b/t/response/TestDirective/perlloadmodule7.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestDirective::perlloadmodule7;
# this test was written to reproduce a segfault under worker
diff --git a/t/response/TestDirective/perlmodule.pm b/t/response/TestDirective/perlmodule.pm
index 392064c..8f926a4 100644
--- a/t/response/TestDirective/perlmodule.pm
+++ b/t/response/TestDirective/perlmodule.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestDirective::perlmodule;
# This test is similar to TestDirective::perlrequire. Here we test
diff --git a/t/response/TestDirective/perlrequire.pm b/t/response/TestDirective/perlrequire.pm
index a041fc2..1a37130 100644
--- a/t/response/TestDirective/perlrequire.pm
+++ b/t/response/TestDirective/perlrequire.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestDirective::perlrequire;
# Test whether vhost with 'PerlOptions +Parent', which doesn't inherit
diff --git a/t/response/TestDirective/pod.pm b/t/response/TestDirective/pod.pm
index 9556cfe..b220f2b 100644
--- a/t/response/TestDirective/pod.pm
+++ b/t/response/TestDirective/pod.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestDirective::pod;
use strict;
diff --git a/t/response/TestDirective/setupenv.pm b/t/response/TestDirective/setupenv.pm
index f6a1703..dfcdfe7 100644
--- a/t/response/TestDirective/setupenv.pm
+++ b/t/response/TestDirective/setupenv.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestDirective::setupenv;
use strict;
diff --git a/t/response/TestError/api.pm b/t/response/TestError/api.pm
index 4d1a107..831d99a 100644
--- a/t/response/TestError/api.pm
+++ b/t/response/TestError/api.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestError::api;
use strict;
diff --git a/t/response/TestError/runtime.pm b/t/response/TestError/runtime.pm
index c56a47e..91ca446 100644
--- a/t/response/TestError/runtime.pm
+++ b/t/response/TestError/runtime.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestError::runtime;
use strict;
diff --git a/t/response/TestError/syntax.pm b/t/response/TestError/syntax.pm
index 3768f87..3886a8c 100644
--- a/t/response/TestError/syntax.pm
+++ b/t/response/TestError/syntax.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestError::syntax;
use strict;
diff --git a/t/response/TestModperl/cookie.pm b/t/response/TestModperl/cookie.pm
index 8d81588..32fccf0 100644
--- a/t/response/TestModperl/cookie.pm
+++ b/t/response/TestModperl/cookie.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::cookie;
use strict;
diff --git a/t/response/TestModperl/cookie2.pm b/t/response/TestModperl/cookie2.pm
index 806304e..1f8a289 100644
--- a/t/response/TestModperl/cookie2.pm
+++ b/t/response/TestModperl/cookie2.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::cookie2;
use strict;
diff --git a/t/response/TestModperl/current_callback.pm b/t/response/TestModperl/current_callback.pm
index 0ae7509..a80425f 100644
--- a/t/response/TestModperl/current_callback.pm
+++ b/t/response/TestModperl/current_callback.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::current_callback;
use strict;
diff --git a/t/response/TestModperl/dir_config.pm b/t/response/TestModperl/dir_config.pm
index 0a60816..b5608fd 100644
--- a/t/response/TestModperl/dir_config.pm
+++ b/t/response/TestModperl/dir_config.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::dir_config;
use strict;
diff --git a/t/response/TestModperl/endav.pm b/t/response/TestModperl/endav.pm
index 14d22a9..5860d52 100644
--- a/t/response/TestModperl/endav.pm
+++ b/t/response/TestModperl/endav.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::endav;
use strict;
diff --git a/t/response/TestModperl/env.pm b/t/response/TestModperl/env.pm
index 66d5135..62eac81 100644
--- a/t/response/TestModperl/env.pm
+++ b/t/response/TestModperl/env.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::env;
use strict;
diff --git a/t/response/TestModperl/exit.pm b/t/response/TestModperl/exit.pm
index 9888ffe..31b8e33 100644
--- a/t/response/TestModperl/exit.pm
+++ b/t/response/TestModperl/exit.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::exit;
# there is no need to call ModPerl::Util::exit() explicitly, a plain
diff --git a/t/response/TestModperl/getc.pm b/t/response/TestModperl/getc.pm
index 25ab235..1b49f22 100644
--- a/t/response/TestModperl/getc.pm
+++ b/t/response/TestModperl/getc.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::getc;
use strict;
diff --git a/t/response/TestModperl/interpreter.pm b/t/response/TestModperl/interpreter.pm
new file mode 100644
index 0000000..0e01f9b
--- /dev/null
+++ b/t/response/TestModperl/interpreter.pm
@@ -0,0 +1,81 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
+package TestModperl::interpreter;
+
+use strict;
+use warnings FATAL => 'all';
+
+use Apache::Test;
+use Apache::TestUtil;
+
+use Apache2::MPM ();
+
+use Apache2::Const -compile => 'OK';
+
+sub handler {
+ my $r = shift;
+
+ my $is_threaded=Apache2::MPM->is_threaded;
+
+ plan $r, tests => $is_threaded?17:5, need
+ need_threads,
+ {"perl >= 5.8.1 is required (this is $])" => ($] >= 5.008001)};
+
+ require ModPerl::Interpreter;
+ require ModPerl::InterpPool;
+ require ModPerl::TiPool;
+ require ModPerl::TiPoolConfig;
+
+ my $interp = ModPerl::Interpreter->current;
+
+ ok t_cmp(ref($interp), 'ModPerl::Interpreter',
+ 'interp is a ModPerl::Interpreter');
+
+ ok t_cmp($$interp==${ModPerl::Interpreter::current()}, !!1,
+ 'ModPerl::Interpreter->current == ModPerl::Interpreter::current');
+
+ my $mip = $interp->mip;
+
+ ok t_cmp(ref($mip), 'ModPerl::InterpPool',
+ 'interp->mip is a ModPerl::InterpPool');
+
+ ok t_cmp(${$mip->server}==${$r->server}, !!1,
+ 'mip->server == r->server');
+
+ ok t_cmp(ref($mip->parent), 'ModPerl::Interpreter',
+ 'mip->parent is a ModPerl::Interpreter');
+
+ if($is_threaded) {
+ ok t_cmp($interp->perl!=0, !!1, 'interp->perl');
+ ok t_cmp($interp->num_requests>0, !!1, 'interp->num_requests');
+ ok t_cmp($interp->refcnt>0, !!1, 'interp->refcnt');
+
+ my $tipool = $mip->tipool;
+
+ ok t_cmp(ref($tipool), 'ModPerl::TiPool',
+ 'mip->tipool is a ModPerl::TiPool');
+
+ ok t_cmp($tipool->in_use!=0, !!1, 'tipool->in_use');
+
+ ok t_cmp($tipool->size!=0, !!1, 'tipool->size');
+
+ my $tipcfg = $tipool->cfg;
+
+ ok t_cmp(ref($tipcfg), 'ModPerl::TiPoolConfig',
+ 'tipool->cfg is a ModPerl::TiPoolConfig');
+
+ ok t_cmp($tipcfg->start!=0, !!1, 'tipcfg->start');
+
+ ok t_cmp($tipcfg->min_spare!=0, !!1, 'tipcfg->min_spare');
+
+ ok t_cmp($tipcfg->max_spare!=0, !!1, 'tipcfg->max_spare');
+
+ ok t_cmp($tipcfg->max!=0, !!1, 'tipcfg->max');
+
+ ok t_cmp($tipcfg->max_requests!=0, !!1, 'tipcfg->max_requests');
+ }
+
+ Apache2::Const::OK;
+}
+
+1;
+__END__
diff --git a/t/response/TestModperl/io_nested_with_closed_stds.pm b/t/response/TestModperl/io_nested_with_closed_stds.pm
index a46b14c..f87373c 100644
--- a/t/response/TestModperl/io_nested_with_closed_stds.pm
+++ b/t/response/TestModperl/io_nested_with_closed_stds.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::io_nested_with_closed_stds;
# test that we can successfully override STD(IN|OUT) for
diff --git a/t/response/TestModperl/io_with_closed_stds.pm b/t/response/TestModperl/io_with_closed_stds.pm
index 2aeb729..b07a7cd 100644
--- a/t/response/TestModperl/io_with_closed_stds.pm
+++ b/t/response/TestModperl/io_with_closed_stds.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::io_with_closed_stds;
# test that we can successfully override STD(IN|OUT) for
diff --git a/t/response/TestModperl/local_env.pm b/t/response/TestModperl/local_env.pm
index dc56b6f..ed18c6a 100644
--- a/t/response/TestModperl/local_env.pm
+++ b/t/response/TestModperl/local_env.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::local_env;
use strict;
diff --git a/t/response/TestModperl/merge.pm b/t/response/TestModperl/merge.pm
index 7d27394..da4460a 100644
--- a/t/response/TestModperl/merge.pm
+++ b/t/response/TestModperl/merge.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::merge;
use strict;
diff --git a/t/response/TestModperl/method.pm b/t/response/TestModperl/method.pm
index 5328b35..568784e 100644
--- a/t/response/TestModperl/method.pm
+++ b/t/response/TestModperl/method.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::method;
use strict;
diff --git a/t/response/TestModperl/methodname.pm b/t/response/TestModperl/methodname.pm
index 25388f4..e5464a6 100644
--- a/t/response/TestModperl/methodname.pm
+++ b/t/response/TestModperl/methodname.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::methodname;
use strict;
diff --git a/t/response/TestModperl/methodobj.pm b/t/response/TestModperl/methodobj.pm
index 0e9d9c4..3d8f3af 100644
--- a/t/response/TestModperl/methodobj.pm
+++ b/t/response/TestModperl/methodobj.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::methodobj;
use strict;
diff --git a/t/response/TestModperl/perl.pm b/t/response/TestModperl/perl.pm
index 78d8fb2..a49c784 100644
--- a/t/response/TestModperl/perl.pm
+++ b/t/response/TestModperl/perl.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::perl;
# this test includes tests for buggy Perl functions for which mod_perl
diff --git a/t/response/TestModperl/perl_options.pm b/t/response/TestModperl/perl_options.pm
index 7e5cd3f..9908650 100644
--- a/t/response/TestModperl/perl_options.pm
+++ b/t/response/TestModperl/perl_options.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::perl_options;
# test whether PerlOptions options are enabled
diff --git a/t/response/TestModperl/perl_options2.pm b/t/response/TestModperl/perl_options2.pm
index 97ffb10..29f8a46 100644
--- a/t/response/TestModperl/perl_options2.pm
+++ b/t/response/TestModperl/perl_options2.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::perl_options2;
# test whether PerlOptions None works
diff --git a/t/response/TestModperl/pnotes.pm b/t/response/TestModperl/pnotes.pm
index 1bfe7d6..1a354aa 100644
--- a/t/response/TestModperl/pnotes.pm
+++ b/t/response/TestModperl/pnotes.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::pnotes;
use strict;
diff --git a/t/response/TestModperl/pnotes2.pm b/t/response/TestModperl/pnotes2.pm
index 05395a6..fd3d14a 100644
--- a/t/response/TestModperl/pnotes2.pm
+++ b/t/response/TestModperl/pnotes2.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::pnotes2;
use strict;
@@ -82,8 +83,3 @@
1;
__END__
-
-# Local Variables: #
-# mode: cperl #
-# cperl-indent-level: 4 #
-# End: #
diff --git a/t/response/TestModperl/post_utf8.pm b/t/response/TestModperl/post_utf8.pm
index 7e27bce..5544bc1 100644
--- a/t/response/TestModperl/post_utf8.pm
+++ b/t/response/TestModperl/post_utf8.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::post_utf8;
use strict;
diff --git a/t/response/TestModperl/print.pm b/t/response/TestModperl/print.pm
index 94fd919..64d8968 100644
--- a/t/response/TestModperl/print.pm
+++ b/t/response/TestModperl/print.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::print;
use strict;
diff --git a/t/response/TestModperl/print_utf8.pm b/t/response/TestModperl/print_utf8.pm
index 1223eae..f95ca48 100644
--- a/t/response/TestModperl/print_utf8.pm
+++ b/t/response/TestModperl/print_utf8.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::print_utf8;
# testing the utf8-encoded response via a tied STDOUT/perlio STDOUT,
diff --git a/t/response/TestModperl/print_utf8_2.pm b/t/response/TestModperl/print_utf8_2.pm
index 15b7cc7..423c7de 100644
--- a/t/response/TestModperl/print_utf8_2.pm
+++ b/t/response/TestModperl/print_utf8_2.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::print_utf8_2;
# testing the utf8-encoded response via direct $r->print, which does the
diff --git a/t/response/TestModperl/printf.pm b/t/response/TestModperl/printf.pm
index cb2a331..54b1e89 100644
--- a/t/response/TestModperl/printf.pm
+++ b/t/response/TestModperl/printf.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::printf;
use strict;
diff --git a/t/response/TestModperl/readline.pm b/t/response/TestModperl/readline.pm
index e63d765..705cf0f 100644
--- a/t/response/TestModperl/readline.pm
+++ b/t/response/TestModperl/readline.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::readline;
use strict;
diff --git a/t/response/TestModperl/request_rec_perlio_api.pm b/t/response/TestModperl/request_rec_perlio_api.pm
index 774da6e..c8a225f 100644
--- a/t/response/TestModperl/request_rec_perlio_api.pm
+++ b/t/response/TestModperl/request_rec_perlio_api.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::request_rec_perlio_api;
# this test is relevant only when the PerlIO STDIN/STDOUT are used (when
@@ -41,7 +42,7 @@
open STDIN, "<", __FILE__
or die "failed to open STDIN as 'in memory' file : $!";
my $data;
- read STDIN, $data, length("package");
+ read STDIN, $data, length("# please");
print STDOUT $data;
close STDIN;
diff --git a/t/response/TestModperl/request_rec_tie_api.pm b/t/response/TestModperl/request_rec_tie_api.pm
index 675178b..d27c44e 100644
--- a/t/response/TestModperl/request_rec_tie_api.pm
+++ b/t/response/TestModperl/request_rec_tie_api.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::request_rec_tie_api;
# this test is relevant only when the tied STDIN/STDOUT are used (when
diff --git a/t/response/TestModperl/setauth.pm b/t/response/TestModperl/setauth.pm
index 03498bd..ce992cd 100644
--- a/t/response/TestModperl/setauth.pm
+++ b/t/response/TestModperl/setauth.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::setauth;
use strict;
@@ -15,7 +16,7 @@
plan $r, tests => 2;
- ok t_cmp($r->auth_type(), undef, 'auth_type');
+ ok t_cmp($r->auth_type(), "none", 'auth_type');
t_server_log_error_is_expected();
$r->get_basic_auth_pw();
diff --git a/t/response/TestModperl/setupenv.pm b/t/response/TestModperl/setupenv.pm
index b5e12c9..7154340 100644
--- a/t/response/TestModperl/setupenv.pm
+++ b/t/response/TestModperl/setupenv.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::setupenv;
use strict;
diff --git a/t/response/TestModperl/setupenv2.pm b/t/response/TestModperl/setupenv2.pm
index a3bb46a..bb27314 100644
--- a/t/response/TestModperl/setupenv2.pm
+++ b/t/response/TestModperl/setupenv2.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::setupenv2;
# Test the mixing of PerlSetEnv in httpd.conf and %ENV of the same
diff --git a/t/response/TestModperl/status.pm b/t/response/TestModperl/status.pm
index b8f7608..26964db 100644
--- a/t/response/TestModperl/status.pm
+++ b/t/response/TestModperl/status.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::status;
use strict;
diff --git a/t/response/TestModperl/subenv.pm b/t/response/TestModperl/subenv.pm
index db6c377..bd02d4b 100644
--- a/t/response/TestModperl/subenv.pm
+++ b/t/response/TestModperl/subenv.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::subenv;
use strict;
diff --git a/t/response/TestModperl/taint.pm b/t/response/TestModperl/taint.pm
index 2daaa00..090c524 100644
--- a/t/response/TestModperl/taint.pm
+++ b/t/response/TestModperl/taint.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::taint;
use strict;
diff --git a/t/response/TestModperl/util.pm b/t/response/TestModperl/util.pm
index c5b6fd2..d622992 100644
--- a/t/response/TestModperl/util.pm
+++ b/t/response/TestModperl/util.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModperl::util;
# Modperl::Util tests
diff --git a/t/response/TestModules/cgi.pm b/t/response/TestModules/cgi.pm
index 85b6203..7fcf883 100644
--- a/t/response/TestModules/cgi.pm
+++ b/t/response/TestModules/cgi.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModules::cgi;
use strict;
diff --git a/t/response/TestModules/cgi2.pm b/t/response/TestModules/cgi2.pm
index 772c6c8..8d87638 100644
--- a/t/response/TestModules/cgi2.pm
+++ b/t/response/TestModules/cgi2.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModules::cgi2;
# this handler doesn't use the :Apache layer, so CGI.pm needs to do
diff --git a/t/response/TestModules/cgipost.pm b/t/response/TestModules/cgipost.pm
index 4c59625..48c0820 100644
--- a/t/response/TestModules/cgipost.pm
+++ b/t/response/TestModules/cgipost.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModules::cgipost;
use strict;
diff --git a/t/response/TestModules/cgipost2.pm b/t/response/TestModules/cgipost2.pm
index e030a5c..57dc9fe 100644
--- a/t/response/TestModules/cgipost2.pm
+++ b/t/response/TestModules/cgipost2.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModules::cgipost2;
# this handler doesn't use the :Apache layer, so CGI.pm needs to do
diff --git a/t/response/TestModules/cgiupload.pm b/t/response/TestModules/cgiupload.pm
index fa75d3c..7952268 100644
--- a/t/response/TestModules/cgiupload.pm
+++ b/t/response/TestModules/cgiupload.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModules::cgiupload;
use strict;
diff --git a/t/response/TestModules/cgiupload2.pm b/t/response/TestModules/cgiupload2.pm
index 1243599..3c4a522 100644
--- a/t/response/TestModules/cgiupload2.pm
+++ b/t/response/TestModules/cgiupload2.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModules::cgiupload2;
# this handler doesn't use the :Apache layer, so CGI.pm needs to do
diff --git a/t/response/TestModules/include_subreq.pm b/t/response/TestModules/include_subreq.pm
index 42617a9..cf2bc2c 100644
--- a/t/response/TestModules/include_subreq.pm
+++ b/t/response/TestModules/include_subreq.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModules::include_subreq;
# this test calls a simple response handler, whose output includes a
diff --git a/t/response/TestModules/proxy.pm b/t/response/TestModules/proxy.pm
index ab59026..83e6e6e 100644
--- a/t/response/TestModules/proxy.pm
+++ b/t/response/TestModules/proxy.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestModules::proxy;
use strict;
diff --git a/t/response/TestPerl/api.pm b/t/response/TestPerl/api.pm
index 081ea5f..c034f08 100644
--- a/t/response/TestPerl/api.pm
+++ b/t/response/TestPerl/api.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestPerl::api;
# some perl APIs that we need to test that they work alright under mod_perl
diff --git a/t/response/TestPerl/hash_attack.pm b/t/response/TestPerl/hash_attack.pm
index 8b1805a..e76b432 100644
--- a/t/response/TestPerl/hash_attack.pm
+++ b/t/response/TestPerl/hash_attack.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestPerl::hash_attack;
# if the rehashing of the keys in the stash happens due to the hash attack,
diff --git a/t/response/TestPerl/ithreads.pm b/t/response/TestPerl/ithreads.pm
index 2aef130..84f11f6 100644
--- a/t/response/TestPerl/ithreads.pm
+++ b/t/response/TestPerl/ithreads.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestPerl::ithreads;
use strict;
diff --git a/t/response/TestPerl/ithreads3.pm b/t/response/TestPerl/ithreads3.pm
new file mode 100644
index 0000000..dbe9b2e
--- /dev/null
+++ b/t/response/TestPerl/ithreads3.pm
@@ -0,0 +1,109 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
+package TestPerl::ithreads3;
+
+use strict;
+use warnings FATAL => 'all';
+
+use Apache2::RequestRec;
+use Apache2::RequestIO;
+use Apache2::RequestUtil;
+use APR::Pool;
+use Apache2::Const -compile => 'OK', 'DECLINED';
+
+# XXX: These tests rely on the assumption that the virtual host is not
+# otherwise accessed. In this case the same interpreter is chosen
+# for each phase. The $counter counts them.
+# Of course if only 1 interp is configured it must be hit each time.
+
+my $counter=0;
+
+sub response {
+ my $r=shift;
+ $r->content_type('text/plain');
+ $r->print($counter);
+ return Apache2::Const::OK;
+}
+
+sub count { $counter++; return Apache2::Const::DECLINED; }
+
+sub clear_pool {
+ delete $_[0]->pnotes->{my_pool};
+ return Apache2::Const::DECLINED;
+}
+
+sub trans {
+ my $r=shift;
+ my $test=$r->args;
+ $counter=0;
+ if( $test eq '1' ) {
+ # this is to check for a bug in modperl_response_handler versus
+ # modperl_response_handler_cgi. The former used to allocate an
+ # extra interpreter for its work. In both cases $counter should be
+ # 2 in the response phase
+ $r->push_handlers( PerlMapToStorageHandler=>__PACKAGE__.'::count' );
+ $r->push_handlers( PerlFixupHandler=>__PACKAGE__.'::count' );
+ }
+ elsif( $test eq '2' ) {
+ # now add an extra PerlCleanupHandler. It is run each time the
+ # interp is released. So it is run after Trans, MapToStorage and
+ # Fixup. In the response phase $counter should be 5. After Response
+ # it is run again but that is after.
+ # This used to eat up all interpreters because modperl_interp_unselect
+ # calls modperl_config_request_cleanup that allocates a new interp
+ # to handle the cleanup. When this interp is then unselected
+ # modperl_interp_unselect gets called again but the cleanup handler is
+ # still installed. So the cycle starts again until all interpreters
+ # are in use or the stack runs out. Then the thread is locked infinitely
+ # or a segfault appears.
+ $r->push_handlers( PerlMapToStorageHandler=>__PACKAGE__.'::count' );
+ $r->push_handlers( PerlFixupHandler=>__PACKAGE__.'::count' );
+ $r->push_handlers( PerlCleanupHandler=>__PACKAGE__.'::count' );
+ }
+ elsif( $test eq '3' ) {
+ # a subpool adds an extra reference to the interp. So it is preserved
+ # and bound to the request until the pool is destroyed. So the cleanup
+ # handler is run only once after Fixup. Hence the counter is 3.
+ $r->push_handlers( PerlMapToStorageHandler=>__PACKAGE__.'::count' );
+ $r->push_handlers( PerlFixupHandler=>__PACKAGE__.'::count' );
+ $r->push_handlers( PerlCleanupHandler=>__PACKAGE__.'::count' );
+ $r->pnotes->{my_pool}=$r->pool->new;
+ $r->push_handlers( PerlFixupHandler=>__PACKAGE__.'::clear_pool' );
+ }
+ return Apache2::Const::DECLINED;
+}
+
+1;
+
+__END__
+# APACHE_TEST_CONFIG_ORDER 942
+
+<VirtualHost TestPerl::ithreads3>
+
+ <IfDefine PERL_USEITHREADS>
+ # a new interpreter pool
+ PerlOptions +Parent
+ PerlInterpStart 3
+ PerlInterpMax 3
+ PerlInterpMinSpare 1
+ PerlInterpMaxSpare 3
+ PerlInterpScope handler
+ </IfDefine>
+
+ # use test system's @INC
+ PerlSwitches -I@serverroot@
+ PerlRequire "conf/modperl_inc.pl"
+ PerlModule TestPerl::ithreads3
+
+ <Location /modperl>
+ SetHandler modperl
+ PerlResponseHandler TestPerl::ithreads3::response
+ </Location>
+
+ <Location /perl-script>
+ SetHandler perl-script
+ PerlResponseHandler TestPerl::ithreads3::response
+ </Location>
+
+ PerlTransHandler TestPerl::ithreads3::trans
+
+</VirtualHost>
diff --git a/t/response/TestPerl/ithreads_args.pm b/t/response/TestPerl/ithreads_args.pm
index d6751d0..b3e6eb8 100644
--- a/t/response/TestPerl/ithreads_args.pm
+++ b/t/response/TestPerl/ithreads_args.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestPerl::ithreads_args;
# reproducing a bug in perl ithreads: [perl #34342]
diff --git a/t/response/TestPerl/ithreads_eval.pm b/t/response/TestPerl/ithreads_eval.pm
index abcb5bb..fe1b0af 100644
--- a/t/response/TestPerl/ithreads_eval.pm
+++ b/t/response/TestPerl/ithreads_eval.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestPerl::ithreads_eval;
# reproducing a bug in perl ithreads: [perl #34341]
diff --git a/t/response/TestPerl/signals.pm b/t/response/TestPerl/signals.pm
index fd25f5e..2c08d43 100644
--- a/t/response/TestPerl/signals.pm
+++ b/t/response/TestPerl/signals.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestPerl::signals;
use strict;
diff --git a/t/response/TestUser/rewrite.pm b/t/response/TestUser/rewrite.pm
index f3ab1ba..0416612 100644
--- a/t/response/TestUser/rewrite.pm
+++ b/t/response/TestUser/rewrite.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestUser::rewrite;
# test here the technique of rewriting the URI namespace and
diff --git a/t/response/TestVhost/config.pm b/t/response/TestVhost/config.pm
index b752694..4a581b6 100644
--- a/t/response/TestVhost/config.pm
+++ b/t/response/TestVhost/config.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestVhost::config;
# Test whether under threaded mpms (and not) a vhost with 'PerlOptions
diff --git a/t/response/TestVhost/log.pm b/t/response/TestVhost/log.pm
index f6c3fa0..2bbf438 100644
--- a/t/response/TestVhost/log.pm
+++ b/t/response/TestVhost/log.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestVhost::log;
# testing that the warn and other logging functions are writing into
diff --git a/t/user/rewrite.t b/t/user/rewrite.t
index 9e95b90..64afec6 100644
--- a/t/user/rewrite.t
+++ b/t/user/rewrite.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use strict;
use warnings FATAL => 'all';
diff --git a/t/vhost/config.t b/t/vhost/config.t
index 23f62b4..36d1a49 100644
--- a/t/vhost/config.t
+++ b/t/vhost/config.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# the handler is configured in modperl_extra.pl via
# Apache2::ServerUtil->server->add_config
diff --git a/t/vhost/log.t b/t/vhost/log.t
index 963ab4b..3205905 100644
--- a/t/vhost/log.t
+++ b/t/vhost/log.t
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use Apache::TestUtil;
use Apache::TestRequest 'GET_BODY_ASSERT';
diff --git a/util/apr_arg_check.pl b/util/apr_arg_check.pl
index 8179fda..301a4fd 100755
--- a/util/apr_arg_check.pl
+++ b/util/apr_arg_check.pl
@@ -1,4 +1,5 @@
#!/usr/bin/perl -w
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use lib qw(lib);
diff --git a/util/apr_pool_check.pl b/util/apr_pool_check.pl
index efd63b4..056c8cf 100755
--- a/util/apr_pool_check.pl
+++ b/util/apr_pool_check.pl
@@ -1,4 +1,5 @@
#!/usr/bin/perl -w
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
#check which apr_ functions do not have access to a pool
diff --git a/util/cvsize.pl b/util/cvsize.pl
index 73d4811..8e6682c 100755
--- a/util/cvsize.pl
+++ b/util/cvsize.pl
@@ -1,4 +1,5 @@
#!/usr/bin/perl -w
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
#get an idea of how much space the XS interface will eat
#build/source_scan.pl must be run first
diff --git a/util/getdiff.pl b/util/getdiff.pl
index faf8360..5b4cbb0 100755
--- a/util/getdiff.pl
+++ b/util/getdiff.pl
@@ -1,4 +1,5 @@
#!/usr/bin/perl -w
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# this script creates a diff against SVN
# and against /dev/null for all files in ARGV
diff --git a/util/methodlookup_check.pl b/util/methodlookup_check.pl
index ea6fb16..95da6fd 100755
--- a/util/methodlookup_check.pl
+++ b/util/methodlookup_check.pl
@@ -1,4 +1,5 @@
#!/usr/bin/perl
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# this script checks whether all XS methods are known to ModPerl::MethodLookup
diff --git a/util/perl_bloat.pl b/util/perl_bloat.pl
index b374696..421d393 100755
--- a/util/perl_bloat.pl
+++ b/util/perl_bloat.pl
@@ -1,4 +1,5 @@
#!/usr/bin/perl -w
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# perlbloat.pl 'some perlcode' 'more perl code'
# perlbloat.pl Foo/Bar.pm Bar/Tar.pm
diff --git a/util/sizeof.pl b/util/sizeof.pl
index 61535d8..1a6d3ec 100644
--- a/util/sizeof.pl
+++ b/util/sizeof.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
#calculate structure sizes listed in pod/modperl_sizeof.pod via sizeof()
use strict;
diff --git a/util/source_stats.pl b/util/source_stats.pl
index ef09f9e..fc502b0 100755
--- a/util/source_stats.pl
+++ b/util/source_stats.pl
@@ -1,4 +1,5 @@
#!/usr/bin/perl -w
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use lib qw(lib);
diff --git a/util/xs_check.pl b/util/xs_check.pl
index 6acc94a..01ec89b 100644
--- a/util/xs_check.pl
+++ b/util/xs_check.pl
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
use lib qw(Apache-Test/lib lib xs/tables/current);
use strict;
diff --git a/xs/APR/APR/APR.pm b/xs/APR/APR/APR.pm
index f0e5798..b06a3b6 100644
--- a/xs/APR/APR/APR.pm
+++ b/xs/APR/APR/APR.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
diff --git a/xs/APR/APR/Makefile.PL b/xs/APR/APR/Makefile.PL
index 99ac3d4..8745a54 100644
--- a/xs/APR/APR/Makefile.PL
+++ b/xs/APR/APR/Makefile.PL
@@ -37,7 +37,7 @@
my $mp_apr_lib = $build->mp_apr_lib;
if (CYGWIN) {
- # For Cygwin compatibility, set $mp_apr_lib before the apru flags
+ # For Cygwin compatibility, set $mp_apr_lib before the apache libs
$libs = qq{ $mp_apr_lib } . $libs;
} else {
$libs .= qq{ $mp_apr_lib };
diff --git a/xs/APR/Base64/APR__Base64.h b/xs/APR/Base64/APR__Base64.h
index f5df742..8ed26f9 100644
--- a/xs/APR/Base64/APR__Base64.h
+++ b/xs/APR/Base64/APR__Base64.h
@@ -55,3 +55,10 @@
mpxs_set_targ(mpxs_apr_base64_decode, ST(0));
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/APR/Brigade/APR__Brigade.h b/xs/APR/Brigade/APR__Brigade.h
index 6dc8997..15181fd 100644
--- a/xs/APR/Brigade/APR__Brigade.h
+++ b/xs/APR/Brigade/APR__Brigade.h
@@ -171,3 +171,10 @@
{
MP_RUN_CROAK(apr_brigade_destroy(bb), "APR::Brigade::destroy");
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/APR/Bucket/APR__Bucket.h b/xs/APR/Bucket/APR__Bucket.h
index dfd63b0..6c09c75 100644
--- a/xs/APR/Bucket/APR__Bucket.h
+++ b/xs/APR/Bucket/APR__Bucket.h
@@ -122,3 +122,10 @@
return rc;
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/APR/BucketAlloc/APR__BucketAlloc.h b/xs/APR/BucketAlloc/APR__BucketAlloc.h
index a29a173..bfb2a19 100644
--- a/xs/APR/BucketAlloc/APR__BucketAlloc.h
+++ b/xs/APR/BucketAlloc/APR__BucketAlloc.h
@@ -27,3 +27,10 @@
mpxs_add_pool_magic(ba_sv, p_sv);
return ba_sv;
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/APR/Const/Const.pm b/xs/APR/Const/Const.pm
index b9b3ce6..cb264f6 100644
--- a/xs/APR/Const/Const.pm
+++ b/xs/APR/Const/Const.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
diff --git a/xs/APR/Error/APR__Error.h b/xs/APR/Error/APR__Error.h
index 900f05c..c7dafd9 100644
--- a/xs/APR/Error/APR__Error.h
+++ b/xs/APR/Error/APR__Error.h
@@ -15,3 +15,10 @@
*/
#define mpxs_APR__Error_strerror(rc) modperl_error_strerror(aTHX_ rc)
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/APR/Finfo/APR__Finfo.h b/xs/APR/Finfo/APR__Finfo.h
index 050d0e6..36843ab 100644
--- a/xs/APR/Finfo/APR__Finfo.h
+++ b/xs/APR/Finfo/APR__Finfo.h
@@ -30,3 +30,10 @@
return finfo_sv;
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/APR/IpSubnet/APR__IpSubnet.h b/xs/APR/IpSubnet/APR__IpSubnet.h
index 034be01..c2d6793 100644
--- a/xs/APR/IpSubnet/APR__IpSubnet.h
+++ b/xs/APR/IpSubnet/APR__IpSubnet.h
@@ -28,3 +28,10 @@
mpxs_add_pool_magic(ipsub_sv, p_sv);
return ipsub_sv;
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/APR/Lock/APR__Lock.h b/xs/APR/Lock/APR__Lock.h
index 53cbbd3..1054331 100644
--- a/xs/APR/Lock/APR__Lock.h
+++ b/xs/APR/Lock/APR__Lock.h
@@ -13,3 +13,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/APR/OS/APR__OS.h b/xs/APR/OS/APR__OS.h
index f2f17a2..5cd6f59 100644
--- a/xs/APR/OS/APR__OS.h
+++ b/xs/APR/OS/APR__OS.h
@@ -22,3 +22,10 @@
return 0;
#endif
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/APR/PerlIO/PerlIO.pm b/xs/APR/PerlIO/PerlIO.pm
index 2ea04d0..72a6330 100644
--- a/xs/APR/PerlIO/PerlIO.pm
+++ b/xs/APR/PerlIO/PerlIO.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
@@ -21,7 +22,7 @@
# The PerlIO layer is available only since 5.8.0 (5.7.2@13534)
use Config;
-use constant PERLIO_LAYERS_ARE_ENABLED => $Config{useperlio} && $] >= 5.00703;
+use constant PERLIO_LAYERS_ARE_ENABLED => $Config{useperlio} && $] >= 5.007003;
use APR ();
use APR::XSLoader ();
diff --git a/xs/APR/PerlIO/modperl_apr_perlio.c b/xs/APR/PerlIO/modperl_apr_perlio.c
index 068655d..e8c93a4 100644
--- a/xs/APR/PerlIO/modperl_apr_perlio.c
+++ b/xs/APR/PerlIO/modperl_apr_perlio.c
@@ -624,3 +624,10 @@
}
#endif /* PERLIO_LAYERS */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/APR/PerlIO/modperl_apr_perlio.h b/xs/APR/PerlIO/modperl_apr_perlio.h
index 122aecf..15c853a 100644
--- a/xs/APR/PerlIO/modperl_apr_perlio.h
+++ b/xs/APR/PerlIO/modperl_apr_perlio.h
@@ -74,3 +74,10 @@
#endif /* MP_SOURCE_SCAN */
#endif /* MODPERL_APR_PERLIO_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/APR/Pool/APR__Pool.h b/xs/APR/Pool/APR__Pool.h
index 7f4c253..4a168b3 100644
--- a/xs/APR/Pool/APR__Pool.h
+++ b/xs/APR/Pool/APR__Pool.h
@@ -77,6 +77,8 @@
* there are no more references, in which case \
* the interpreter will be putback into the mip \
*/ \
+ MP_TRACE_i(MP_FUNC, "DO: calling interp_unselect(0x%lx)", \
+ acct->interp); \
(void)modperl_opt_interp_unselect(acct->interp); \
} \
} STMT_END
@@ -100,6 +102,8 @@
if (modperl_opt_thx_interp_get) { \
if ((acct->interp = modperl_opt_thx_interp_get(aTHX))) { \
acct->interp->refcnt++; \
+ MP_TRACE_i(MP_FUNC, "TO: (0x%lx)->refcnt incremented to %ld", \
+ acct->interp, acct->interp->refcnt); \
} \
} \
} STMT_END
@@ -313,6 +317,7 @@
* there are no more references, in which case
* the interpreter will be putback into the mip
*/
+ MP_TRACE_i(MP_FUNC, "calling interp_unselect(0x%lx)", cdata->interp);
(void)modperl_opt_interp_unselect(cdata->interp);
}
#endif
@@ -344,6 +349,8 @@
if (modperl_opt_thx_interp_get) {
if ((data->interp = modperl_opt_thx_interp_get(data->perl))) {
data->interp->refcnt++;
+ MP_TRACE_i(MP_FUNC, "(0x%lx)->refcnt incremented to %ld",
+ data->interp, data->interp->refcnt);
}
}
#endif
@@ -382,3 +389,10 @@
apr_pool_destroy(p);
}
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/APR/SockAddr/APR__SockAddr.h b/xs/APR/SockAddr/APR__SockAddr.h
index 6cdad71..06790d9 100644
--- a/xs/APR/SockAddr/APR__SockAddr.h
+++ b/xs/APR/SockAddr/APR__SockAddr.h
@@ -23,3 +23,10 @@
return addr;
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/APR/Socket/APR__Socket.h b/xs/APR/Socket/APR__Socket.h
index dfc681c..0c2a88e 100644
--- a/xs/APR/Socket/APR__Socket.h
+++ b/xs/APR/Socket/APR__Socket.h
@@ -118,10 +118,17 @@
}
#ifndef WIN32
-static MP_INLINE int mpxs_APR__Socket_fileno(pTHX_ apr_socket_t *sock)
+static MP_INLINE int mpxs_APR__Socket_fileno(pTHX_ apr_socket_t *socket)
{
apr_os_sock_t s;
- apr_os_sock_get(&s, sock);
+ apr_os_sock_get(&s, socket);
return s;
}
#endif
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/APR/Status/APR__Status.h b/xs/APR/Status/APR__Status.h
index 6c2a6fc..b741cb2 100644
--- a/xs/APR/Status/APR__Status.h
+++ b/xs/APR/Status/APR__Status.h
@@ -23,3 +23,10 @@
#define mpxs_APR__Status_is_ECONNABORTED APR_STATUS_IS_ECONNABORTED
#define mpxs_APR__Status_is_ECONNRESET APR_STATUS_IS_ECONNRESET
#define mpxs_APR__Status_is_TIMEUP APR_STATUS_IS_TIMEUP
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/APR/String/APR__String.h b/xs/APR/String/APR__String.h
index a18092b..a257cdd 100644
--- a/xs/APR/String/APR__String.h
+++ b/xs/APR/String/APR__String.h
@@ -23,3 +23,10 @@
return newSVpvn(buff, 4);
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/APR/Table/APR__Table.h b/xs/APR/Table/APR__Table.h
index dfadcc9..4ef6c49 100644
--- a/xs/APR/Table/APR__Table.h
+++ b/xs/APR/Table/APR__Table.h
@@ -232,3 +232,10 @@
});
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/APR/ThreadMutex/APR__ThreadMutex.h b/xs/APR/ThreadMutex/APR__ThreadMutex.h
index 626676b..3f4a395 100644
--- a/xs/APR/ThreadMutex/APR__ThreadMutex.h
+++ b/xs/APR/ThreadMutex/APR__ThreadMutex.h
@@ -28,3 +28,10 @@
mpxs_add_pool_magic(mutex_sv, p_sv);
return mutex_sv;
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/APR/ThreadRWLock/APR__ThreadRWLock.h b/xs/APR/ThreadRWLock/APR__ThreadRWLock.h
index ecbd6e5..a2d4d4b 100644
--- a/xs/APR/ThreadRWLock/APR__ThreadRWLock.h
+++ b/xs/APR/ThreadRWLock/APR__ThreadRWLock.h
@@ -27,3 +27,10 @@
mpxs_add_pool_magic(rwlock_sv, p_sv);
return rwlock_sv;
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/APR/URI/APR__URI.h b/xs/APR/URI/APR__URI.h
index a5345bb..59589aa 100644
--- a/xs/APR/URI/APR__URI.h
+++ b/xs/APR/URI/APR__URI.h
@@ -93,3 +93,10 @@
}
return (SV *)NULL;
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/APR/UUID/APR__UUID.h b/xs/APR/UUID/APR__UUID.h
index 3dcc11d..db29a69 100644
--- a/xs/APR/UUID/APR__UUID.h
+++ b/xs/APR/UUID/APR__UUID.h
@@ -49,3 +49,10 @@
}
#define apr_uuid_DESTROY(uuid) safefree(uuid)
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/APR/Util/APR__Util.h b/xs/APR/Util/APR__Util.h
index 7311ecb..e51aa7e 100644
--- a/xs/APR/Util/APR__Util.h
+++ b/xs/APR/Util/APR__Util.h
@@ -19,3 +19,10 @@
{
return apr_password_validate(passwd, hash) == APR_SUCCESS;
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/APR/aprext/Makefile.PL b/xs/APR/aprext/Makefile.PL
index c0be844..66a825d 100644
--- a/xs/APR/aprext/Makefile.PL
+++ b/xs/APR/aprext/Makefile.PL
@@ -19,6 +19,8 @@
$src{$cfile} = "$srcdir/$cfile";
}
+push @obj, q{modperl_dummy.o};
+
my @skip = qw(dynamic test);
push @skip, q{static}
unless (Apache2::Build::BUILD_APREXT);
diff --git a/xs/APR/aprext/modperl_dummy.c b/xs/APR/aprext/modperl_dummy.c
new file mode 100644
index 0000000..3cd0378
--- /dev/null
+++ b/xs/APR/aprext/modperl_dummy.c
@@ -0,0 +1,51 @@
+/* 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.
+ */
+
+#include "mod_perl.h"
+
+/* FIXME: To define extern perl_module to something so libaprext.lib can be
+ * linked without error when building against httpd-2.4+. (The symbol is
+ * referenced by modperl_apache_compat.h for httpd-2.4+, so must be defined
+ * somewhere in that case.)
+ */
+module AP_MODULE_DECLARE_DATA perl_module = {
+ STANDARD20_MODULE_STUFF,
+ NULL, /* dir config creater */
+ NULL, /* dir merger --- default is to override */
+ NULL, /* server config */
+ NULL, /* merge server config */
+ NULL, /* table of config file commands */
+ NULL, /* register hooks */
+};
+
+/* FIXME: These functions are called from modperl_trace() in libaprext.lib
+ * but are normally defined in mod_perl.c which can't be included.
+ */
+
+int modperl_is_running(void)
+{
+ return 0;
+}
+
+int modperl_threads_started(void)
+{
+ return 0;
+}
+
+int modperl_threaded_mpm(void)
+{
+ return 0;
+}
diff --git a/xs/Apache2/Access/Apache2__Access.h b/xs/Apache2/Access/Apache2__Access.h
index 539e201..fe0759e 100644
--- a/xs/Apache2/Access/Apache2__Access.h
+++ b/xs/Apache2/Access/Apache2__Access.h
@@ -19,7 +19,12 @@
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) {
@@ -95,11 +100,18 @@
const char *mpxs_Apache2__RequestRec_auth_type(pTHX_ request_rec *r,
char *type)
{
+ const char *ret = NULL;
+
if (type) {
mpxs_insert_auth_cfg(aTHX_ r, "AuthType", type);
}
- return ap_auth_type(r);
+ ret = ap_auth_type(r);
+ if (!ret) {
+ return "none";
+ }
+
+ return ret;
}
static MP_INLINE
@@ -154,3 +166,10 @@
return MP_HTTPD_OVERRIDE_OPTS_DEFAULT;
#endif
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/Apache2/CmdParms/Apache2__CmdParms.h b/xs/Apache2/CmdParms/Apache2__CmdParms.h
index 165350c..66497f2 100644
--- a/xs/Apache2/CmdParms/Apache2__CmdParms.h
+++ b/xs/Apache2/CmdParms/Apache2__CmdParms.h
@@ -46,3 +46,10 @@
return MP_HTTPD_OVERRIDE_OPTS_DEFAULT;
#endif
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/Apache2/Command/Apache2__Command.h b/xs/Apache2/Command/Apache2__Command.h
index cefefe6..9527d77 100644
--- a/xs/Apache2/Command/Apache2__Command.h
+++ b/xs/Apache2/Command/Apache2__Command.h
@@ -16,3 +16,10 @@
#define mpxs_Apache2__Command_next(cmd) \
(++cmd, ((cmd && cmd->name) ? cmd : NULL))
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/Apache2/Connection/Apache2__Connection.h b/xs/Apache2/Connection/Apache2__Connection.h
index 1c57ec3..9cdb2cd 100644
--- a/xs/Apache2/Connection/Apache2__Connection.h
+++ b/xs/Apache2/Connection/Apache2__Connection.h
@@ -40,3 +40,10 @@
{
return ap_get_remote_host(c, (void *)dir_config, type, NULL);
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/Apache2/ConnectionUtil/Apache2__ConnectionUtil.h b/xs/Apache2/ConnectionUtil/Apache2__ConnectionUtil.h
index 0a2a8c6..40e0c5f 100644
--- a/xs/Apache2/ConnectionUtil/Apache2__ConnectionUtil.h
+++ b/xs/Apache2/ConnectionUtil/Apache2__ConnectionUtil.h
@@ -24,6 +24,27 @@
if (!ccfg) {
return &PL_sv_undef;
}
-
- return modperl_pnotes(aTHX_ &ccfg->pnotes, key, val, NULL, c);
+
+ return modperl_pnotes(aTHX_ &ccfg->pnotes, key, val, c->pool);
}
+
+static MP_INLINE
+void mpxs_Apache2__Connection_pnotes_kill(pTHX_ conn_rec *c)
+{
+ MP_dCCFG;
+
+ modperl_config_con_init(c, ccfg);
+
+ if (!ccfg) {
+ return;
+ }
+
+ modperl_pnotes_kill(&ccfg->pnotes);
+}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/Apache2/Const/Const.pm b/xs/Apache2/Const/Const.pm
index a4ffb5e..05b84c3 100644
--- a/xs/Apache2/Const/Const.pm
+++ b/xs/Apache2/Const/Const.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
diff --git a/xs/Apache2/Directive/Apache2__Directive.h b/xs/Apache2/Directive/Apache2__Directive.h
index 3e502cb..2350e31 100644
--- a/xs/Apache2/Directive/Apache2__Directive.h
+++ b/xs/Apache2/Directive/Apache2__Directive.h
@@ -195,3 +195,10 @@
}
});
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/Apache2/Filter/Apache2__Filter.h b/xs/Apache2/Filter/Apache2__Filter.h
index f18c076..bc55137 100644
--- a/xs/Apache2/Filter/Apache2__Filter.h
+++ b/xs/Apache2/Filter/Apache2__Filter.h
@@ -196,8 +196,9 @@
}
#ifdef USE_ITHREADS
- if (!ctx->perl) {
- ctx->perl = aTHX;
+ if (!ctx->interp) {
+ ctx->interp = modperl_thx_interp_get(aTHX);
+ MP_INTERP_REFCNT_inc(ctx->interp);
}
#endif
ctx->data = SvREFCNT_inc(data);
@@ -366,3 +367,10 @@
return rc;
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/Apache2/Log/Apache2__Log.h b/xs/Apache2/Log/Apache2__Log.h
index 21f8bdc..e3c558b 100644
--- a/xs/Apache2/Log/Apache2__Log.h
+++ b/xs/Apache2/Log/Apache2__Log.h
@@ -338,3 +338,10 @@
XSRETURN_EMPTY;
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/Apache2/MPM/Apache2__MPM.h b/xs/Apache2/MPM/Apache2__MPM.h
index de9c187..9ede5f3 100644
--- a/xs/Apache2/MPM/Apache2__MPM.h
+++ b/xs/Apache2/MPM/Apache2__MPM.h
@@ -58,3 +58,10 @@
newCONSTSUB(PL_defstash, "Apache2::MPM::show",
newSVpv(ap_show_mpm(), 0));
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/Apache2/Module/Apache2__Module.h b/xs/Apache2/Module/Apache2__Module.h
index 87719fa..f95b6b6 100644
--- a/xs/Apache2/Module/Apache2__Module.h
+++ b/xs/Apache2/Module/Apache2__Module.h
@@ -96,3 +96,10 @@
return;
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/Apache2/RequestIO/Apache2__RequestIO.h b/xs/Apache2/RequestIO/Apache2__RequestIO.h
index fbb5032..6c80830 100644
--- a/xs/Apache2/RequestIO/Apache2__RequestIO.h
+++ b/xs/Apache2/RequestIO/Apache2__RequestIO.h
@@ -386,3 +386,10 @@
return rc;
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/Apache2/RequestRec/Apache2__RequestRec.h b/xs/Apache2/RequestRec/Apache2__RequestRec.h
index 3bdcec8..4a85481 100644
--- a/xs/Apache2/RequestRec/Apache2__RequestRec.h
+++ b/xs/Apache2/RequestRec/Apache2__RequestRec.h
@@ -146,3 +146,10 @@
return RETVAL;
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/Apache2/RequestUtil/Apache2__RequestUtil.h b/xs/Apache2/RequestUtil/Apache2__RequestUtil.h
index 118f441..4433c88 100644
--- a/xs/Apache2/RequestUtil/Apache2__RequestUtil.h
+++ b/xs/Apache2/RequestUtil/Apache2__RequestUtil.h
@@ -212,7 +212,19 @@
return &PL_sv_undef;
}
- return modperl_pnotes(aTHX_ &rcfg->pnotes, key, val, r, NULL);
+ return modperl_pnotes(aTHX_ &rcfg->pnotes, key, val, r->pool);
+}
+
+static MP_INLINE
+void mpxs_Apache2__RequestRec_pnotes_kill(pTHX_ request_rec *r)
+{
+ MP_dRCFG;
+
+ if (!rcfg) {
+ return;
+ }
+
+ modperl_pnotes_kill(&rcfg->pnotes);
}
#define mpxs_Apache2__RequestRec_dir_config(r, key, sv_val) \
@@ -349,3 +361,61 @@
apr_pool_cleanup_register(r->pool, r->pool, child_terminate,
apr_pool_cleanup_null);
}
+
+
+
+static MP_INLINE
+apr_status_t mpxs_ap_register_auth_provider(pTHX_ I32 items, SV **MARK, SV **SP)
+{
+ apr_pool_t *pool;
+ const char *provider_group;
+ const char *provider_name;
+ const char *provider_version;
+ SV *callback1;
+ SV *callback2 = NULL;
+ int type;
+
+ if (items != 7)
+ Perl_croak(aTHX_ "pool, provider_group, provider_name, "
+ "provider_version, callback1, callback2, type");
+
+ if (SvROK(*MARK) && sv_derived_from(*MARK, "APR::Pool")) {
+ IV tmp = SvIV((SV*)SvRV(*MARK));
+ if (tmp == 0) {
+ Perl_croak(aTHX_ "invalid pool object (already destroyed?)");
+ }
+ pool = INT2PTR(APR__Pool, tmp);
+ }
+ else {
+ Perl_croak(aTHX_ SvROK(*MARK) ?
+ "pool is not of type APR::Pool" :
+ "pool is not a blessed reference");
+ }
+
+ MARK++;
+ provider_group = (const char *)SvPV_nolen(*MARK);
+ MARK++;
+ provider_name = (const char *)SvPV_nolen(*MARK);
+ MARK++;
+ provider_version = (const char *)SvPV_nolen(*MARK);
+ MARK++;
+ callback1 = newSVsv(*MARK);
+ MARK++;
+ callback2 = NULL;
+ if (SvROK(*MARK)) {
+ callback2 = newSVsv(*MARK);
+ }
+ MARK++;
+ type = (int)SvIV(*MARK);
+
+ return modperl_register_auth_provider(pool, provider_group, provider_name,
+ provider_version, callback1,
+ callback2, type);
+}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/Apache2/Response/Apache2__Response.h b/xs/Apache2/Response/Apache2__Response.h
index 267694e..6bd03be 100644
--- a/xs/Apache2/Response/Apache2__Response.h
+++ b/xs/Apache2/Response/Apache2__Response.h
@@ -39,3 +39,10 @@
}
ap_set_last_modified(r);
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/Apache2/ServerRec/Apache2__ServerRec.h b/xs/Apache2/ServerRec/Apache2__ServerRec.h
new file mode 100644
index 0000000..91d944a
--- /dev/null
+++ b/xs/Apache2/ServerRec/Apache2__ServerRec.h
@@ -0,0 +1,32 @@
+/* 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
+
+static MP_INLINE
+int mpxs_Apache2__ServerRec_is_virtual(pTHX_ server_rec *s, SV *val)
+{
+ int retval = s->is_virtual;
+
+ if (val) {
+ s->is_virtual = SvIV(val);
+ }
+
+ return retval;
+}
+
+#endif
diff --git a/xs/Apache2/ServerUtil/Apache2__ServerUtil.h b/xs/Apache2/ServerUtil/Apache2__ServerUtil.h
index 2abd68f..f52ed0a 100644
--- a/xs/Apache2/ServerUtil/Apache2__ServerUtil.h
+++ b/xs/Apache2/ServerUtil/Apache2__ServerUtil.h
@@ -205,3 +205,23 @@
newCONSTSUB(PL_defstash, "Apache2::ServerUtil::get_server_built",
newSVpv(ap_get_server_built(), 0));
}
+
+#if AP_SERVER_MAJORVERSION_NUMBER>2 || \
+ (AP_SERVER_MAJORVERSION_NUMBER == 2 && AP_SERVER_MINORVERSION_NUMBER>=3)
+static MP_INLINE
+int mpxs_Apache2__ServerRec_loglevel(pTHX_ server_rec *s, int loglevel)
+{
+ if (loglevel) {
+ s->log.level = loglevel;
+ }
+
+ return s->log.level;
+}
+#endif
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/Apache2/SubProcess/Apache2__SubProcess.h b/xs/Apache2/SubProcess/Apache2__SubProcess.h
index c5c21e9..4db7d4a 100644
--- a/xs/Apache2/SubProcess/Apache2__SubProcess.h
+++ b/xs/Apache2/SubProcess/Apache2__SubProcess.h
@@ -216,3 +216,10 @@
PUTBACK;
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/Apache2/SubRequest/Apache2__SubRequest.h b/xs/Apache2/SubRequest/Apache2__SubRequest.h
index aef5953..debfa70 100644
--- a/xs/Apache2/SubRequest/Apache2__SubRequest.h
+++ b/xs/Apache2/SubRequest/Apache2__SubRequest.h
@@ -31,3 +31,10 @@
return ap_run_sub_req(r);
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/Apache2/URI/Apache2__URI.h b/xs/Apache2/URI/Apache2__URI.h
index ce22b56..5c33c26 100644
--- a/xs/Apache2/URI/Apache2__URI.h
+++ b/xs/Apache2/URI/Apache2__URI.h
@@ -38,3 +38,10 @@
return SvPVX(url);
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/Apache2/Util/Apache2__Util.h b/xs/Apache2/Util/Apache2__Util.h
index 2140767..19220d0 100644
--- a/xs/Apache2/Util/Apache2__Util.h
+++ b/xs/Apache2/Util/Apache2__Util.h
@@ -16,3 +16,10 @@
#define TIME_NOW apr_time_now()
#define DEFAULT_TIME_FORMAT "%a, %d %b %Y %H:%M:%S %Z"
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/ModPerl/Const/Const.pm b/xs/ModPerl/Const/Const.pm
index 46c3b5f..2b9632d 100644
--- a/xs/ModPerl/Const/Const.pm
+++ b/xs/ModPerl/Const/Const.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
# 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.
diff --git a/xs/ModPerl/Const/Const.xs b/xs/ModPerl/Const/Const.xs
index 33a4c0c..85b0a32 100644
--- a/xs/ModPerl/Const/Const.xs
+++ b/xs/ModPerl/Const/Const.xs
@@ -17,6 +17,23 @@
#include "mod_perl.h"
#include "modperl_const.h"
+#ifndef WIN32
+/* FIXME: To define extern perl_module to something so Const.so can be
+ * loaded later. Without this code, loading Const.so fails with
+ * undefined_symbol: perl_module. (Windows does not need this since it
+ * explicitly links against mod_perl.lib anyway.)
+ */
+module AP_MODULE_DECLARE_DATA perl_module = {
+ STANDARD20_MODULE_STUFF,
+ NULL, /* dir config creater */
+ NULL, /* dir merger --- default is to override */
+ NULL, /* server config */
+ NULL, /* merge server config */
+ NULL, /* table of config file commands */
+ NULL, /* register hooks */
+};
+#endif
+
MODULE = ModPerl::Const PACKAGE = ModPerl::Const
PROTOTYPES: disable
diff --git a/xs/ModPerl/Global/ModPerl__Global.h b/xs/ModPerl/Global/ModPerl__Global.h
index 2ece589..0d76ceb 100644
--- a/xs/ModPerl/Global/ModPerl__Global.h
+++ b/xs/ModPerl/Global/ModPerl__Global.h
@@ -60,3 +60,10 @@
return mpxs_special_list_do(aTHX_ name, package,
modperl_perl_global_avcv_register);
}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/ModPerl/Interpreter/ModPerl__Interpreter.h b/xs/ModPerl/Interpreter/ModPerl__Interpreter.h
new file mode 100644
index 0000000..c3f735e
--- /dev/null
+++ b/xs/ModPerl/Interpreter/ModPerl__Interpreter.h
@@ -0,0 +1,28 @@
+/* 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.
+ */
+
+static MP_INLINE
+modperl_interp_t *mpxs_ModPerl__Interpreter_current(pTHX_ SV *class)
+{
+ return modperl_thx_interp_get(aTHX);
+}
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/ModPerl/Util/ModPerl__Util.h b/xs/ModPerl/Util/ModPerl__Util.h
index d61d174..3e09070 100644
--- a/xs/ModPerl/Util/ModPerl__Util.h
+++ b/xs/ModPerl/Util/ModPerl__Util.h
@@ -40,3 +40,10 @@
modperl_package_unload(aTHX_ pkg)
/* ModPerl::Util::exit lives in mod_perl.so, see modperl_perl.c */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/maps/apache2_functions.map b/xs/maps/apache2_functions.map
index ea5026c..0455e8b 100644
--- a/xs/maps/apache2_functions.map
+++ b/xs/maps/apache2_functions.map
@@ -37,11 +37,26 @@
MODULE=Apache2::RequestUtil
ap_get_status_line
+#_if_ do { \
+ Apache2::Build->build_config \
+ ->httpd_version =~ /^(\d+)\.(\d+)\.(\d+)/ \
+ ? ($1*1000+$2)*1000+$3 \
+ : die "Cannot get httpd version"; \
+ } > 2003000
+ ap_register_auth_provider | mpxs_ | ...
+#_end_
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
@@ -161,6 +176,14 @@
int:DEFINE_method_register | | server_rec *:s, const char *:methname
~add_version_component
void:DEFINE_add_version_component | | server_rec *:s, const char *:component
+#_if_ do { \
+ Apache2::Build->build_config \
+ ->httpd_version =~ /^(\d+)\.(\d+)\.(\d+)/ \
+ ? ($1*1000+$2)*1000+$3 \
+ : die "Cannot get httpd version"; \
+ } > 2003000
+ mpxs_Apache2__ServerRec_loglevel | | server_rec *:s, loglevel=NULL
+#_end_
MODULE=Apache2::ServerUtil PACKAGE=Apache2::ServerUtil
ap_exists_config_define
@@ -533,3 +556,13 @@
?ap_mpm_set_pidfile
?ap_mpm_set_scoreboard
?ap_listen_pre_config
+
+#_if_ do { \
+ Apache2::Build->build_config \
+ ->httpd_version =~ /^(\d+)\.(\d+)\.(\d+)/ \
+ ? ($1*1000+$2)*1000+$3 \
+ : die "Cannot get httpd version"; \
+ } > 2003000
+MODULE=Apache2::Provider
+ ap_register_provider
+#_end_
diff --git a/xs/maps/apache2_structures.map b/xs/maps/apache2_structures.map
index f86ec93..c9ff850 100644
--- a/xs/maps/apache2_structures.map
+++ b/xs/maps/apache2_structures.map
@@ -2,6 +2,20 @@
# for mapping see %ModPerl::MapUtil::disabled_map in
# lib/ModPerl/MapUtil.pm
+# the mapping happens in lib/ModPerl/StructureMap.pm: sub parse
+# '<' => 'auto-generated but gives only a read-only access'
+# '&' => 'RDWR accessor to a char* field, supporting undef arg'
+# '$' => 'RONLY accessor, with WRITE accessor before child_init'
+# '%' => like $, but makes sure that for the write accessor the
+# original perl scalar can change or go away w/o affecting
+# the object
+# my %disabled_map = (
+# '!' => 'disabled or not yet implemented',
+# '~' => 'implemented but not auto-generated',
+# '-' => 'likely never be available to Perl',
+# '>' => '"private" to apache',
+# '?' => 'unclassified',
+# );
IGNORE: ap_LINK_ ap_filter_func ap_bucket_error ap_listen_rec core_net_rec
@@ -69,6 +83,15 @@
proto_output_filters
proto_input_filters
? eos_sent
+#_if_ do { \
+ Apache2::Build->build_config \
+ ->httpd_version =~ /^(\d+)\.(\d+)\.(\d+)/ \
+ ? ($1*1000+$2)*1000+$3 \
+ : die "Cannot get httpd version"; \
+ } > 2003000
+< useragent_addr
+ useragent_ip
+#_end_
</request_rec>
<server_rec>
@@ -78,11 +101,28 @@
- defn_line_number
% server_admin
% server_hostname
+#_if_ do { \
+ Apache2::Build->build_config \
+ ->httpd_version =~ /^(\d+)\.(\d+)\.(\d+)/ \
+ ? ($1*1000+$2)*1000+$3 \
+ : die "Cannot get httpd version"; \
+ } > 2003000
+% server_scheme
+#_end_
$ port
% error_fname
$ error_log
$ loglevel
+#_if_ do { \
+ Apache2::Build->build_config \
+ ->httpd_version =~ /^(\d+)\.(\d+)\.(\d+)/ \
+ ? ($1*1000+$2)*1000+$3 \
+ : die "Cannot get httpd version"; \
+ } > 2003000
+~ is_virtual
+#_else_
< is_virtual
+#_end_
< module_config
< lookup_defaults
< addrs
@@ -97,6 +137,14 @@
$ limit_req_line
$ limit_req_fieldsize
$ limit_req_fields
+#_if_ do { \
+ Apache2::Build->build_config \
+ ->httpd_version =~ /^(\d+)\.(\d+)\.(\d+)/ \
+ ? ($1*1000+$2)*1000+$3 \
+ : die "Cannot get httpd version"; \
+ } > 2003000
+ context
+#_end_
</server_rec>
<conn_rec>
@@ -104,6 +152,15 @@
< base_server
> vhost_lookup_data
< local_addr
+#_if_ do { \
+ Apache2::Build->build_config \
+ ->httpd_version =~ /^(\d+)\.(\d+)\.(\d+)/ \
+ ? ($1*1000+$2)*1000+$3 \
+ : die "Cannot get httpd version"; \
+ } > 2003000
+< client_addr
+ client_ip
+#_end_
< local_ip
< local_host
< remote_addr
@@ -121,6 +178,15 @@
output_filters
< sbh
< bucket_alloc
+#_if_ do { \
+ Apache2::Build->build_config \
+ ->httpd_version =~ /^(\d+)\.(\d+)\.(\d+)/ \
+ ? ($1*1000+$2)*1000+$3 \
+ : die "Cannot get httpd version"; \
+ } > 2003000
+< log
+< log_id
+#_end_
</conn_rec>
!<server_addr_rec>
diff --git a/xs/maps/modperl_functions.map b/xs/maps/modperl_functions.map
index a928ba8..66047aa 100644
--- a/xs/maps/modperl_functions.map
+++ b/xs/maps/modperl_functions.map
@@ -22,6 +22,16 @@
mpxs_Apache2__RequestRec_handler | | ...
mpxs_Apache2__RequestRec_content_languages | | r, languages=(SV *)NULL
+#_if_ do { \
+ Apache2::Build->build_config \
+ ->httpd_version =~ /^(\d+)\.(\d+)\.(\d+)/ \
+ ? ($1*1000+$2)*1000+$3 \
+ : die "Cannot get httpd version"; \
+ } > 2003000
+MODULE=Apache2::ServerRec PACKAGE=Apache2::ServerRec
+ mpxs_Apache2__ServerRec_is_virtual | | server_rec *:s, val=(SV *)NULL
+#_end_
+
MODULE=Apache2::RequestUtil PACKAGE=guess
mpxs_Apache2__RequestRec_push_handlers
mpxs_Apache2__RequestRec_set_handlers
@@ -30,6 +40,7 @@
mpxs_Apache2__RequestRec_location
mpxs_Apache2__RequestRec_as_string
mpxs_Apache2__RequestRec_pnotes | | r, key=(SV *)NULL, val=(SV *)NULL
+ mpxs_Apache2__RequestRec_pnotes_kill | | r
mpxs_Apache2__RequestRec_add_config | | r, lines, override=MP_HTTPD_OVERRIDE_HTACCESS, path=NULL, override_options=MP_HTTPD_OVERRIDE_OPTS_UNSET
mpxs_Apache2__RequestRec_document_root | | r, new_root=(SV *)NULL
mpxs_Apache2__RequestRec_child_terminate
@@ -95,6 +106,7 @@
MODULE=Apache2::ConnectionUtil PACKAGE=guess
mpxs_Apache2__Connection_pnotes | | c, key=(SV *)NULL, val=(SV *)NULL
+ mpxs_Apache2__Connection_pnotes_kill | | c
MODULE=Apache2::Filter
modperl_filter_attributes | MPXS_ | ... | MODIFY_CODE_ATTRIBUTES
@@ -162,3 +174,10 @@
MODULE=Apache2::Access PACKAGE=guess
mpxs_Apache2__RequestRec_allow_override_opts
+
+#_if_ do {use Apache2::Build; Apache2::Build::PERL_HAS_ITHREADS}
+
+MODULE=ModPerl::Interpreter
+ mpxs_ModPerl__Interpreter_current | | class=Nullsv
+
+#_end_
diff --git a/xs/maps/modperl_structures.map b/xs/maps/modperl_structures.map
new file mode 100644
index 0000000..9157ee3
--- /dev/null
+++ b/xs/maps/modperl_structures.map
@@ -0,0 +1,44 @@
+########## ModPerl structures ##########
+
+# for mapping see %ModPerl::MapUtil::disabled_map in
+# lib/ModPerl/MapUtil.pm
+
+#_if_ do {use Apache2::Build; Apache2::Build::PERL_HAS_ITHREADS}
+
+<modperl_interp_t>
+< mip
+< perl
+< num_requests
+< flags
+- ccfg
+< refcnt
+- tid
+</modperl_interp_t>
+
+<modperl_interp_pool_t>
+< server
+< tipool
+< parent
+</modperl_interp_pool_t>
+
+<modperl_tipool_t>
+- tiplock
+- available
+- idle
+- busy
+< in_use
+< size
+- data
+< cfg
+- func
+</modperl_tipool_t>
+
+<modperl_tipool_config_t>
+< start
+< min_spare
+< max_spare
+< max
+< max_requests
+</modperl_tipool_config_t>
+
+#_end_
diff --git a/xs/maps/modperl_types.map b/xs/maps/modperl_types.map
index 3b02f02..b251940 100644
--- a/xs/maps/modperl_types.map
+++ b/xs/maps/modperl_types.map
@@ -1,12 +1,24 @@
########## mod_perl types ##########
-struct modperl_filter_t | Apache2::OutputFilter
+struct modperl_filter_t | Apache2::OutputFilter
+
+#_if_ do {use Apache2::Build; Apache2::Build::PERL_HAS_ITHREADS}
+
+struct modperl_interp_t | ModPerl::Interpreter
+struct modperl_interp_pool_t | ModPerl::InterpPool
+struct modperl_tipool_t | ModPerl::TiPool
+struct modperl_tipool_config_t | ModPerl::TiPoolConfig
+PerlInterpreter * | IV
+
+#_end_
########## Perl types ##########
SV * | SV
I32 | IV
I32 * | IV
+U16 | UV
+U16 * | UV
U32 | UV
U32 * | UV
diff --git a/xs/modperl_xs_util.h b/xs/modperl_xs_util.h
index 9273251..749352e 100644
--- a/xs/modperl_xs_util.h
+++ b/xs/modperl_xs_util.h
@@ -158,3 +158,10 @@
#endif /* MODPERL_XS_H */
+
+/*
+ * Local Variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xs/tables/current/APR/FunctionTable.pm b/xs/tables/current/APR/FunctionTable.pm
index cf3d278..6e3b404 100644
--- a/xs/tables/current/APR/FunctionTable.pm
+++ b/xs/tables/current/APR/FunctionTable.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package APR::FunctionTable;
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
diff --git a/xs/tables/current/Apache2/ConstantsTable.pm b/xs/tables/current/Apache2/ConstantsTable.pm
index 1192611..9ea2d43 100644
--- a/xs/tables/current/Apache2/ConstantsTable.pm
+++ b/xs/tables/current/Apache2/ConstantsTable.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package Apache2::ConstantsTable;
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -53,7 +54,6 @@
'OPT_EXECCGI',
'OPT_UNSET',
'OPT_INCNOEXEC',
- 'OPT_INC_WITH_EXEC',
'OPT_SYM_OWNER',
'OPT_MULTI',
'OPT_ALL'
diff --git a/xs/tables/current/Apache2/FunctionTable.pm b/xs/tables/current/Apache2/FunctionTable.pm
index 96e7bd3..dd06d45 100644
--- a/xs/tables/current/Apache2/FunctionTable.pm
+++ b/xs/tables/current/Apache2/FunctionTable.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package Apache2::FunctionTable;
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
diff --git a/xs/tables/current/Apache2/StructureTable.pm b/xs/tables/current/Apache2/StructureTable.pm
index af50be1..80dd06c 100644
--- a/xs/tables/current/Apache2/StructureTable.pm
+++ b/xs/tables/current/Apache2/StructureTable.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package Apache2::StructureTable;
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -3333,6 +3334,126 @@
'name' => 'suexec_enabled'
}
]
+ },
+ {
+ 'type' => 'modperl_interp_t',
+ 'elts' => [
+ {
+ 'type' => 'modperl_interp_pool_t *',
+ 'name' => 'mip'
+ },
+ {
+ 'type' => 'PerlInterpreter *',
+ 'name' => 'perl'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'num_requests'
+ },
+ {
+ 'type' => 'U8',
+ 'name' => 'flags'
+ },
+ {
+ 'type' => 'modperl_config_con_t *',
+ 'name' => 'ccfg'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'refcnt'
+ },
+ {
+ 'type' => 'unsigned long',
+ 'name' => 'tid'
+ }
+ ]
+ },
+ {
+ 'type' => 'modperl_interp_pool_t',
+ 'elts' => [
+ {
+ 'type' => 'server_rec *',
+ 'name' => 'server'
+ },
+ {
+ 'type' => 'modperl_tipool_t *',
+ 'name' => 'tipool'
+ },
+ {
+ 'type' => 'modperl_tipool_config_t *',
+ 'name' => 'tipool_cfg'
+ },
+ {
+ 'type' => 'modperl_interp_t *',
+ 'name' => 'parent'
+ }
+ ]
+ },
+ {
+ 'type' => 'modperl_tipool_t',
+ 'elts' => [
+ {
+ 'type' => 'perl_mutex',
+ 'name' => 'tiplock'
+ },
+ {
+ 'type' => 'perl_cond',
+ 'name' => 'available'
+ },
+ {
+ 'type' => 'modperl_list_t *',
+ 'name' => 'idle'
+ },
+ {
+ 'type' => 'modperl_list_t *',
+ 'name' => 'busy'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'in_use'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'size'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'modperl_tipool_config_t *',
+ 'name' => 'cfg'
+ },
+ {
+ 'type' => 'modperl_tipool_vtbl_t *',
+ 'name' => 'func'
+ }
+ ]
+ },
+ {
+ 'type' => 'modperl_tipool_config_t',
+ 'elts' => [
+ {
+ 'type' => 'int',
+ 'name' => 'start'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'min_spare'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'max_spare'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'max'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'max_requests'
+ }
+ ]
}
];
diff --git a/xs/tables/current/ModPerl/FunctionTable.pm b/xs/tables/current/ModPerl/FunctionTable.pm
index 188f746..bbf979b 100644
--- a/xs/tables/current/ModPerl/FunctionTable.pm
+++ b/xs/tables/current/ModPerl/FunctionTable.pm
@@ -1,3 +1,4 @@
+# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package ModPerl::FunctionTable;
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -4424,19 +4425,6 @@
]
},
{
- 'return_type' => 'char *',
- 'name' => 'modperl_pid_tid',
- 'attr' => [
- '__inline__'
- ],
- 'args' => [
- {
- 'type' => 'apr_pool_t *',
- 'name' => 'p'
- }
- ]
- },
- {
'return_type' => 'SV *',
'name' => 'modperl_pnotes',
'args' => [
@@ -4460,7 +4448,17 @@
'type' => 'request_rec *',
'name' => 'r'
}
- ]
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_pnotes_kill',
+ 'args' => [
+ {
+ 'type' => 'void *',
+ 'name' => 'cl_data'
+ }
+ ]
},
{
'return_type' => 'int',
@@ -6321,6 +6319,20 @@
]
},
{
+ 'return_type' => 'void',
+ 'name' => 'mpxs_Apache2__Connection_pnotes_kill',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter *',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ }
+ ]
+ },
+ {
'return_type' => 'SV *',
'name' => 'mpxs_Apache2__Directive_as_hash',
'attr' => [
@@ -7128,6 +7140,20 @@
]
},
{
+ 'return_type' => 'void',
+ 'name' => 'mpxs_Apache2__RequestRec_pnotes_kill',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter *',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
'return_type' => 'SV *',
'name' => 'mpxs_Apache2__RequestRec_print',
'args' => [
@@ -8255,6 +8281,24 @@
'name' => 'func'
}
]
+ },
+ {
+ 'return_type' => 'modperl_interp_t *',
+ 'name' => 'mpxs_ModPerl__Interpreter_current',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter *',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'class'
+ }
+ ]
}
];
diff --git a/xs/tables/current24/APR/FunctionTable.pm b/xs/tables/current24/APR/FunctionTable.pm
new file mode 100644
index 0000000..cf3d278
--- /dev/null
+++ b/xs/tables/current24/APR/FunctionTable.pm
@@ -0,0 +1,228 @@
+package APR::FunctionTable;
+
+# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+# ! WARNING: this file was manually generated on
+# ! Tue Jun 22 22:00:00 2004
+# ! It contains a subset of functions appearing in
+# ! ModPerl::FunctionTable used to build APR.so
+# ! Eventually this will be autogenerated by
+# ! Apache::ParseSource
+# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+$APR::FunctionTable = [
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_trace',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'func'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'fmt'
+ },
+ {
+ 'type' => '...',
+ 'name' => 'arg2'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_trace_level_set',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'logfile'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'level'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_trace_logfile_set',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'logfile_new'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'unsigned long',
+ 'name' => 'modperl_debug_level',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'modperl_hash_tie',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter *',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'classname'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'tsv'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void *',
+ 'name' => 'modperl_hash_tied_object',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter *',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'classname'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'tsv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'modperl_perl_sv_setref_uv',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter *',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'rv'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'classname'
+ },
+ {
+ 'type' => 'UV',
+ 'name' => 'uv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'modperl_uri_t *',
+ 'name' => 'modperl_uri_new',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'modperl_perl_gensym',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter *',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'pack'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'modperl_error_strerror',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter *',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_status_t',
+ 'name' => 'rc'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_croak',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter *',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_status_t',
+ 'name' => 'rc'
+ },
+ {
+ 'type' => 'const char*',
+ 'name' => 'func'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'modperl_interp_unselect',
+ 'args' => [
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'modperl_bucket_sv_create',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter *',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_bucket_alloc_t *',
+ 'name' => 'list'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'sv'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'offset'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'len'
+ }
+ ]
+ },
+];
+
+1;
diff --git a/xs/tables/current24/Apache2/ConstantsTable.pm b/xs/tables/current24/Apache2/ConstantsTable.pm
new file mode 100644
index 0000000..f54adfd
--- /dev/null
+++ b/xs/tables/current24/Apache2/ConstantsTable.pm
@@ -0,0 +1,545 @@
+package Apache2::ConstantsTable;
+
+# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+# ! WARNING: generated by Apache2::ParseSource/0.02
+# ! Mon Jul 1 12:38:09 2013
+# ! do NOT edit, any changes will be lost !
+# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+$Apache2::ConstantsTable = {
+ 'ModPerl' => {
+ 'common' => [
+ 'MODPERL_RC_EXIT'
+ ]
+ },
+ 'Apache2::Const' => {
+ 'types' => [
+ 'DIR_MAGIC_TYPE'
+ ],
+ 'satisfy' => [
+ 'SATISFY_ALL',
+ 'SATISFY_ANY',
+ 'SATISFY_NOSPEC'
+ ],
+ 'remotehost' => [
+ 'REMOTE_HOST',
+ 'REMOTE_NAME',
+ 'REMOTE_NOLOOKUP',
+ 'REMOTE_DOUBLE_REV'
+ ],
+ 'proxy' => [
+ 'PROXYREQ_NONE',
+ 'PROXYREQ_PROXY',
+ 'PROXYREQ_REVERSE',
+ 'PROXYREQ_RESPONSE'
+ ],
+ 'platform' => [
+ 'LF',
+ 'CR',
+ 'CRLF',
+ 'CRLF_ASCII'
+ ],
+ 'override' => [
+ 'OR_NONE',
+ 'OR_LIMIT',
+ 'OR_OPTIONS',
+ 'OR_FILEINFO',
+ 'OR_AUTHCFG',
+ 'OR_INDEXES',
+ 'OR_UNSET',
+ 'ACCESS_CONF',
+ 'RSRC_CONF',
+ 'EXEC_ON_READ',
+ 'OR_ALL'
+ ],
+ 'options' => [
+ 'OPT_NONE',
+ 'OPT_INDEXES',
+ 'OPT_INCLUDES',
+ 'OPT_SYM_LINKS',
+ 'OPT_EXECCGI',
+ 'OPT_UNSET',
+ 'OPT_INC_WITH_EXEC',
+ 'OPT_SYM_OWNER',
+ 'OPT_MULTI',
+ 'OPT_ALL'
+ ],
+ 'mpmq' => [
+ 'AP_MPMQ_NOT_SUPPORTED',
+ 'AP_MPMQ_STATIC',
+ 'AP_MPMQ_DYNAMIC',
+ 'AP_MPMQ_STARTING',
+ 'AP_MPMQ_RUNNING',
+ 'AP_MPMQ_STOPPING',
+ 'AP_MPMQ_MAX_DAEMON_USED',
+ 'AP_MPMQ_IS_THREADED',
+ 'AP_MPMQ_IS_FORKED',
+ 'AP_MPMQ_HARD_LIMIT_DAEMONS',
+ 'AP_MPMQ_HARD_LIMIT_THREADS',
+ 'AP_MPMQ_MAX_THREADS',
+ 'AP_MPMQ_MIN_SPARE_DAEMONS',
+ 'AP_MPMQ_MIN_SPARE_THREADS',
+ 'AP_MPMQ_MAX_SPARE_DAEMONS',
+ 'AP_MPMQ_MAX_SPARE_THREADS',
+ 'AP_MPMQ_MAX_REQUESTS_DAEMON',
+ 'AP_MPMQ_MAX_DAEMONS',
+ 'AP_MPMQ_MPM_STATE',
+ 'AP_MPMQ_IS_ASYNC',
+ 'AP_MPMQ_GENERATION',
+ 'AP_MPMQ_HAS_SERF'
+ ],
+ 'methods' => [
+ 'M_GET',
+ 'M_PUT',
+ 'M_POST',
+ 'M_DELETE',
+ 'M_CONNECT',
+ 'M_OPTIONS',
+ 'M_TRACE',
+ 'M_PATCH',
+ 'M_PROPFIND',
+ 'M_PROPPATCH',
+ 'M_MKCOL',
+ 'M_COPY',
+ 'M_MOVE',
+ 'M_LOCK',
+ 'M_UNLOCK',
+ 'M_VERSION_CONTROL',
+ 'M_CHECKOUT',
+ 'M_UNCHECKOUT',
+ 'M_CHECKIN',
+ 'M_UPDATE',
+ 'M_LABEL',
+ 'M_REPORT',
+ 'M_MKWORKSPACE',
+ 'M_MKACTIVITY',
+ 'M_BASELINE_CONTROL',
+ 'M_MERGE',
+ 'M_INVALID',
+ 'METHODS'
+ ],
+ 'log' => [
+ 'APLOG_EMERG',
+ 'APLOG_ALERT',
+ 'APLOG_CRIT',
+ 'APLOG_ERR',
+ 'APLOG_WARNING',
+ 'APLOG_NOTICE',
+ 'APLOG_INFO',
+ 'APLOG_DEBUG',
+ 'APLOG_TRACE1',
+ 'APLOG_TRACE2',
+ 'APLOG_TRACE3',
+ 'APLOG_TRACE4',
+ 'APLOG_TRACE5',
+ 'APLOG_TRACE6',
+ 'APLOG_TRACE7',
+ 'APLOG_TRACE8',
+ 'APLOG_LEVELMASK',
+ 'APLOG_TOCLIENT',
+ 'APLOG_STARTUP',
+ 'APLOG_NO_MODULE',
+ 'APLOG_MODULE_INDEX'
+ ],
+ 'input_mode' => [
+ 'AP_MODE_READBYTES',
+ 'AP_MODE_GETLINE',
+ 'AP_MODE_EATCRLF',
+ 'AP_MODE_SPECULATIVE',
+ 'AP_MODE_EXHAUSTIVE',
+ 'AP_MODE_INIT'
+ ],
+ 'http' => [
+ 'HTTP_CONTINUE',
+ 'HTTP_SWITCHING_PROTOCOLS',
+ 'HTTP_PROCESSING',
+ 'HTTP_OK',
+ 'HTTP_CREATED',
+ 'HTTP_ACCEPTED',
+ 'HTTP_NON_AUTHORITATIVE',
+ 'HTTP_NO_CONTENT',
+ 'HTTP_RESET_CONTENT',
+ 'HTTP_PARTIAL_CONTENT',
+ 'HTTP_MULTI_STATUS',
+ 'HTTP_ALREADY_REPORTED',
+ 'HTTP_IM_USED',
+ 'HTTP_MULTIPLE_CHOICES',
+ 'HTTP_MOVED_PERMANENTLY',
+ 'HTTP_MOVED_TEMPORARILY',
+ 'HTTP_SEE_OTHER',
+ 'HTTP_NOT_MODIFIED',
+ 'HTTP_USE_PROXY',
+ 'HTTP_TEMPORARY_REDIRECT',
+ 'HTTP_PERMANENT_REDIRECT',
+ 'HTTP_BAD_REQUEST',
+ 'HTTP_UNAUTHORIZED',
+ 'HTTP_PAYMENT_REQUIRED',
+ 'HTTP_FORBIDDEN',
+ 'HTTP_NOT_FOUND',
+ 'HTTP_METHOD_NOT_ALLOWED',
+ 'HTTP_NOT_ACCEPTABLE',
+ 'HTTP_PROXY_AUTHENTICATION_REQUIRED',
+ 'HTTP_REQUEST_TIME_OUT',
+ 'HTTP_CONFLICT',
+ 'HTTP_GONE',
+ 'HTTP_LENGTH_REQUIRED',
+ 'HTTP_PRECONDITION_FAILED',
+ 'HTTP_REQUEST_ENTITY_TOO_LARGE',
+ 'HTTP_REQUEST_URI_TOO_LARGE',
+ 'HTTP_UNSUPPORTED_MEDIA_TYPE',
+ 'HTTP_RANGE_NOT_SATISFIABLE',
+ 'HTTP_EXPECTATION_FAILED',
+ 'HTTP_UNPROCESSABLE_ENTITY',
+ 'HTTP_LOCKED',
+ 'HTTP_FAILED_DEPENDENCY',
+ 'HTTP_UPGRADE_REQUIRED',
+ 'HTTP_PRECONDITION_REQUIRED',
+ 'HTTP_TOO_MANY_REQUESTS',
+ 'HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE',
+ 'HTTP_INTERNAL_SERVER_ERROR',
+ 'HTTP_NOT_IMPLEMENTED',
+ 'HTTP_BAD_GATEWAY',
+ 'HTTP_SERVICE_UNAVAILABLE',
+ 'HTTP_GATEWAY_TIME_OUT',
+ 'HTTP_VARIANT_ALSO_VARIES',
+ 'HTTP_INSUFFICIENT_STORAGE',
+ 'HTTP_LOOP_DETECTED',
+ 'HTTP_NOT_EXTENDED',
+ 'HTTP_NETWORK_AUTHENTICATION_REQUIRED'
+ ],
+ 'filter_type' => [
+ 'AP_FTYPE_RESOURCE',
+ 'AP_FTYPE_CONTENT_SET',
+ 'AP_FTYPE_PROTOCOL',
+ 'AP_FTYPE_TRANSCODE',
+ 'AP_FTYPE_CONNECTION',
+ 'AP_FTYPE_NETWORK'
+ ],
+ 'context' => [
+ 'NOT_IN_VIRTUALHOST',
+ 'NOT_IN_LIMIT',
+ 'NOT_IN_DIRECTORY',
+ 'NOT_IN_LOCATION',
+ 'NOT_IN_FILES',
+ 'NOT_IN_HTACCESS',
+ 'NOT_IN_DIR_LOC_FILE',
+ 'GLOBAL_ONLY'
+ ],
+ 'conn_keepalive' => [
+ 'AP_CONN_UNKNOWN',
+ 'AP_CONN_CLOSE',
+ 'AP_CONN_KEEPALIVE'
+ ],
+ 'config' => [
+ 'DECLINE_CMD'
+ ],
+ 'common' => [
+ 'OK',
+ 'DECLINED',
+ 'DONE',
+ 'NOT_FOUND',
+ 'FORBIDDEN',
+ 'AUTH_REQUIRED',
+ 'SERVER_ERROR',
+ 'REDIRECT'
+ ],
+ 'cmd_how' => [
+ 'RAW_ARGS',
+ 'TAKE1',
+ 'TAKE2',
+ 'ITERATE',
+ 'ITERATE2',
+ 'FLAG',
+ 'NO_ARGS',
+ 'TAKE12',
+ 'TAKE3',
+ 'TAKE23',
+ 'TAKE123',
+ 'TAKE13',
+ 'TAKE_ARGV'
+ ],
+ 'authz_status' => [
+ 'AUTHZ_DENIED',
+ 'AUTHZ_GRANTED',
+ 'AUTHZ_NEUTRAL',
+ 'AUTHZ_GENERAL_ERROR',
+ 'AUTHZ_DENIED_NO_USER'
+ ],
+ 'authn_status' => [
+ 'AUTH_DENIED',
+ 'AUTH_GRANTED',
+ 'AUTH_USER_FOUND',
+ 'AUTH_USER_NOT_FOUND',
+ 'AUTH_GENERAL_ERROR'
+ ],
+ 'auth' => [
+ 'AUTHN_PROVIDER_GROUP',
+ 'AUTHZ_PROVIDER_GROUP',
+ 'AUTHN_PROVIDER_VERSION',
+ 'AUTHZ_PROVIDER_VERSION',
+ 'AUTHN_DEFAULT_PROVIDER',
+ 'AUTHN_PROVIDER_NAME_NOTE',
+ 'AUTHZ_PROVIDER_NAME_NOTE',
+ 'AUTHN_PREFIX',
+ 'AUTHZ_PREFIX',
+ 'AP_AUTH_INTERNAL_PER_URI',
+ 'AP_AUTH_INTERNAL_PER_CONF',
+ 'AP_AUTH_INTERNAL_MASK'
+ ]
+ },
+ 'APR::Const' => {
+ 'uri' => [
+ 'APR_URI_FTP_DEFAULT_PORT',
+ 'APR_URI_SSH_DEFAULT_PORT',
+ 'APR_URI_TELNET_DEFAULT_PORT',
+ 'APR_URI_GOPHER_DEFAULT_PORT',
+ 'APR_URI_HTTP_DEFAULT_PORT',
+ 'APR_URI_POP_DEFAULT_PORT',
+ 'APR_URI_NNTP_DEFAULT_PORT',
+ 'APR_URI_IMAP_DEFAULT_PORT',
+ 'APR_URI_PROSPERO_DEFAULT_PORT',
+ 'APR_URI_WAIS_DEFAULT_PORT',
+ 'APR_URI_LDAP_DEFAULT_PORT',
+ 'APR_URI_HTTPS_DEFAULT_PORT',
+ 'APR_URI_RTSP_DEFAULT_PORT',
+ 'APR_URI_SNEWS_DEFAULT_PORT',
+ 'APR_URI_ACAP_DEFAULT_PORT',
+ 'APR_URI_NFS_DEFAULT_PORT',
+ 'APR_URI_TIP_DEFAULT_PORT',
+ 'APR_URI_SIP_DEFAULT_PORT',
+ 'APR_URI_UNP_OMITSITEPART',
+ 'APR_URI_UNP_OMITUSER',
+ 'APR_URI_UNP_OMITPASSWORD',
+ 'APR_URI_UNP_OMITUSERINFO',
+ 'APR_URI_UNP_REVEALPASSWORD',
+ 'APR_URI_UNP_OMITPATHINFO',
+ 'APR_URI_UNP_OMITQUERY'
+ ],
+ 'table' => [
+ 'APR_OVERLAP_TABLES_SET',
+ 'APR_OVERLAP_TABLES_MERGE'
+ ],
+ 'status' => [
+ 'APR_TIMEUP'
+ ],
+ 'socket' => [
+ 'APR_SO_LINGER',
+ 'APR_SO_KEEPALIVE',
+ 'APR_SO_DEBUG',
+ 'APR_SO_NONBLOCK',
+ 'APR_SO_REUSEADDR',
+ 'APR_SO_SNDBUF',
+ 'APR_SO_RCVBUF',
+ 'APR_SO_DISCONNECTED'
+ ],
+ 'shutdown_how' => [
+ 'APR_SHUTDOWN_READ',
+ 'APR_SHUTDOWN_WRITE',
+ 'APR_SHUTDOWN_READWRITE'
+ ],
+ 'read_type' => [
+ 'APR_BLOCK_READ',
+ 'APR_NONBLOCK_READ'
+ ],
+ 'poll' => [
+ 'APR_POLLIN',
+ 'APR_POLLPRI',
+ 'APR_POLLOUT',
+ 'APR_POLLERR',
+ 'APR_POLLHUP',
+ 'APR_POLLNVAL',
+ 'APR_POLLSET_THREADSAFE',
+ 'APR_POLLSET_NOCOPY',
+ 'APR_POLLSET_WAKEABLE',
+ 'APR_POLLSET_NODEFAULT'
+ ],
+ 'lockmech' => [
+ 'APR_LOCK_FCNTL',
+ 'APR_LOCK_FLOCK',
+ 'APR_LOCK_SYSVSEM',
+ 'APR_LOCK_PROC_PTHREAD',
+ 'APR_LOCK_POSIXSEM',
+ 'APR_LOCK_DEFAULT'
+ ],
+ 'limit' => [
+ 'APR_LIMIT_CPU',
+ 'APR_LIMIT_MEM',
+ 'APR_LIMIT_NPROC',
+ 'APR_LIMIT_NOFILE'
+ ],
+ 'hook' => [
+ 'APR_HOOK_REALLY_FIRST',
+ 'APR_HOOK_FIRST',
+ 'APR_HOOK_MIDDLE',
+ 'APR_HOOK_LAST',
+ 'APR_HOOK_REALLY_LAST'
+ ],
+ 'fprot' => [
+ 'APR_FPROT_USETID',
+ 'APR_FPROT_UREAD',
+ 'APR_FPROT_UWRITE',
+ 'APR_FPROT_UEXECUTE',
+ 'APR_FPROT_GSETID',
+ 'APR_FPROT_GREAD',
+ 'APR_FPROT_GWRITE',
+ 'APR_FPROT_GEXECUTE',
+ 'APR_FPROT_WSTICKY',
+ 'APR_FPROT_WREAD',
+ 'APR_FPROT_WWRITE',
+ 'APR_FPROT_WEXECUTE',
+ 'APR_FPROT_OS_DEFAULT',
+ 'APR_FPROT_FILE_SOURCE_PERMS'
+ ],
+ 'fopen' => [
+ 'APR_FOPEN_READ',
+ 'APR_FOPEN_WRITE',
+ 'APR_FOPEN_CREATE',
+ 'APR_FOPEN_APPEND',
+ 'APR_FOPEN_TRUNCATE',
+ 'APR_FOPEN_BINARY',
+ 'APR_FOPEN_EXCL',
+ 'APR_FOPEN_BUFFERED',
+ 'APR_FOPEN_DELONCLOSE',
+ 'APR_FOPEN_XTHREAD',
+ 'APR_FOPEN_SHARELOCK',
+ 'APR_FOPEN_NOCLEANUP',
+ 'APR_FOPEN_SENDFILE_ENABLED',
+ 'APR_FOPEN_LARGEFILE',
+ 'APR_FOPEN_SPARSE'
+ ],
+ 'flock' => [
+ 'APR_FLOCK_SHARED',
+ 'APR_FLOCK_EXCLUSIVE',
+ 'APR_FLOCK_TYPEMASK',
+ 'APR_FLOCK_NONBLOCK'
+ ],
+ 'finfo' => [
+ 'APR_FINFO_LINK',
+ 'APR_FINFO_MTIME',
+ 'APR_FINFO_CTIME',
+ 'APR_FINFO_ATIME',
+ 'APR_FINFO_SIZE',
+ 'APR_FINFO_CSIZE',
+ 'APR_FINFO_DEV',
+ 'APR_FINFO_INODE',
+ 'APR_FINFO_NLINK',
+ 'APR_FINFO_TYPE',
+ 'APR_FINFO_USER',
+ 'APR_FINFO_GROUP',
+ 'APR_FINFO_UPROT',
+ 'APR_FINFO_GPROT',
+ 'APR_FINFO_WPROT',
+ 'APR_FINFO_ICASE',
+ 'APR_FINFO_NAME',
+ 'APR_FINFO_MIN',
+ 'APR_FINFO_IDENT',
+ 'APR_FINFO_OWNER',
+ 'APR_FINFO_PROT',
+ 'APR_FINFO_NORM',
+ 'APR_FINFO_DIRENT'
+ ],
+ 'filetype' => [
+ 'APR_FILETYPE_NOFILE',
+ 'APR_FILETYPE_REG',
+ 'APR_FILETYPE_DIR',
+ 'APR_FILETYPE_CHR',
+ 'APR_FILETYPE_BLK',
+ 'APR_FILETYPE_PIPE',
+ 'APR_FILETYPE_LNK',
+ 'APR_FILETYPE_SOCK',
+ 'APR_FILETYPE_UNKFILE'
+ ],
+ 'filepath' => [
+ 'APR_FILEPATH_NOTABOVEROOT',
+ 'APR_FILEPATH_SECUREROOTTEST',
+ 'APR_FILEPATH_SECUREROOT',
+ 'APR_FILEPATH_NOTRELATIVE',
+ 'APR_FILEPATH_NOTABSOLUTE',
+ 'APR_FILEPATH_NATIVE',
+ 'APR_FILEPATH_TRUENAME',
+ 'APR_FILEPATH_ENCODING_UNKNOWN',
+ 'APR_FILEPATH_ENCODING_LOCALE',
+ 'APR_FILEPATH_ENCODING_UTF8'
+ ],
+ 'error' => [
+ 'APR_ENOSTAT',
+ 'APR_ENOPOOL',
+ 'APR_EBADDATE',
+ 'APR_EINVALSOCK',
+ 'APR_ENOPROC',
+ 'APR_ENOTIME',
+ 'APR_ENODIR',
+ 'APR_ENOLOCK',
+ 'APR_ENOPOLL',
+ 'APR_ENOSOCKET',
+ 'APR_ENOTHREAD',
+ 'APR_ENOTHDKEY',
+ 'APR_EGENERAL',
+ 'APR_ENOSHMAVAIL',
+ 'APR_EBADIP',
+ 'APR_EBADMASK',
+ 'APR_EDSOOPEN',
+ 'APR_EABSOLUTE',
+ 'APR_ERELATIVE',
+ 'APR_EINCOMPLETE',
+ 'APR_EABOVEROOT',
+ 'APR_EBADPATH',
+ 'APR_EPATHWILD',
+ 'APR_ESYMNOTFOUND',
+ 'APR_EPROC_UNKNOWN',
+ 'APR_ENOTENOUGHENTROPY',
+ 'APR_EOF',
+ 'APR_EINIT',
+ 'APR_ENOTIMPL',
+ 'APR_EMISMATCH',
+ 'APR_EBUSY',
+ 'APR_EACCES',
+ 'APR_EEXIST',
+ 'APR_ENAMETOOLONG',
+ 'APR_ENOENT',
+ 'APR_ENOTDIR',
+ 'APR_ENOSPC',
+ 'APR_ENOMEM',
+ 'APR_EMFILE',
+ 'APR_ENFILE',
+ 'APR_EBADF',
+ 'APR_EINVAL',
+ 'APR_ESPIPE',
+ 'APR_EAGAIN',
+ 'APR_EINTR',
+ 'APR_ENOTSOCK',
+ 'APR_ECONNREFUSED',
+ 'APR_EINPROGRESS',
+ 'APR_ECONNABORTED',
+ 'APR_ECONNRESET',
+ 'APR_ETIMEDOUT',
+ 'APR_EHOSTUNREACH',
+ 'APR_ENETUNREACH',
+ 'APR_EFTYPE',
+ 'APR_EPIPE',
+ 'APR_EXDEV',
+ 'APR_ENOTEMPTY',
+ 'APR_EAFNOSUPPORT',
+ 'APR_EXCL',
+ 'APR_END',
+ 'APR_ENOKEY',
+ 'APR_ENOIV',
+ 'APR_EKEYTYPE',
+ 'APR_ENOSPACE',
+ 'APR_ECRYPT',
+ 'APR_EPADDING',
+ 'APR_EKEYLENGTH',
+ 'APR_ENOCIPHER',
+ 'APR_ENODIGEST',
+ 'APR_ENOENGINE',
+ 'APR_EINITENGINE',
+ 'APR_EREINIT'
+ ],
+ 'common' => [
+ 'APR_SUCCESS'
+ ]
+ }
+};
+
+
+1;
diff --git a/xs/tables/current24/Apache2/FunctionTable.pm b/xs/tables/current24/Apache2/FunctionTable.pm
new file mode 100644
index 0000000..adaa249
--- /dev/null
+++ b/xs/tables/current24/Apache2/FunctionTable.pm
@@ -0,0 +1,21265 @@
+package Apache2::FunctionTable;
+
+# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+# ! WARNING: generated by Apache2::ParseSource/0.02
+# ! Mon Jul 1 12:38:14 2013
+# ! do NOT edit, any changes will be lost !
+# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+$Apache2::FunctionTable = [
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_abort_on_oom',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_add_cgi_vars',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_add_common_vars',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_add_file_conf',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'core_dir_config *',
+ 'name' => 'conf'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'url_config'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_add_if_conf',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'core_dir_config *',
+ 'name' => 'conf'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'url_config'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'ap_filter_t *',
+ 'name' => 'ap_add_input_filter',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'ctx'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'ap_filter_t *',
+ 'name' => 'ap_add_input_filter_handle',
+ 'args' => [
+ {
+ 'type' => 'ap_filter_rec_t *',
+ 'name' => 'f'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'ctx'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_add_loaded_module',
+ 'args' => [
+ {
+ 'type' => 'module *',
+ 'name' => 'mod'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_add_module',
+ 'args' => [
+ {
+ 'type' => 'module *',
+ 'name' => 'm'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'ap_directive_t *',
+ 'name' => 'ap_add_node',
+ 'args' => [
+ {
+ 'type' => 'ap_directive_t **',
+ 'name' => 'parent'
+ },
+ {
+ 'type' => 'ap_directive_t *',
+ 'name' => 'current'
+ },
+ {
+ 'type' => 'ap_directive_t *',
+ 'name' => 'toadd'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'child'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'ap_filter_t *',
+ 'name' => 'ap_add_output_filter',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'ctx'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'ap_filter_t *',
+ 'name' => 'ap_add_output_filter_handle',
+ 'args' => [
+ {
+ 'type' => 'ap_filter_rec_t *',
+ 'name' => 'f'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'ctx'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_add_output_filters_by_type',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_add_per_dir_conf',
+ 'args' => [
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dir_config'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_add_per_url_conf',
+ 'args' => [
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'url_config'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_add_version_component',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pconf'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'component'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_allow_methods',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'reset'
+ },
+ {
+ 'type' => '...',
+ 'name' => 'arg2'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_allow_options',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_allow_overrides',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_allow_standard_methods',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'reset'
+ },
+ {
+ 'type' => '...',
+ 'name' => 'arg2'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_append_pid',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'string'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'delim'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_args_to_table',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'apr_table_t **',
+ 'name' => 'table'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_auth_name',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_auth_type',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_basic_http_header',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'bb'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_bin2hex',
+ 'args' => [
+ {
+ 'type' => 'const void *',
+ 'name' => 'src'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'srclen'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'dest'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'ap_bucket_eoc_create',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_alloc_t *',
+ 'name' => 'list'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'ap_bucket_eoc_make',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'b'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'ap_bucket_eor_create',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_alloc_t *',
+ 'name' => 'list'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'ap_bucket_eor_make',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'b'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'ap_bucket_error_create',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'error'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_bucket_alloc_t *',
+ 'name' => 'list'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'ap_bucket_error_make',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'b'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'error'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_build_config',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'conf_pool'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'temp_pool'
+ },
+ {
+ 'type' => 'ap_directive_t **',
+ 'name' => 'conftree'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_build_cont_config',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'temp_pool'
+ },
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'ap_directive_t **',
+ 'name' => 'current'
+ },
+ {
+ 'type' => 'ap_directive_t **',
+ 'name' => 'curr_parent'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'orig_directive'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_byterange_filter',
+ 'args' => [
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'f'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'b'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_calc_scoreboard_size',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'void *',
+ 'name' => 'ap_calloc',
+ 'args' => [
+ {
+ 'type' => 'size_t',
+ 'name' => 'nelem'
+ },
+ {
+ 'type' => 'size_t',
+ 'name' => 'size'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_cfg_closefile',
+ 'args' => [
+ {
+ 'type' => 'ap_configfile_t *',
+ 'name' => 'cfp'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_cfg_getc',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'ch'
+ },
+ {
+ 'type' => 'ap_configfile_t *',
+ 'name' => 'cfp'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_cfg_getline',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'bufsize'
+ },
+ {
+ 'type' => 'ap_configfile_t *',
+ 'name' => 'cfp'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_check_cmd_context',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'cmd'
+ },
+ {
+ 'type' => 'unsigned',
+ 'name' => 'forbidden'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_check_mpm',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_cleanup_scoreboard',
+ 'args' => [
+ {
+ 'type' => 'void *',
+ 'name' => 'd'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_clear_auth_internal',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_clear_method_list',
+ 'args' => [
+ {
+ 'type' => 'ap_method_list_t *',
+ 'name' => 'l'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_close_listeners',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_close_piped_log',
+ 'args' => [
+ {
+ 'type' => 'piped_log *',
+ 'name' => 'pl'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_close_selected_listeners',
+ 'args' => [
+ {
+ 'type' => 'ap_slave_t *',
+ 'name' => 'arg0'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_construct_server',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'hostname'
+ },
+ {
+ 'type' => 'apr_port_t',
+ 'name' => 'port'
+ },
+ {
+ 'type' => 'const request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_construct_url',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'uri'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_content_length_filter',
+ 'args' => [
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'arg0'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'arg1'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_content_type_tolower',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_context_document_root',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_context_prefix',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_cookie_check_string',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'string'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_cookie_read',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'val'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'remove'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_cookie_remove',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'attrs'
+ },
+ {
+ 'type' => '...',
+ 'name' => 'arg3'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_cookie_remove2',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name2'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'attrs2'
+ },
+ {
+ 'type' => '...',
+ 'name' => 'arg3'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_cookie_write',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'val'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'attrs'
+ },
+ {
+ 'type' => 'long',
+ 'name' => 'maxage'
+ },
+ {
+ 'type' => '...',
+ 'name' => 'arg5'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_cookie_write2',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name2'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'val'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'attrs2'
+ },
+ {
+ 'type' => 'long',
+ 'name' => 'maxage'
+ },
+ {
+ 'type' => '...',
+ 'name' => 'arg5'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_copy_method_list',
+ 'args' => [
+ {
+ 'type' => 'ap_method_list_t *',
+ 'name' => 'dest'
+ },
+ {
+ 'type' => 'ap_method_list_t *',
+ 'name' => 'src'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_core_child_status',
+ 'args' => [
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'pid_t',
+ 'name' => 'pid'
+ },
+ {
+ 'type' => 'ap_generation_t',
+ 'name' => 'gen'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'slot'
+ },
+ {
+ 'type' => 'mpm_child_status',
+ 'name' => 'status'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_core_input_filter',
+ 'args' => [
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'f'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'b'
+ },
+ {
+ 'type' => 'ap_input_mode_t',
+ 'name' => 'mode'
+ },
+ {
+ 'type' => 'apr_read_type_e',
+ 'name' => 'block'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'readbytes'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_core_output_filter',
+ 'args' => [
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'f'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'b'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_core_reorder_directories',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'arg0'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 'arg1'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_core_translate',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_count_dirs',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'path'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'ap_conf_vector_t*',
+ 'name' => 'ap_create_conn_config',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char **',
+ 'name' => 'ap_create_environment',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_table_t *',
+ 'name' => 't'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'ap_conf_vector_t *',
+ 'name' => 'ap_create_per_dir_config',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'ap_conf_vector_t*',
+ 'name' => 'ap_create_request_config',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_create_sb_handle',
+ 'args' => [
+ {
+ 'type' => 'ap_sb_handle_t **',
+ 'name' => 'new_sbh'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'child_num'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'thread_num'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_create_scoreboard',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'ap_scoreboard_e',
+ 'name' => 't'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_custom_response',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'status'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'string'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'ap_dbd_t*',
+ 'name' => 'ap_dbd_acquire',
+ 'args' => [
+ {
+ 'type' => 'request_rec*',
+ 'name' => 'arg0'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'ap_dbd_t*',
+ 'name' => 'ap_dbd_cacquire',
+ 'args' => [
+ {
+ 'type' => 'conn_rec*',
+ 'name' => 'arg0'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_dbd_close',
+ 'args' => [
+ {
+ 'type' => 'server_rec*',
+ 'name' => 'arg0'
+ },
+ {
+ 'type' => 'ap_dbd_t*',
+ 'name' => 'arg1'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'ap_dbd_t*',
+ 'name' => 'ap_dbd_open',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t*',
+ 'name' => 'arg0'
+ },
+ {
+ 'type' => 'server_rec*',
+ 'name' => 'arg1'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_dbd_prepare',
+ 'args' => [
+ {
+ 'type' => 'server_rec*',
+ 'name' => 'arg0'
+ },
+ {
+ 'type' => 'const char*',
+ 'name' => 'arg1'
+ },
+ {
+ 'type' => 'const char*',
+ 'name' => 'arg2'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_destroy_sub_req',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_die',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'type'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_directory_walk',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_discard_request_body',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_document_root',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_dump_mutexes',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'out'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_error_log2stderr',
+ 'args' => [
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'ap_escape_errorlog_item',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'dest'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'source'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'buflen'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_escape_html2',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'toasc'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_escape_logitem',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'str'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_escape_path_segment',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_escape_path_segment_buffer',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'c'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_escape_quotes',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'instring'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_escape_shell_cmd',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_escape_urlencoded',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_escape_urlencoded_buffer',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'c'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_exists_config_define',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_exists_scoreboard_image',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_explode_recent_gmt',
+ 'args' => [
+ {
+ 'type' => 'apr_time_exp_t *',
+ 'name' => 'tm'
+ },
+ {
+ 'type' => 'apr_time_t',
+ 'name' => 't'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_explode_recent_localtime',
+ 'args' => [
+ {
+ 'type' => 'apr_time_exp_t *',
+ 'name' => 'tm'
+ },
+ {
+ 'type' => 'apr_time_t',
+ 'name' => 't'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_expr_exec',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'const ap_expr_info_t *',
+ 'name' => 'expr'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'err'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_expr_exec_ctx',
+ 'args' => [
+ {
+ 'type' => 'ap_expr_eval_ctx_t *',
+ 'name' => 'ctx'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_expr_exec_re',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'const ap_expr_info_t *',
+ 'name' => 'expr'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'nmatch'
+ },
+ {
+ 'type' => 'ap_regmatch_t *',
+ 'name' => 'pmatch'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'source'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'err'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_expr_init',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_expr_lookup_default',
+ 'args' => [
+ {
+ 'type' => 'ap_expr_lookup_parms *',
+ 'name' => 'parms'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_expr_parse',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'ptemp'
+ },
+ {
+ 'type' => 'ap_expr_info_t *',
+ 'name' => 'info'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'expr'
+ },
+ {
+ 'type' => 'ap_expr_lookup_fn_t *',
+ 'name' => 'lookup_fn'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'ap_expr_info_t *',
+ 'name' => 'ap_expr_parse_cmd_mi',
+ 'args' => [
+ {
+ 'type' => 'const cmd_parms *',
+ 'name' => 'cmd'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'expr'
+ },
+ {
+ 'type' => 'unsigned int',
+ 'name' => 'flags'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'err'
+ },
+ {
+ 'type' => 'ap_expr_lookup_fn_t *',
+ 'name' => 'lookup_fn'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'module_index'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_expr_str_exec',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'const ap_expr_info_t *',
+ 'name' => 'expr'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'err'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_expr_str_exec_re',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'const ap_expr_info_t *',
+ 'name' => 'expr'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'nmatch'
+ },
+ {
+ 'type' => 'ap_regmatch_t *',
+ 'name' => 'pmatch'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'source'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'err'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_fatal_signal_child_setup',
+ 'args' => [
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_fatal_signal_setup',
+ 'args' => [
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'in_pconf'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_fflush',
+ 'args' => [
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'f'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'bb'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_field_noparam',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'intype'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_file_walk',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_filter_flush',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'bb'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'ctx'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_filter_protocol',
+ 'args' => [
+ {
+ 'type' => 'ap_filter_t*',
+ 'name' => 'f'
+ },
+ {
+ 'type' => 'unsigned int',
+ 'name' => 'proto_flags'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_finalize_request_protocol',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_finalize_sub_req_protocol',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'sub_r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_find_child_by_pid',
+ 'args' => [
+ {
+ 'type' => 'apr_proc_t *',
+ 'name' => 'pid'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const command_rec *',
+ 'name' => 'ap_find_command',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'const command_rec *',
+ 'name' => 'cmds'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const command_rec *',
+ 'name' => 'ap_find_command_in_modules',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'cmd_name'
+ },
+ {
+ 'type' => 'module **',
+ 'name' => 'mod'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_find_last_token',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'line'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'tok'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'module *',
+ 'name' => 'ap_find_linked_module',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_find_list_item',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'line'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'tok'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_find_module_name',
+ 'args' => [
+ {
+ 'type' => 'module *',
+ 'name' => 'm'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_find_module_short_name',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'module_index'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_find_path_info',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'uri'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'path_info'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_find_token',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'line'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'tok'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_fini_vhost_config',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 'main_server'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_fixup_virtual_hosts',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 'main_server'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_flush_conn',
+ 'args' => [
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_fprintf',
+ 'args' => [
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'f'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'bb'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'fmt'
+ },
+ {
+ 'type' => '...',
+ 'name' => 'arg3'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_fputstrs',
+ 'args' => [
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'f'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'bb'
+ },
+ {
+ 'type' => '...',
+ 'name' => 'arg2'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_get_basic_auth_pw',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'pw'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_get_brigade',
+ 'args' => [
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'filter'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'bucket'
+ },
+ {
+ 'type' => 'ap_input_mode_t',
+ 'name' => 'mode'
+ },
+ {
+ 'type' => 'apr_read_type_e',
+ 'name' => 'block'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'readbytes'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'long',
+ 'name' => 'ap_get_client_block',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'buffer'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'bufsiz'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_get_conn_module_loglevel',
+ 'args' => [
+ {
+ 'type' => 'const conn_rec *',
+ 'name' => 'c'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'index'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_get_conn_server_module_loglevel',
+ 'args' => [
+ {
+ 'type' => 'const conn_rec *',
+ 'name' => 'c'
+ },
+ {
+ 'type' => 'const server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'index'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_socket_t *',
+ 'name' => 'ap_get_conn_socket',
+ 'args' => [
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void *',
+ 'name' => 'ap_get_core_module_config',
+ 'args' => [
+ {
+ 'type' => 'const ap_conf_vector_t *',
+ 'name' => 'cv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'ap_filter_rec_t *',
+ 'name' => 'ap_get_input_filter_handle',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_off_t',
+ 'name' => 'ap_get_limit_req_body',
+ 'args' => [
+ {
+ 'type' => 'const request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'ap_get_limit_xml_body',
+ 'args' => [
+ {
+ 'type' => 'const request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_get_list_item',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'field'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_get_loadavg',
+ 'args' => [
+ {
+ 'type' => 'ap_loadavg_t *',
+ 'name' => 'ld'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_get_local_host',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_get_mime_headers',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_get_mime_headers_core',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'bb'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void *',
+ 'name' => 'ap_get_module_config',
+ 'args' => [
+ {
+ 'type' => 'const ap_conf_vector_t *',
+ 'name' => 'cv'
+ },
+ {
+ 'type' => 'const module *',
+ 'name' => 'm'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'ap_filter_rec_t *',
+ 'name' => 'ap_get_output_filter_handle',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_get_remote_host',
+ 'args' => [
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'conn'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dir_config'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'type'
+ },
+ {
+ 'type' => 'int *',
+ 'name' => 'str_is_ip'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_get_remote_logname',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_get_request_module_loglevel',
+ 'args' => [
+ {
+ 'type' => 'const request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'index'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void **',
+ 'name' => 'ap_get_request_note',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'note_num'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'global_score *',
+ 'name' => 'ap_get_scoreboard_global',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'process_score *',
+ 'name' => 'ap_get_scoreboard_process',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'x'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'worker_score *',
+ 'name' => 'ap_get_scoreboard_worker',
+ 'args' => [
+ {
+ 'type' => 'ap_sb_handle_t *',
+ 'name' => 'sbh'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'worker_score *',
+ 'name' => 'ap_get_scoreboard_worker_from_indexes',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'child_num'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'thread_num'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_get_server_banner',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_get_server_built',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_get_server_description',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_get_server_module_loglevel',
+ 'args' => [
+ {
+ 'type' => 'const server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'index'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_get_server_name',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_get_server_name_for_url',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_port_t',
+ 'name' => 'ap_get_server_port',
+ 'args' => [
+ {
+ 'type' => 'const request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char*',
+ 'name' => 'ap_get_server_protocol',
+ 'args' => [
+ {
+ 'type' => 'server_rec*',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_get_server_revision',
+ 'args' => [
+ {
+ 'type' => 'ap_version_t *',
+ 'name' => 'version'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_get_server_version',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_get_sload',
+ 'args' => [
+ {
+ 'type' => 'ap_sload_t *',
+ 'name' => 'ld'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_get_status_line',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'status'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_get_token',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'accept_line'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'accept_white'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_getline',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'n'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'fold'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_getparents',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_getword',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'line'
+ },
+ {
+ 'type' => 'char',
+ 'name' => 'stop'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_getword_conf',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'line'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_getword_conf_nc',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'char **',
+ 'name' => 'line'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_getword_nc',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'char **',
+ 'name' => 'line'
+ },
+ {
+ 'type' => 'char',
+ 'name' => 'stop'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_getword_nulls',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'line'
+ },
+ {
+ 'type' => 'char',
+ 'name' => 'stop'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_getword_nulls_nc',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'char **',
+ 'name' => 'line'
+ },
+ {
+ 'type' => 'char',
+ 'name' => 'stop'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_getword_white',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'line'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_getword_white_nc',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'char **',
+ 'name' => 'line'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_global_mutex_create',
+ 'args' => [
+ {
+ 'type' => 'apr_global_mutex_t **',
+ 'name' => 'mutex'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'type'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'instance_id'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 'server'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'options'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'gid_t',
+ 'name' => 'ap_gname2id',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_access_checker',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_access_checker_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_access_checker_ex',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_access_checker_ex_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_auth_checker',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_auth_checker_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_check_access',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_access_checker_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'type'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_check_access_ex',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_access_checker_ex_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'type'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_check_authn',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_check_user_id_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'type'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_check_authz',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_auth_checker_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'type'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_check_config',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_check_config_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_check_user_id',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_check_user_id_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_child_init',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_child_init_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_child_status',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_child_status_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_create_connection',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_create_connection_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_create_request',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_create_request_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_default_port',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_default_port_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_drop_privileges',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_drop_privileges_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_end_generation',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_end_generation_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_error_log',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_error_log_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_expr_lookup',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_expr_lookup_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_fixups',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_fixups_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_generate_log_id',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_generate_log_id_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_access_checker',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_access_checker_ex',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_auth_checker',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_check_config',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_check_user_id',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_child_init',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_child_status',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_create_connection',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_create_request',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_default_port',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_drop_privileges',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_end_generation',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_error_log',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_expr_lookup',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_fixups',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_generate_log_id',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_get_mgmt_items',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_get_suexec_identity',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_handler',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_header_parser',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_http_scheme',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_insert_error_filter',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_insert_filter',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_insert_network_bucket',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_log_transaction',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_map_to_storage',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_get_mgmt_items',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_get_mgmt_items_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_monitor',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_mpm',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_mpm_get_name',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_mpm_query',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_mpm_register_timed_callback',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_note_auth_failure',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_open_logs',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_optional_fn_retrieve',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_post_config',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_post_read_request',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_pre_config',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_pre_connection',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_pre_mpm',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_pre_read_request',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_process_connection',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_quick_handler',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_session_decode',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_session_encode',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_session_load',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_session_save',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_status_hook',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_get_suexec_identity',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_get_suexec_identity_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_test_config',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_translate_name',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_type_checker',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_watchdog_exit',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_watchdog_init',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_watchdog_need',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_hook_get_watchdog_step',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_handler',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_handler_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_header_parser',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_header_parser_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_http_scheme',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_http_scheme_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_insert_error_filter',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_insert_error_filter_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_insert_filter',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_insert_filter_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_insert_network_bucket',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_insert_network_bucket_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_log_transaction',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_log_transaction_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_map_to_storage',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_map_to_storage_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_monitor',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_monitor_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_mpm',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_mpm_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_mpm_get_name',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_mpm_get_name_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_mpm_query',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_mpm_query_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_mpm_register_timed_callback',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_mpm_register_timed_callback_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_note_auth_failure',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_note_auth_failure_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_open_logs',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_open_logs_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_optional_fn_retrieve',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_optional_fn_retrieve_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_post_config',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_post_config_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_post_read_request',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_post_read_request_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_pre_config',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_pre_config_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_pre_connection',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_pre_connection_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_pre_mpm',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_pre_mpm_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_pre_read_request',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_pre_read_request_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_process_connection',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_process_connection_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_quick_handler',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_quick_handler_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_session_decode',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_session_decode_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_session_encode',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_session_encode_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_session_load',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_session_load_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_session_save',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_session_save_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_status_hook',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_status_hook_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_test_config',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_test_config_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_translate_name',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_translate_name_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_type_checker',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_type_checker_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_watchdog_exit',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_watchdog_exit_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_watchdog_init',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_watchdog_init_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_watchdog_need',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_watchdog_need_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_hook_watchdog_step',
+ 'args' => [
+ {
+ 'type' => 'ap_HOOK_watchdog_step_t *',
+ 'name' => 'pf'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_ht_time',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_time_t',
+ 'name' => 't'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'fmt'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'gmt'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_http_chunk_filter',
+ 'args' => [
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'f'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'b'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_http_filter',
+ 'args' => [
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'f'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'b'
+ },
+ {
+ 'type' => 'ap_input_mode_t',
+ 'name' => 'mode'
+ },
+ {
+ 'type' => 'apr_read_type_e',
+ 'name' => 'block'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'readbytes'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_http_header_filter',
+ 'args' => [
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'f'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'b'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_http_outerror_filter',
+ 'args' => [
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'f'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'b'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_if_walk',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_increment_counts',
+ 'args' => [
+ {
+ 'type' => 'ap_sb_handle_t *',
+ 'name' => 'sbh'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_ind',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'str'
+ },
+ {
+ 'type' => 'char',
+ 'name' => 'c'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_index_of_response',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'status'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_init_rng',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_init_scoreboard',
+ 'args' => [
+ {
+ 'type' => 'void *',
+ 'name' => 'shared_score'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_init_vhost_config',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_init_virtual_host',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'hostname'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 'main_server'
+ },
+ {
+ 'type' => 'server_rec **',
+ 'name' => 'ps'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_internal_fast_redirect',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'sub_req'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_internal_redirect',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'new_uri'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_internal_redirect_handler',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'new_uri'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_invoke_handler',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_is_directory',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_is_initial_req',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_is_matchexp',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'str'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_is_rdirectory',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_is_recursion_limit_exceeded',
+ 'args' => [
+ {
+ 'type' => 'const request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_is_url',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'u'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_limit_section',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'cmd'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_lingering_close',
+ 'args' => [
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_list_provider_groups',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'ap_list_provider_names',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'provider_group'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'provider_version'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_listen_pre_config',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_location_walk',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_log_assert',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'szExp'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szFile'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nLine'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_log_cerror_',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'file'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'line'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'module_index'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'level'
+ },
+ {
+ 'type' => 'apr_status_t',
+ 'name' => 'status'
+ },
+ {
+ 'type' => 'const conn_rec *',
+ 'name' => 'c'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'fmt'
+ },
+ {
+ 'type' => '...',
+ 'name' => 'arg7'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_log_command_line',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_log_cserror_',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'file'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'line'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'module_index'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'level'
+ },
+ {
+ 'type' => 'apr_status_t',
+ 'name' => 'status'
+ },
+ {
+ 'type' => 'const conn_rec *',
+ 'name' => 'c'
+ },
+ {
+ 'type' => 'const server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'fmt'
+ },
+ {
+ 'type' => '...',
+ 'name' => 'arg8'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_log_error_',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'file'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'line'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'module_index'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'level'
+ },
+ {
+ 'type' => 'apr_status_t',
+ 'name' => 'status'
+ },
+ {
+ 'type' => 'const server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'fmt'
+ },
+ {
+ 'type' => '...',
+ 'name' => 'arg7'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_log_perror_',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'file'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'line'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'module_index'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'level'
+ },
+ {
+ 'type' => 'apr_status_t',
+ 'name' => 'status'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'fmt'
+ },
+ {
+ 'type' => '...',
+ 'name' => 'arg7'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_log_pid',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'fname'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_log_rerror_',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'file'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'line'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'module_index'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'level'
+ },
+ {
+ 'type' => 'apr_status_t',
+ 'name' => 'status'
+ },
+ {
+ 'type' => 'const request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'fmt'
+ },
+ {
+ 'type' => '...',
+ 'name' => 'arg7'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_logs_child_init',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void *',
+ 'name' => 'ap_lookup_provider',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'provider_group'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'provider_name'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'provider_version'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_make_content_type',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'type'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_make_dirstr_parent',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_make_dirstr_prefix',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'd'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'n'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_make_etag',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'force_weak'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_make_full_path',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'a'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'dir'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'f'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'ap_method_list_t *',
+ 'name' => 'ap_make_method_list',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nelts'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void *',
+ 'name' => 'ap_malloc',
+ 'args' => [
+ {
+ 'type' => 'size_t',
+ 'name' => 'size'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_matches_request_vhost',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'host'
+ },
+ {
+ 'type' => 'apr_port_t',
+ 'name' => 'port'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_md5',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'a'
+ },
+ {
+ 'type' => 'const unsigned char *',
+ 'name' => 'string'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_md5_binary',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'a'
+ },
+ {
+ 'type' => 'const unsigned char *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'len'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_md5contextTo64',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_md5_ctx_t *',
+ 'name' => 'context'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_md5digest',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'infile'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_meets_conditions',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_merge_log_config',
+ 'args' => [
+ {
+ 'type' => 'const struct ap_logconf *',
+ 'name' => 'old_conf'
+ },
+ {
+ 'type' => 'struct ap_logconf *',
+ 'name' => 'new_conf'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'ap_conf_vector_t*',
+ 'name' => 'ap_merge_per_dir_configs',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'ap_conf_vector_t *',
+ 'name' => 'base'
+ },
+ {
+ 'type' => 'ap_conf_vector_t *',
+ 'name' => 'new_conf'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_method_in_list',
+ 'args' => [
+ {
+ 'type' => 'ap_method_list_t *',
+ 'name' => 'l'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'method'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_method_is_limited',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'cmd'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'method'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_method_list_add',
+ 'args' => [
+ {
+ 'type' => 'ap_method_list_t *',
+ 'name' => 'l'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'method'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_method_list_remove',
+ 'args' => [
+ {
+ 'type' => 'ap_method_list_t *',
+ 'name' => 'l'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'method'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_method_name_of',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'methnum'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_method_number_of',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'method'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_method_register',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'methname'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_method_registry_init',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_mpm_dump_pidfile',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'out'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_mpm_end_gen_helper',
+ 'args' => [
+ {
+ 'type' => 'void *unused',
+ 'name' => 'arg0'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_mpm_pod_check',
+ 'args' => [
+ {
+ 'type' => 'ap_pod_t *',
+ 'name' => 'pod'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_mpm_pod_close',
+ 'args' => [
+ {
+ 'type' => 'ap_pod_t *',
+ 'name' => 'pod'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_mpm_pod_killpg',
+ 'args' => [
+ {
+ 'type' => 'ap_pod_t *',
+ 'name' => 'pod'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'num'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_mpm_pod_open',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'ap_pod_t **',
+ 'name' => 'pod'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_mpm_pod_signal',
+ 'args' => [
+ {
+ 'type' => 'ap_pod_t *',
+ 'name' => 'pod'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_mpm_query',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'query_code'
+ },
+ {
+ 'type' => 'int *',
+ 'name' => 'result'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_mpm_register_timed_callback',
+ 'args' => [
+ {
+ 'type' => 'apr_time_t',
+ 'name' => 't'
+ },
+ {
+ 'type' => 'ap_mpm_callback_fn_t *',
+ 'name' => 'cbfn'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'baton'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_mpm_rewrite_args',
+ 'args' => [
+ {
+ 'type' => 'process_rec *',
+ 'name' => 'arg0'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_mpm_safe_kill',
+ 'args' => [
+ {
+ 'type' => 'pid_t',
+ 'name' => 'pid'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'sig'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_mpm_set_coredumpdir',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'cmd'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_mpm_set_graceful_shutdown',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'cmd'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_mpm_set_max_mem_free',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'cmd'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_mpm_set_max_requests',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'cmd'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_mpm_set_pidfile',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'cmd'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_mpm_set_thread_stacksize',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'cmd'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_mutex_init',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_mutex_register',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pconf'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'type'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'default_dir'
+ },
+ {
+ 'type' => 'apr_lockmech_e',
+ 'name' => 'default_mech'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'options'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'struct ap_logconf *',
+ 'name' => 'ap_new_log_config',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const struct ap_logconf *',
+ 'name' => 'old'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_no2slash',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_note_auth_failure',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_note_basic_auth_failure',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_note_digest_auth_failure',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_old_write_filter',
+ 'args' => [
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'f'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'b'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_open_logs',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pconf'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'plog'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'ptemp'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's_main'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'piped_log *',
+ 'name' => 'ap_open_piped_log',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'program'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'piped_log *',
+ 'name' => 'ap_open_piped_log_ex',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'program'
+ },
+ {
+ 'type' => 'apr_cmdtype_e',
+ 'name' => 'cmdtype'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_open_stderr_log',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_os_create_privileged_process',
+ 'args' => [
+ {
+ 'type' => 'const request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'apr_proc_t *',
+ 'name' => 'newproc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'progname'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'args'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'env'
+ },
+ {
+ 'type' => 'apr_procattr_t *',
+ 'name' => 'attr'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_os_escape_path',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'path'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'partial'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_os_is_path_absolute',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'dir'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_parse_form_data',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'struct ap_filter_t *',
+ 'name' => 'f'
+ },
+ {
+ 'type' => 'apr_array_header_t **',
+ 'name' => 'ptr'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'num'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'size'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_parse_htaccess',
+ 'args' => [
+ {
+ 'type' => 'ap_conf_vector_t **',
+ 'name' => 'result'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'override'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'override_opts'
+ },
+ {
+ 'type' => 'apr_table_t *',
+ 'name' => 'override_list'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'path'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'access_name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_parse_log_level',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'str'
+ },
+ {
+ 'type' => 'int *',
+ 'name' => 'val'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_parse_mutex',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'apr_lockmech_e *',
+ 'name' => 'mutexmech'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'mutexfile'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_parse_uri',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'uri'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_parse_vhost_addrs',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'hostname'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_pass_brigade',
+ 'args' => [
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'filter'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'bucket'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_pass_brigade_fchk',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'bucket'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'fmt'
+ },
+ {
+ 'type' => '...',
+ 'name' => 'arg3'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_pbase64decode',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'bufcoded'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_pbase64encode',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'string'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'ap_configfile_t *',
+ 'name' => 'ap_pcfg_open_custom',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'descr'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'param'
+ },
+ {
+ 'type' => 'apr_status_t (*getc_func) (char *ch, void *param)',
+ 'name' => 'arg3'
+ },
+ {
+ 'type' => 'apr_status_t (*gets_func) (void *buf, apr_size_t bufsiz, void *param)',
+ 'name' => 'arg4'
+ },
+ {
+ 'type' => 'apr_status_t (*close_func) (void *param)',
+ 'name' => 'arg5'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_pcfg_openfile',
+ 'args' => [
+ {
+ 'type' => 'ap_configfile_t **',
+ 'name' => 'ret_cfg'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_pcfg_strerror',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'ap_configfile_t *',
+ 'name' => 'cfp'
+ },
+ {
+ 'type' => 'apr_status_t',
+ 'name' => 'rc'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_pcw_walk_config',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pconf'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'module *',
+ 'name' => 'modp'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'ap_pcw_dir_cb_t',
+ 'name' => 'dir_cb'
+ },
+ {
+ 'type' => 'ap_pcw_srv_cb_t',
+ 'name' => 'srv_cb'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_pcw_walk_default_config',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pconf'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'module *',
+ 'name' => 'modp'
+ },
+ {
+ 'type' => 'ap_pcw_dir_cb_t',
+ 'name' => 'dir_cb'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_pcw_walk_directory_config',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pconf'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'core_server_config *',
+ 'name' => 'sconf'
+ },
+ {
+ 'type' => 'module *',
+ 'name' => 'modp'
+ },
+ {
+ 'type' => 'ap_pcw_dir_cb_t',
+ 'name' => 'dir_cb'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_pcw_walk_files_config',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pconf'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'core_dir_config *',
+ 'name' => 'dconf'
+ },
+ {
+ 'type' => 'module *',
+ 'name' => 'modp'
+ },
+ {
+ 'type' => 'ap_pcw_dir_cb_t',
+ 'name' => 'dir_cb'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_pcw_walk_location_config',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pconf'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'core_server_config *',
+ 'name' => 'sconf'
+ },
+ {
+ 'type' => 'module *',
+ 'name' => 'modp'
+ },
+ {
+ 'type' => 'ap_pcw_dir_cb_t',
+ 'name' => 'dir_cb'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_pcw_walk_server_config',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pconf'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'module *',
+ 'name' => 'modp'
+ },
+ {
+ 'type' => 'ap_pcw_srv_cb_t',
+ 'name' => 'srv_cb'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_file_t *',
+ 'name' => 'ap_piped_log_read_fd',
+ 'args' => [
+ {
+ 'type' => 'piped_log *',
+ 'name' => 'pl'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_file_t *',
+ 'name' => 'ap_piped_log_write_fd',
+ 'args' => [
+ {
+ 'type' => 'piped_log *',
+ 'name' => 'pl'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_pool_cleanup_set_null',
+ 'args' => [
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'ap_regex_t *',
+ 'name' => 'ap_pregcomp',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'pattern'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'cflags'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_pregfree',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'ap_regex_t *',
+ 'name' => 'reg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_pregsub',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'input'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'source'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'nmatch'
+ },
+ {
+ 'type' => 'ap_regmatch_t',
+ 'name' => 'pmatch'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_pregsub_ex',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'char **',
+ 'name' => 'result'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'input'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'source'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'nmatch'
+ },
+ {
+ 'type' => 'ap_regmatch_t',
+ 'name' => 'pmatch'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'maxlen'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_proc_mutex_create',
+ 'args' => [
+ {
+ 'type' => 'apr_proc_mutex_t **',
+ 'name' => 'mutex'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'type'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'instance_id'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 'server'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'options'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_process_async_request',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_process_child_status',
+ 'args' => [
+ {
+ 'type' => 'apr_proc_t *',
+ 'name' => 'pid'
+ },
+ {
+ 'type' => 'apr_exit_why_e',
+ 'name' => 'why'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'status'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_process_config_tree',
+ 'args' => [
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'ap_directive_t *',
+ 'name' => 'conftree'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'ptemp'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_process_connection',
+ 'args' => [
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'csd'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_process_fnmatch_configs',
+ 'args' => [
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'fname'
+ },
+ {
+ 'type' => 'ap_directive_t **',
+ 'name' => 'conftree'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'ptemp'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'optional'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_process_request',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_process_request_after_handler',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_process_request_internal',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_process_resource_config',
+ 'args' => [
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'fname'
+ },
+ {
+ 'type' => 'ap_directive_t **',
+ 'name' => 'conftree'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'ptemp'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_psignature',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'prefix'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_pstr2_alnum',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'src'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'dest'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_random_insecure_bytes',
+ 'args' => [
+ {
+ 'type' => 'void *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'size'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_random_parent_after_fork',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_uint32_t',
+ 'name' => 'ap_random_pick',
+ 'args' => [
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'min'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'max'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_time_t',
+ 'name' => 'ap_rationalize_mtime',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'apr_time_t',
+ 'name' => 'mtime'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'server_rec *',
+ 'name' => 'ap_read_config',
+ 'args' => [
+ {
+ 'type' => 'process_rec *',
+ 'name' => 'process'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'temp_pool'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'config_name'
+ },
+ {
+ 'type' => 'ap_directive_t **',
+ 'name' => 'conftree'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_read_pid',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'filename'
+ },
+ {
+ 'type' => 'pid_t *',
+ 'name' => 'mypid'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'request_rec *',
+ 'name' => 'ap_read_request',
+ 'args' => [
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void *',
+ 'name' => 'ap_realloc',
+ 'args' => [
+ {
+ 'type' => 'void *',
+ 'name' => 'ptr'
+ },
+ {
+ 'type' => 'size_t',
+ 'name' => 'size'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_recent_ctime',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'date_str'
+ },
+ {
+ 'type' => 'apr_time_t',
+ 'name' => 't'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_recent_ctime_ex',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'date_str'
+ },
+ {
+ 'type' => 'apr_time_t',
+ 'name' => 't'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'option'
+ },
+ {
+ 'type' => 'int *',
+ 'name' => 'len'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_recent_rfc822_date',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'date_str'
+ },
+ {
+ 'type' => 'apr_time_t',
+ 'name' => 't'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_reclaim_child_processes',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'terminate'
+ },
+ {
+ 'type' => 'ap_reclaim_callback_fn_t *',
+ 'name' => 'mpm_callback'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_regcomp',
+ 'args' => [
+ {
+ 'type' => 'ap_regex_t *',
+ 'name' => 'preg'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'regex'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'cflags'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'ap_regerror',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'errcode'
+ },
+ {
+ 'type' => 'const ap_regex_t *',
+ 'name' => 'preg'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'errbuf'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'errbuf_size'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_regexec',
+ 'args' => [
+ {
+ 'type' => 'const ap_regex_t *',
+ 'name' => 'preg'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'string'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'nmatch'
+ },
+ {
+ 'type' => 'ap_regmatch_t *',
+ 'name' => 'pmatch'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'eflags'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_regexec_len',
+ 'args' => [
+ {
+ 'type' => 'const ap_regex_t *',
+ 'name' => 'preg'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'buff'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'len'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'nmatch'
+ },
+ {
+ 'type' => 'ap_regmatch_t *',
+ 'name' => 'pmatch'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'eflags'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_regfree',
+ 'args' => [
+ {
+ 'type' => 'ap_regex_t *',
+ 'name' => 'preg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_register_auth_provider',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'provider_group'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'provider_name'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'provider_version'
+ },
+ {
+ 'type' => 'const void *',
+ 'name' => 'provider'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'type'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_register_config_hooks',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_register_errorlog_handler',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'tag'
+ },
+ {
+ 'type' => 'ap_errorlog_handler_fn_t *',
+ 'name' => 'handler'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'flags'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_register_extra_mpm_process',
+ 'args' => [
+ {
+ 'type' => 'pid_t',
+ 'name' => 'pid'
+ },
+ {
+ 'type' => 'ap_generation_t',
+ 'name' => 'gen'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_register_hooks',
+ 'args' => [
+ {
+ 'type' => 'module *',
+ 'name' => 'm'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'ap_filter_rec_t *',
+ 'name' => 'ap_register_input_filter',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'ap_in_filter_func',
+ 'name' => 'filter_func'
+ },
+ {
+ 'type' => 'ap_init_filter_func',
+ 'name' => 'filter_init'
+ },
+ {
+ 'type' => 'ap_filter_type',
+ 'name' => 'ftype'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_register_log_hooks',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'ap_filter_rec_t *',
+ 'name' => 'ap_register_output_filter',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'ap_out_filter_func',
+ 'name' => 'filter_func'
+ },
+ {
+ 'type' => 'ap_init_filter_func',
+ 'name' => 'filter_init'
+ },
+ {
+ 'type' => 'ap_filter_type',
+ 'name' => 'ftype'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'ap_filter_rec_t *',
+ 'name' => 'ap_register_output_filter_protocol',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'ap_out_filter_func',
+ 'name' => 'filter_func'
+ },
+ {
+ 'type' => 'ap_init_filter_func',
+ 'name' => 'filter_init'
+ },
+ {
+ 'type' => 'ap_filter_type',
+ 'name' => 'ftype'
+ },
+ {
+ 'type' => 'unsigned int',
+ 'name' => 'proto_flags'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_register_provider',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'provider_group'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'provider_name'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'provider_version'
+ },
+ {
+ 'type' => 'const void *',
+ 'name' => 'provider'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'ap_register_request_note',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_relieve_child_processes',
+ 'args' => [
+ {
+ 'type' => 'ap_reclaim_callback_fn_t *',
+ 'name' => 'mpm_callback'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_remove_input_filter',
+ 'args' => [
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'f'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_remove_loaded_module',
+ 'args' => [
+ {
+ 'type' => 'module *',
+ 'name' => 'mod'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_remove_module',
+ 'args' => [
+ {
+ 'type' => 'module *',
+ 'name' => 'm'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_remove_output_filter',
+ 'args' => [
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'f'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_remove_pid',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'fname'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_reopen_scoreboard',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_shm_t **',
+ 'name' => 'shm'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'detached'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_replace_stderr_log',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'file'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_request_has_body',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_reserve_module_slots',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'count'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_reserve_module_slots_directive',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'directive'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_reset_module_loglevels',
+ 'args' => [
+ {
+ 'type' => 'struct ap_logconf *',
+ 'name' => 'l'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'val'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_resolve_env',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'word'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_response_code_string',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'error_index'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void *',
+ 'name' => 'ap_retained_data_create',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'size'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void *',
+ 'name' => 'ap_retained_data_get',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'key'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_rflush',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_rgetline_core',
+ 'args' => [
+ {
+ 'type' => 'char **',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'n'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'read'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'fold'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'bb'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_rind',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'str'
+ },
+ {
+ 'type' => 'char',
+ 'name' => 'c'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_rprintf',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'fmt'
+ },
+ {
+ 'type' => '...',
+ 'name' => 'arg2'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_rputc',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'c'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_rputs',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'str'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_access_checker',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_access_checker_ex',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_auth_checker',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_check_config',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pconf'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'plog'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'ptemp'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_check_user_id',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_run_child_init',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pchild'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_run_child_status',
+ 'args' => [
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'pid_t',
+ 'name' => 'pid'
+ },
+ {
+ 'type' => 'ap_generation_t',
+ 'name' => 'gen'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'slot'
+ },
+ {
+ 'type' => 'mpm_child_status',
+ 'name' => 'state'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'conn_rec *',
+ 'name' => 'ap_run_create_connection',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 'server'
+ },
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'csd'
+ },
+ {
+ 'type' => 'long',
+ 'name' => 'conn_id'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'sbh'
+ },
+ {
+ 'type' => 'apr_bucket_alloc_t *',
+ 'name' => 'alloc'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_create_request',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_port_t',
+ 'name' => 'ap_run_default_port',
+ 'args' => [
+ {
+ 'type' => 'const request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_drop_privileges',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pchild'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_run_end_generation',
+ 'args' => [
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'ap_generation_t',
+ 'name' => 'gen'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_run_error_log',
+ 'args' => [
+ {
+ 'type' => 'const ap_errorlog_info *',
+ 'name' => 'info'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'errstr'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_expr_lookup',
+ 'args' => [
+ {
+ 'type' => 'ap_expr_lookup_parms *',
+ 'name' => 'parms'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_fixups',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_generate_log_id',
+ 'args' => [
+ {
+ 'type' => 'const conn_rec *',
+ 'name' => 'c'
+ },
+ {
+ 'type' => 'const request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'id'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_get_mgmt_items',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'val'
+ },
+ {
+ 'type' => 'apr_hash_t *',
+ 'name' => 'ht'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'ap_unix_identity_t *',
+ 'name' => 'ap_run_get_suexec_identity',
+ 'args' => [
+ {
+ 'type' => 'const request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_handler',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_header_parser',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_run_http_scheme',
+ 'args' => [
+ {
+ 'type' => 'const request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_run_insert_error_filter',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_run_insert_filter',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_run_insert_network_bucket',
+ 'args' => [
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'bb'
+ },
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'socket'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_log_transaction',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_map_to_storage',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_monitor',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_mpm',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pconf'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'plog'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 'server_conf'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_run_mpm_get_name',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_mpm_query',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'query_code'
+ },
+ {
+ 'type' => 'int *',
+ 'name' => 'result'
+ },
+ {
+ 'type' => 'apr_status_t *',
+ 'name' => 'rv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_run_mpm_register_timed_callback',
+ 'args' => [
+ {
+ 'type' => 'apr_time_t',
+ 'name' => 't'
+ },
+ {
+ 'type' => 'ap_mpm_callback_fn_t *',
+ 'name' => 'cbfn'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'baton'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_note_auth_failure',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'auth_type'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_open_logs',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pconf'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'plog'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'ptemp'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_run_optional_fn_retrieve',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_post_config',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pconf'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'plog'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'ptemp'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_post_read_request',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_pre_config',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pconf'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'plog'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'ptemp'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_pre_connection',
+ 'args' => [
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'csd'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_pre_mpm',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'ap_scoreboard_e',
+ 'name' => 'sb_type'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_run_pre_read_request',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_process_connection',
+ 'args' => [
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_quick_handler',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'lookup_uri'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_run_rewrite_args',
+ 'args' => [
+ {
+ 'type' => 'process_rec *',
+ 'name' => 'process'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_run_session_decode',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'session_rec *',
+ 'name' => 'z'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_run_session_encode',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'session_rec *',
+ 'name' => 'z'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_run_session_load',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'session_rec **',
+ 'name' => 'z'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_run_session_save',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'session_rec *',
+ 'name' => 'z'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_status_hook',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'flags'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_sub_req',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_run_test_config',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pconf'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_translate_name',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_type_checker',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_watchdog_exit',
+ 'args' => [
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_watchdog_init',
+ 'args' => [
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_watchdog_need',
+ 'args' => [
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'parent'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'singleton'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_run_watchdog_step',
+ 'args' => [
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_runtime_dir_relative',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'fname'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_rvputs',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => '...',
+ 'name' => 'arg1'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_rwrite',
+ 'args' => [
+ {
+ 'type' => 'const void *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nbyte'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'ap_rxplus_t*',
+ 'name' => 'ap_rxplus_compile',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'pattern'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_rxplus_exec',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'ap_rxplus_t *',
+ 'name' => 'rx'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'pattern'
+ },
+ {
+ 'type' => 'char **',
+ 'name' => 'newpattern'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_rxplus_match',
+ 'args' => [
+ {
+ 'type' => 'ap_rxplus_t *',
+ 'name' => 'rx'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'n'
+ },
+ {
+ 'type' => 'int *',
+ 'name' => 'len'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'match'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char*',
+ 'name' => 'ap_rxplus_pmatch',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'ap_rxplus_t *',
+ 'name' => 'rx'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'n'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_satisfies',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_save_brigade',
+ 'args' => [
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'f'
+ },
+ {
+ 'type' => 'apr_bucket_brigade **',
+ 'name' => 'save_to'
+ },
+ {
+ 'type' => 'apr_bucket_brigade **',
+ 'name' => 'b'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_scan_script_header_err',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'f'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'buffer'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_scan_script_header_err_brigade',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'bb'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'buffer'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_scan_script_header_err_brigade_ex',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'bb'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'buffer'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'module_index'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_scan_script_header_err_core',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'buffer'
+ },
+ {
+ 'type' => 'int (*getsfunc) (char *, int, void *)',
+ 'name' => 'arg2'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'getsfunc_data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_scan_script_header_err_core_ex',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'buffer'
+ },
+ {
+ 'type' => 'int (*getsfunc) (char *, int, void *)',
+ 'name' => 'arg2'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'getsfunc_data'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'module_index'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_scan_script_header_err_ex',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'f'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'buffer'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'module_index'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_scan_script_header_err_strs',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'buffer'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'termch'
+ },
+ {
+ 'type' => 'int *',
+ 'name' => 'termarg'
+ },
+ {
+ 'type' => '...',
+ 'name' => 'arg4'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_scan_script_header_err_strs_ex',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'buffer'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'module_index'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'termch'
+ },
+ {
+ 'type' => 'int *',
+ 'name' => 'termarg'
+ },
+ {
+ 'type' => '...',
+ 'name' => 'arg5'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_send_error_response',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'recursive_error'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_send_fd',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'fd'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'offset'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'length'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'nbytes'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_send_http_options',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_send_http_trace',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_send_interim_response',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'send_headers'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'ap_send_mmap',
+ 'args' => [
+ {
+ 'type' => 'apr_mmap_t *',
+ 'name' => 'mm'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'offset'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'length'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_server_root_relative',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'fname'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_set_accept_ranges',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void *',
+ 'name' => 'ap_set_config_vectors',
+ 'args' => [
+ {
+ 'type' => 'server_rec *',
+ 'name' => 'server'
+ },
+ {
+ 'type' => 'ap_conf_vector_t *',
+ 'name' => 'section_vector'
+ },
+ {
+ 'type' => 'const char *section',
+ 'name' => 'arg2'
+ },
+ {
+ 'type' => 'module *',
+ 'name' => 'mod'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pconf'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_set_content_length',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'length'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_set_content_type',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'ct'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_set_context_info',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'prefix'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'document_root'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_set_core_module_config',
+ 'args' => [
+ {
+ 'type' => 'ap_conf_vector_t *',
+ 'name' => 'cv'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'val'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_set_deprecated',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'cmd'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'struct_ptr'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_set_document_root',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'document_root'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_set_etag',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_set_extended_status',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'cmd'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_set_file_slot',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'cmd'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'struct_ptr'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_set_flag_slot',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'cmd'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'struct_ptr'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_set_flag_slot_char',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'cmd'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'struct_ptr'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_set_int_slot',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'cmd'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'struct_ptr'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_set_keepalive',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_set_last_modified',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_set_listenbacklog',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'cmd'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_set_listener',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'cmd'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'argc'
+ },
+ {
+ 'type' => 'char *const',
+ 'name' => 'argv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_set_module_config',
+ 'args' => [
+ {
+ 'type' => 'ap_conf_vector_t *',
+ 'name' => 'cv'
+ },
+ {
+ 'type' => 'const module *',
+ 'name' => 'm'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'val'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_set_module_loglevel',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'struct ap_logconf *',
+ 'name' => 'l'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'index'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'level'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_set_mutex',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'cmd'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_set_name_virtual_host',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'cmd'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_set_receive_buffer_size',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'cmd'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_set_reqtail',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'cmd'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_set_scoreboard',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'cmd'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_set_send_buffer_size',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'cmd'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_set_server_protocol',
+ 'args' => [
+ {
+ 'type' => 'server_rec*',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'const char*',
+ 'name' => 'proto'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_set_string_slot',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'cmd'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'struct_ptr'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_set_string_slot_lower',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'cmd'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'struct_ptr'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_set_sub_req_protocol',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'rnew'
+ },
+ {
+ 'type' => 'const request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_setup_auth_internal',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'ptemp'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_setup_client_block',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'read_policy'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_setup_listeners',
+ 'args' => [
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_setup_make_content_type',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_setup_prelinked_modules',
+ 'args' => [
+ {
+ 'type' => 'process_rec *',
+ 'name' => 'process'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_should_client_block',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_show_directives',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_show_modules',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_show_mpm',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_signal_server',
+ 'args' => [
+ {
+ 'type' => 'int *',
+ 'name' => 'arg0'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'arg1'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_single_module_configure',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'module *',
+ 'name' => 'm'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_size_list_item',
+ 'args' => [
+ {
+ 'type' => 'const char **',
+ 'name' => 'field'
+ },
+ {
+ 'type' => 'int *',
+ 'name' => 'len'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_soak_end_container',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'cmd'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'directive'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_some_auth_required',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_start_lingering_close',
+ 'args' => [
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_state_query',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'query_code'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_str2_alnum',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'src'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'dest'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_str_tolower',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_str_toupper',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_strcasecmp_match',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'str'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'expected'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_strcasestr',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 's1'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 's2'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_strchr',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'c'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_strchr_c',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'c'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_strcmp_match',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'str'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'expected'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_stripprefix',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'bigstring'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'prefix'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_strrchr',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'c'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_strrchr_c',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'c'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_strstr',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'c'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_strstr_c',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'c'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'request_rec *',
+ 'name' => 'ap_sub_req_lookup_dirent',
+ 'args' => [
+ {
+ 'type' => 'const apr_finfo_t *',
+ 'name' => 'finfo'
+ },
+ {
+ 'type' => 'const request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'subtype'
+ },
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'next_filter'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'request_rec *',
+ 'name' => 'ap_sub_req_lookup_file',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'new_file'
+ },
+ {
+ 'type' => 'const request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'next_filter'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'request_rec *',
+ 'name' => 'ap_sub_req_lookup_uri',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'new_uri'
+ },
+ {
+ 'type' => 'const request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'next_filter'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'request_rec *',
+ 'name' => 'ap_sub_req_method_uri',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'method'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'new_uri'
+ },
+ {
+ 'type' => 'const request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'next_filter'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_sub_req_output_filter',
+ 'args' => [
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'f'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'bb'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_sys_privileges_handlers',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'inc'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_time_process_request',
+ 'args' => [
+ {
+ 'type' => 'ap_sb_handle_t *',
+ 'name' => 'sbh'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'status'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_timeout_parameter_parse',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'timeout_parameter'
+ },
+ {
+ 'type' => 'apr_interval_time_t *',
+ 'name' => 'timeout'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'default_time_unit'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'uid_t',
+ 'name' => 'ap_uname2id',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_unescape_all',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'url'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_unescape_url',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'url'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_unescape_url_keep2f',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'url'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'decode_slashes'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_unescape_urlencoded',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'query'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_unixd_accept',
+ 'args' => [
+ {
+ 'type' => 'void **',
+ 'name' => 'accepted'
+ },
+ {
+ 'type' => 'ap_listen_rec *',
+ 'name' => 'lr'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'ptrans'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_unixd_set_global_mutex_perms',
+ 'args' => [
+ {
+ 'type' => 'apr_global_mutex_t *',
+ 'name' => 'gmutex'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_unixd_set_proc_mutex_perms',
+ 'args' => [
+ {
+ 'type' => 'apr_proc_mutex_t *',
+ 'name' => 'pmutex'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_unixd_set_rlimit',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'cmd'
+ },
+ {
+ 'type' => 'struct rlimit **',
+ 'name' => 'plimit'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg2'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'type'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_unixd_setup_child',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_unregister_extra_mpm_process',
+ 'args' => [
+ {
+ 'type' => 'pid_t',
+ 'name' => 'pid'
+ },
+ {
+ 'type' => 'ap_generation_t *',
+ 'name' => 'old_gen'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_update_child_status',
+ 'args' => [
+ {
+ 'type' => 'ap_sb_handle_t *',
+ 'name' => 'sbh'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'status'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_update_child_status_from_conn',
+ 'args' => [
+ {
+ 'type' => 'ap_sb_handle_t *',
+ 'name' => 'sbh'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'status'
+ },
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_update_child_status_from_indexes',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'child_num'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'thread_num'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'status'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_update_mtime',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'apr_time_t',
+ 'name' => 'dependency_mtime'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_update_vhost_from_headers',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_update_vhost_given_ip',
+ 'args' => [
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'conn'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_varbuf_cfg_getline',
+ 'args' => [
+ {
+ 'type' => 'struct ap_varbuf *',
+ 'name' => 'vb'
+ },
+ {
+ 'type' => 'ap_configfile_t *',
+ 'name' => 'cfp'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'max_len'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_varbuf_free',
+ 'args' => [
+ {
+ 'type' => 'struct ap_varbuf *',
+ 'name' => 'vb'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_varbuf_grow',
+ 'args' => [
+ {
+ 'type' => 'struct ap_varbuf *',
+ 'name' => 'vb'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'new_size'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_varbuf_init',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'struct ap_varbuf *',
+ 'name' => 'vb'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'init_size'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'ap_varbuf_pdup',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'struct ap_varbuf *',
+ 'name' => 'vb'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'prepend'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'prepend_len'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'append'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'append_len'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'new_len'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_varbuf_regsub',
+ 'args' => [
+ {
+ 'type' => 'struct ap_varbuf *',
+ 'name' => 'vb'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'input'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'source'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'nmatch'
+ },
+ {
+ 'type' => 'ap_regmatch_t',
+ 'name' => 'pmatch'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'maxlen'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_varbuf_strmemcat',
+ 'args' => [
+ {
+ 'type' => 'struct ap_varbuf *',
+ 'name' => 'vb'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'str'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'len'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_vhost_iterate_given_conn',
+ 'args' => [
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'conn'
+ },
+ {
+ 'type' => 'ap_vhost_iterate_conn_cb',
+ 'name' => 'func_cb'
+ },
+ {
+ 'type' => 'void*',
+ 'name' => 'baton'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_vrprintf',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'fmt'
+ },
+ {
+ 'type' => 'va_list',
+ 'name' => 'vlist'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'ap_wait_or_timeout',
+ 'args' => [
+ {
+ 'type' => 'apr_exit_why_e *',
+ 'name' => 'status'
+ },
+ {
+ 'type' => 'int *',
+ 'name' => 'exitcode'
+ },
+ {
+ 'type' => 'apr_proc_t *',
+ 'name' => 'ret'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'ap_walk_config',
+ 'args' => [
+ {
+ 'type' => 'ap_directive_t *',
+ 'name' => 'conftree'
+ },
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'ap_conf_vector_t *',
+ 'name' => 'section_vector'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'ap_xml_parse_input',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'apr_xml_doc **',
+ 'name' => 'pdoc'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_memnode_t *',
+ 'name' => 'apr_allocator_alloc',
+ 'args' => [
+ {
+ 'type' => 'apr_allocator_t *',
+ 'name' => 'allocator'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'size'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_allocator_create',
+ 'args' => [
+ {
+ 'type' => 'apr_allocator_t **',
+ 'name' => 'allocator'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_allocator_destroy',
+ 'args' => [
+ {
+ 'type' => 'apr_allocator_t *',
+ 'name' => 'allocator'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_allocator_free',
+ 'args' => [
+ {
+ 'type' => 'apr_allocator_t *',
+ 'name' => 'allocator'
+ },
+ {
+ 'type' => 'apr_memnode_t *',
+ 'name' => 'memnode'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_allocator_max_free_set',
+ 'args' => [
+ {
+ 'type' => 'apr_allocator_t *',
+ 'name' => 'allocator'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'size'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_thread_mutex_t *',
+ 'name' => 'apr_allocator_mutex_get',
+ 'args' => [
+ {
+ 'type' => 'apr_allocator_t *',
+ 'name' => 'allocator'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_allocator_mutex_set',
+ 'args' => [
+ {
+ 'type' => 'apr_allocator_t *',
+ 'name' => 'allocator'
+ },
+ {
+ 'type' => 'apr_thread_mutex_t *',
+ 'name' => 'mutex'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_pool_t *',
+ 'name' => 'apr_allocator_owner_get',
+ 'args' => [
+ {
+ 'type' => 'apr_allocator_t *',
+ 'name' => 'allocator'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_allocator_owner_set',
+ 'args' => [
+ {
+ 'type' => 'apr_allocator_t *',
+ 'name' => 'allocator'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_app_initialize',
+ 'args' => [
+ {
+ 'type' => 'int *',
+ 'name' => 'argc'
+ },
+ {
+ 'type' => 'char const * const * *',
+ 'name' => 'argv'
+ },
+ {
+ 'type' => 'char const * const * *',
+ 'name' => 'env'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'apr_array_append',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const apr_array_header_t *',
+ 'name' => 'first'
+ },
+ {
+ 'type' => 'const apr_array_header_t *',
+ 'name' => 'second'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_array_cat',
+ 'args' => [
+ {
+ 'type' => 'apr_array_header_t *',
+ 'name' => 'dst'
+ },
+ {
+ 'type' => 'const apr_array_header_t *',
+ 'name' => 'src'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_array_clear',
+ 'args' => [
+ {
+ 'type' => 'apr_array_header_t *',
+ 'name' => 'arr'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'apr_array_copy',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const apr_array_header_t *',
+ 'name' => 'arr'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'apr_array_copy_hdr',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const apr_array_header_t *',
+ 'name' => 'arr'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'apr_array_make',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nelts'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'elt_size'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void *',
+ 'name' => 'apr_array_pop',
+ 'args' => [
+ {
+ 'type' => 'apr_array_header_t *',
+ 'name' => 'arr'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'apr_array_pstrcat',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const apr_array_header_t *',
+ 'name' => 'arr'
+ },
+ {
+ 'type' => 'const char',
+ 'name' => 'sep'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void *',
+ 'name' => 'apr_array_push',
+ 'args' => [
+ {
+ 'type' => 'apr_array_header_t *',
+ 'name' => 'arr'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_int64_t',
+ 'name' => 'apr_atoi64',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'buf'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_uint32_t',
+ 'name' => 'apr_atomic_add32',
+ 'args' => [
+ {
+ 'type' => 'volatile apr_uint32_t *',
+ 'name' => 'mem'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'val'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_uint32_t',
+ 'name' => 'apr_atomic_cas32',
+ 'args' => [
+ {
+ 'type' => 'volatile apr_uint32_t *',
+ 'name' => 'mem'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'with'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'cmp'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void*',
+ 'name' => 'apr_atomic_casptr',
+ 'args' => [
+ {
+ 'type' => 'volatile void **',
+ 'name' => 'mem'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'with'
+ },
+ {
+ 'type' => 'const void *',
+ 'name' => 'cmp'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_atomic_dec32',
+ 'args' => [
+ {
+ 'type' => 'volatile apr_uint32_t *',
+ 'name' => 'mem'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_uint32_t',
+ 'name' => 'apr_atomic_inc32',
+ 'args' => [
+ {
+ 'type' => 'volatile apr_uint32_t *',
+ 'name' => 'mem'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_atomic_init',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_uint32_t',
+ 'name' => 'apr_atomic_read32',
+ 'args' => [
+ {
+ 'type' => 'volatile apr_uint32_t *',
+ 'name' => 'mem'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_atomic_set32',
+ 'args' => [
+ {
+ 'type' => 'volatile apr_uint32_t *',
+ 'name' => 'mem'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'val'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_atomic_sub32',
+ 'args' => [
+ {
+ 'type' => 'volatile apr_uint32_t *',
+ 'name' => 'mem'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'val'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_uint32_t',
+ 'name' => 'apr_atomic_xchg32',
+ 'args' => [
+ {
+ 'type' => 'volatile apr_uint32_t *',
+ 'name' => 'mem'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'val'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void*',
+ 'name' => 'apr_atomic_xchgptr',
+ 'args' => [
+ {
+ 'type' => 'volatile void **',
+ 'name' => 'mem'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'with'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_base64_decode',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'plain_dst'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'coded_src'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_base64_decode_binary',
+ 'args' => [
+ {
+ 'type' => 'unsigned char *',
+ 'name' => 'plain_dst'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'coded_src'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_base64_decode_len',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'coded_src'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_base64_encode',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'coded_dst'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'plain_src'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'len_plain_src'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_base64_encode_binary',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'coded_dst'
+ },
+ {
+ 'type' => 'const unsigned char *',
+ 'name' => 'plain_src'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'len_plain_src'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_base64_encode_len',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'len'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_brigade_cleanup',
+ 'args' => [
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket_brigade *',
+ 'name' => 'apr_brigade_create',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_bucket_alloc_t *',
+ 'name' => 'list'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_brigade_destroy',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'b'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_brigade_flatten',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'bb'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'c'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'len'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'apr_brigade_insert_file',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'bb'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'f'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'start'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'len'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_brigade_length',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'bb'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'read_all'
+ },
+ {
+ 'type' => 'apr_off_t *',
+ 'name' => 'length'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_brigade_partition',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'b'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'point'
+ },
+ {
+ 'type' => 'apr_bucket **',
+ 'name' => 'after_point'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_brigade_pflatten',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'bb'
+ },
+ {
+ 'type' => 'char **',
+ 'name' => 'c'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'len'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_brigade_printf',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'b'
+ },
+ {
+ 'type' => 'apr_brigade_flush',
+ 'name' => 'flush'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'ctx'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'fmt'
+ },
+ {
+ 'type' => '...',
+ 'name' => 'arg4'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_brigade_putc',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'b'
+ },
+ {
+ 'type' => 'apr_brigade_flush',
+ 'name' => 'flush'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'ctx'
+ },
+ {
+ 'type' => 'const char',
+ 'name' => 'c'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_brigade_puts',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'bb'
+ },
+ {
+ 'type' => 'apr_brigade_flush',
+ 'name' => 'flush'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'ctx'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'str'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_brigade_putstrs',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'b'
+ },
+ {
+ 'type' => 'apr_brigade_flush',
+ 'name' => 'flush'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'ctx'
+ },
+ {
+ 'type' => '...',
+ 'name' => 'arg3'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket_brigade *',
+ 'name' => 'apr_brigade_split',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'b'
+ },
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'e'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket_brigade *',
+ 'name' => 'apr_brigade_split_ex',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'b'
+ },
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'e'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'a'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_brigade_split_line',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'bbOut'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'bbIn'
+ },
+ {
+ 'type' => 'apr_read_type_e',
+ 'name' => 'block'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'maxbytes'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_brigade_to_iovec',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'b'
+ },
+ {
+ 'type' => 'struct iovec *',
+ 'name' => 'vec'
+ },
+ {
+ 'type' => 'int *',
+ 'name' => 'nvec'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_brigade_vprintf',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'b'
+ },
+ {
+ 'type' => 'apr_brigade_flush',
+ 'name' => 'flush'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'ctx'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'fmt'
+ },
+ {
+ 'type' => 'va_list',
+ 'name' => 'va'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_brigade_vputstrs',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'b'
+ },
+ {
+ 'type' => 'apr_brigade_flush',
+ 'name' => 'flush'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'ctx'
+ },
+ {
+ 'type' => 'va_list',
+ 'name' => 'va'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_brigade_write',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'b'
+ },
+ {
+ 'type' => 'apr_brigade_flush',
+ 'name' => 'flush'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'ctx'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'str'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'nbyte'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_brigade_writev',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'b'
+ },
+ {
+ 'type' => 'apr_brigade_flush',
+ 'name' => 'flush'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'ctx'
+ },
+ {
+ 'type' => 'const struct iovec *',
+ 'name' => 'vec'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'nvec'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void *',
+ 'name' => 'apr_bucket_alloc',
+ 'args' => [
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'size'
+ },
+ {
+ 'type' => 'apr_bucket_alloc_t *',
+ 'name' => 'list'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket_alloc_t *',
+ 'name' => 'apr_bucket_alloc_create',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket_alloc_t *',
+ 'name' => 'apr_bucket_alloc_create_ex',
+ 'args' => [
+ {
+ 'type' => 'apr_allocator_t *',
+ 'name' => 'allocator'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_bucket_alloc_destroy',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_alloc_t *',
+ 'name' => 'list'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_bucket_copy_notimpl',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'e'
+ },
+ {
+ 'type' => 'apr_bucket **',
+ 'name' => 'c'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_bucket_destroy_noop',
+ 'args' => [
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'apr_bucket_eos_create',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_alloc_t *',
+ 'name' => 'list'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'apr_bucket_eos_make',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'b'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'apr_bucket_file_create',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'fd'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'offset'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'len'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_bucket_alloc_t *',
+ 'name' => 'list'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_bucket_file_enable_mmap',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'b'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'enabled'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'apr_bucket_file_make',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'b'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'fd'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'offset'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'len'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'apr_bucket_flush_create',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_alloc_t *',
+ 'name' => 'list'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'apr_bucket_flush_make',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'b'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_bucket_free',
+ 'args' => [
+ {
+ 'type' => 'void *',
+ 'name' => 'block'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'apr_bucket_heap_create',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'nbyte'
+ },
+ {
+ 'type' => 'void (*free_func)(void *data)',
+ 'name' => 'arg2'
+ },
+ {
+ 'type' => 'apr_bucket_alloc_t *',
+ 'name' => 'list'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'apr_bucket_heap_make',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'b'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'nbyte'
+ },
+ {
+ 'type' => 'void (*free_func)(void *data)',
+ 'name' => 'arg3'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'apr_bucket_immortal_create',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'nbyte'
+ },
+ {
+ 'type' => 'apr_bucket_alloc_t *',
+ 'name' => 'list'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'apr_bucket_immortal_make',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'b'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'nbyte'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'apr_bucket_mmap_create',
+ 'args' => [
+ {
+ 'type' => 'apr_mmap_t *',
+ 'name' => 'mm'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'start'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'length'
+ },
+ {
+ 'type' => 'apr_bucket_alloc_t *',
+ 'name' => 'list'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'apr_bucket_mmap_make',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'b'
+ },
+ {
+ 'type' => 'apr_mmap_t *',
+ 'name' => 'mm'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'start'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'length'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'apr_bucket_pipe_create',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'thispipe'
+ },
+ {
+ 'type' => 'apr_bucket_alloc_t *',
+ 'name' => 'list'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'apr_bucket_pipe_make',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'b'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'thispipe'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'apr_bucket_pool_create',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'length'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'apr_bucket_alloc_t *',
+ 'name' => 'list'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'apr_bucket_pool_make',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'b'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'length'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_bucket_setaside_noop',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_bucket_setaside_notimpl',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_bucket_shared_copy',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'a'
+ },
+ {
+ 'type' => 'apr_bucket **',
+ 'name' => 'b'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_bucket_shared_destroy',
+ 'args' => [
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'apr_bucket_shared_make',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'b'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'start'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'length'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_bucket_shared_split',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'b'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'point'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_bucket_simple_copy',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'a'
+ },
+ {
+ 'type' => 'apr_bucket **',
+ 'name' => 'b'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_bucket_simple_split',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'b'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'point'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'apr_bucket_socket_create',
+ 'args' => [
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'thissock'
+ },
+ {
+ 'type' => 'apr_bucket_alloc_t *',
+ 'name' => 'list'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'apr_bucket_socket_make',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'b'
+ },
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'thissock'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_bucket_split_notimpl',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'point'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'apr_bucket_transient_create',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'nbyte'
+ },
+ {
+ 'type' => 'apr_bucket_alloc_t *',
+ 'name' => 'list'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'apr_bucket_transient_make',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'b'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'nbyte'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'apr_collapse_spaces',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'dest'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'src'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'apr_cpystrn',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'dst'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'src'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'dst_size'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_crypto_block_cleanup',
+ 'args' => [
+ {
+ 'type' => 'apr_crypto_block_t *',
+ 'name' => 'ctx'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_crypto_block_decrypt',
+ 'args' => [
+ {
+ 'type' => 'unsigned char **',
+ 'name' => 'out'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'outlen'
+ },
+ {
+ 'type' => 'const unsigned char *',
+ 'name' => 'in'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'inlen'
+ },
+ {
+ 'type' => 'apr_crypto_block_t *',
+ 'name' => 'ctx'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_crypto_block_decrypt_finish',
+ 'args' => [
+ {
+ 'type' => 'unsigned char *',
+ 'name' => 'out'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'outlen'
+ },
+ {
+ 'type' => 'apr_crypto_block_t *',
+ 'name' => 'ctx'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_crypto_block_decrypt_init',
+ 'args' => [
+ {
+ 'type' => 'apr_crypto_block_t **',
+ 'name' => 'ctx'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'blockSize'
+ },
+ {
+ 'type' => 'const unsigned char *',
+ 'name' => 'iv'
+ },
+ {
+ 'type' => 'const apr_crypto_key_t *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_crypto_block_encrypt',
+ 'args' => [
+ {
+ 'type' => 'unsigned char **',
+ 'name' => 'out'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'outlen'
+ },
+ {
+ 'type' => 'const unsigned char *',
+ 'name' => 'in'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'inlen'
+ },
+ {
+ 'type' => 'apr_crypto_block_t *',
+ 'name' => 'ctx'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_crypto_block_encrypt_finish',
+ 'args' => [
+ {
+ 'type' => 'unsigned char *',
+ 'name' => 'out'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'outlen'
+ },
+ {
+ 'type' => 'apr_crypto_block_t *',
+ 'name' => 'ctx'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_crypto_block_encrypt_init',
+ 'args' => [
+ {
+ 'type' => 'apr_crypto_block_t **',
+ 'name' => 'ctx'
+ },
+ {
+ 'type' => 'const unsigned char **',
+ 'name' => 'iv'
+ },
+ {
+ 'type' => 'const apr_crypto_key_t *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'blockSize'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_crypto_cleanup',
+ 'args' => [
+ {
+ 'type' => 'apr_crypto_t *',
+ 'name' => 'f'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_crypto_clear',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'buffer'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'size'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'apr_crypto_driver_name',
+ 'args' => [
+ {
+ 'type' => 'const apr_crypto_driver_t *',
+ 'name' => 'driver'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_crypto_error',
+ 'args' => [
+ {
+ 'type' => 'const apu_err_t **',
+ 'name' => 'result'
+ },
+ {
+ 'type' => 'const apr_crypto_t *',
+ 'name' => 'f'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_crypto_get_block_key_modes',
+ 'args' => [
+ {
+ 'type' => 'apr_hash_t **',
+ 'name' => 'modes'
+ },
+ {
+ 'type' => 'const apr_crypto_t *',
+ 'name' => 'f'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_crypto_get_block_key_types',
+ 'args' => [
+ {
+ 'type' => 'apr_hash_t **',
+ 'name' => 'types'
+ },
+ {
+ 'type' => 'const apr_crypto_t *',
+ 'name' => 'f'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_crypto_get_driver',
+ 'args' => [
+ {
+ 'type' => 'const apr_crypto_driver_t **',
+ 'name' => 'driver'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'params'
+ },
+ {
+ 'type' => 'const apu_err_t **',
+ 'name' => 'result'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_crypto_init',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_crypto_make',
+ 'args' => [
+ {
+ 'type' => 'apr_crypto_t **',
+ 'name' => 'f'
+ },
+ {
+ 'type' => 'const apr_crypto_driver_t *',
+ 'name' => 'driver'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'params'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_crypto_passphrase',
+ 'args' => [
+ {
+ 'type' => 'apr_crypto_key_t **',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'ivSize'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'pass'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'passLen'
+ },
+ {
+ 'type' => 'const unsigned char *',
+ 'name' => 'salt'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'saltLen'
+ },
+ {
+ 'type' => 'const apr_crypto_block_key_type_e',
+ 'name' => 'type'
+ },
+ {
+ 'type' => 'const apr_crypto_block_key_mode_e',
+ 'name' => 'mode'
+ },
+ {
+ 'type' => 'const int',
+ 'name' => 'doPad'
+ },
+ {
+ 'type' => 'const int',
+ 'name' => 'iterations'
+ },
+ {
+ 'type' => 'const apr_crypto_t *',
+ 'name' => 'f'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_crypto_hash_t *',
+ 'name' => 'apr_crypto_sha256_new',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_crypto_shutdown',
+ 'args' => [
+ {
+ 'type' => 'const apr_crypto_driver_t *',
+ 'name' => 'driver'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_ctime',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'date_str'
+ },
+ {
+ 'type' => 'apr_time_t',
+ 'name' => 't'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_date_checkmask',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'mask'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_time_t',
+ 'name' => 'apr_date_parse_http',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'date'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_time_t',
+ 'name' => 'apr_date_parse_rfc',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'date'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_dbd_check_conn',
+ 'args' => [
+ {
+ 'type' => 'const apr_dbd_driver_t *',
+ 'name' => 'driver'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'apr_dbd_t *',
+ 'name' => 'handle'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_dbd_close',
+ 'args' => [
+ {
+ 'type' => 'const apr_dbd_driver_t *',
+ 'name' => 'driver'
+ },
+ {
+ 'type' => 'apr_dbd_t *',
+ 'name' => 'handle'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_dbd_datum_get',
+ 'args' => [
+ {
+ 'type' => 'const apr_dbd_driver_t *',
+ 'name' => 'driver'
+ },
+ {
+ 'type' => 'apr_dbd_row_t *',
+ 'name' => 'row'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'col'
+ },
+ {
+ 'type' => 'apr_dbd_type_e',
+ 'name' => 'type'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char*',
+ 'name' => 'apr_dbd_error',
+ 'args' => [
+ {
+ 'type' => 'const apr_dbd_driver_t *',
+ 'name' => 'driver'
+ },
+ {
+ 'type' => 'apr_dbd_t *',
+ 'name' => 'handle'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'errnum'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char*',
+ 'name' => 'apr_dbd_escape',
+ 'args' => [
+ {
+ 'type' => 'const apr_dbd_driver_t *',
+ 'name' => 'driver'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'string'
+ },
+ {
+ 'type' => 'apr_dbd_t *',
+ 'name' => 'handle'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_dbd_get_driver',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'const apr_dbd_driver_t **',
+ 'name' => 'driver'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char*',
+ 'name' => 'apr_dbd_get_entry',
+ 'args' => [
+ {
+ 'type' => 'const apr_dbd_driver_t *',
+ 'name' => 'driver'
+ },
+ {
+ 'type' => 'apr_dbd_row_t *',
+ 'name' => 'row'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'col'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char*',
+ 'name' => 'apr_dbd_get_name',
+ 'args' => [
+ {
+ 'type' => 'const apr_dbd_driver_t *',
+ 'name' => 'driver'
+ },
+ {
+ 'type' => 'apr_dbd_results_t *',
+ 'name' => 'res'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'col'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_dbd_get_row',
+ 'args' => [
+ {
+ 'type' => 'const apr_dbd_driver_t *',
+ 'name' => 'driver'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'apr_dbd_results_t *',
+ 'name' => 'res'
+ },
+ {
+ 'type' => 'apr_dbd_row_t **',
+ 'name' => 'row'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'rownum'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_dbd_init',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char*',
+ 'name' => 'apr_dbd_name',
+ 'args' => [
+ {
+ 'type' => 'const apr_dbd_driver_t *',
+ 'name' => 'driver'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void*',
+ 'name' => 'apr_dbd_native_handle',
+ 'args' => [
+ {
+ 'type' => 'const apr_dbd_driver_t *',
+ 'name' => 'driver'
+ },
+ {
+ 'type' => 'apr_dbd_t *',
+ 'name' => 'handle'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_dbd_num_cols',
+ 'args' => [
+ {
+ 'type' => 'const apr_dbd_driver_t *',
+ 'name' => 'driver'
+ },
+ {
+ 'type' => 'apr_dbd_results_t *',
+ 'name' => 'res'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_dbd_num_tuples',
+ 'args' => [
+ {
+ 'type' => 'const apr_dbd_driver_t *',
+ 'name' => 'driver'
+ },
+ {
+ 'type' => 'apr_dbd_results_t *',
+ 'name' => 'res'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_dbd_open',
+ 'args' => [
+ {
+ 'type' => 'const apr_dbd_driver_t *',
+ 'name' => 'driver'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'params'
+ },
+ {
+ 'type' => 'apr_dbd_t **',
+ 'name' => 'handle'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_dbd_open_ex',
+ 'args' => [
+ {
+ 'type' => 'const apr_dbd_driver_t *',
+ 'name' => 'driver'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'params'
+ },
+ {
+ 'type' => 'apr_dbd_t **',
+ 'name' => 'handle'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'error'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_dbd_pbquery',
+ 'args' => [
+ {
+ 'type' => 'const apr_dbd_driver_t *',
+ 'name' => 'driver'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'apr_dbd_t *',
+ 'name' => 'handle'
+ },
+ {
+ 'type' => 'int *',
+ 'name' => 'nrows'
+ },
+ {
+ 'type' => 'apr_dbd_prepared_t *',
+ 'name' => 'statement'
+ },
+ {
+ 'type' => 'const void **',
+ 'name' => 'args'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_dbd_pbselect',
+ 'args' => [
+ {
+ 'type' => 'const apr_dbd_driver_t *',
+ 'name' => 'driver'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'apr_dbd_t *',
+ 'name' => 'handle'
+ },
+ {
+ 'type' => 'apr_dbd_results_t **',
+ 'name' => 'res'
+ },
+ {
+ 'type' => 'apr_dbd_prepared_t *',
+ 'name' => 'statement'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'random'
+ },
+ {
+ 'type' => 'const void **',
+ 'name' => 'args'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_dbd_pquery',
+ 'args' => [
+ {
+ 'type' => 'const apr_dbd_driver_t *',
+ 'name' => 'driver'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'apr_dbd_t *',
+ 'name' => 'handle'
+ },
+ {
+ 'type' => 'int *',
+ 'name' => 'nrows'
+ },
+ {
+ 'type' => 'apr_dbd_prepared_t *',
+ 'name' => 'statement'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nargs'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'args'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_dbd_prepare',
+ 'args' => [
+ {
+ 'type' => 'const apr_dbd_driver_t *',
+ 'name' => 'driver'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'apr_dbd_t *',
+ 'name' => 'handle'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'query'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'label'
+ },
+ {
+ 'type' => 'apr_dbd_prepared_t **',
+ 'name' => 'statement'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_dbd_pselect',
+ 'args' => [
+ {
+ 'type' => 'const apr_dbd_driver_t *',
+ 'name' => 'driver'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'apr_dbd_t *',
+ 'name' => 'handle'
+ },
+ {
+ 'type' => 'apr_dbd_results_t **',
+ 'name' => 'res'
+ },
+ {
+ 'type' => 'apr_dbd_prepared_t *',
+ 'name' => 'statement'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'random'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nargs'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'args'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_dbd_pvbquery',
+ 'args' => [
+ {
+ 'type' => 'const apr_dbd_driver_t *',
+ 'name' => 'driver'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'apr_dbd_t *',
+ 'name' => 'handle'
+ },
+ {
+ 'type' => 'int *',
+ 'name' => 'nrows'
+ },
+ {
+ 'type' => 'apr_dbd_prepared_t *',
+ 'name' => 'statement'
+ },
+ {
+ 'type' => '...',
+ 'name' => 'arg5'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_dbd_pvbselect',
+ 'args' => [
+ {
+ 'type' => 'const apr_dbd_driver_t *',
+ 'name' => 'driver'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'apr_dbd_t *',
+ 'name' => 'handle'
+ },
+ {
+ 'type' => 'apr_dbd_results_t **',
+ 'name' => 'res'
+ },
+ {
+ 'type' => 'apr_dbd_prepared_t *',
+ 'name' => 'statement'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'random'
+ },
+ {
+ 'type' => '...',
+ 'name' => 'arg6'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_dbd_pvquery',
+ 'args' => [
+ {
+ 'type' => 'const apr_dbd_driver_t *',
+ 'name' => 'driver'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'apr_dbd_t *',
+ 'name' => 'handle'
+ },
+ {
+ 'type' => 'int *',
+ 'name' => 'nrows'
+ },
+ {
+ 'type' => 'apr_dbd_prepared_t *',
+ 'name' => 'statement'
+ },
+ {
+ 'type' => '...',
+ 'name' => 'arg5'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_dbd_pvselect',
+ 'args' => [
+ {
+ 'type' => 'const apr_dbd_driver_t *',
+ 'name' => 'driver'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'apr_dbd_t *',
+ 'name' => 'handle'
+ },
+ {
+ 'type' => 'apr_dbd_results_t **',
+ 'name' => 'res'
+ },
+ {
+ 'type' => 'apr_dbd_prepared_t *',
+ 'name' => 'statement'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'random'
+ },
+ {
+ 'type' => '...',
+ 'name' => 'arg6'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_dbd_query',
+ 'args' => [
+ {
+ 'type' => 'const apr_dbd_driver_t *',
+ 'name' => 'driver'
+ },
+ {
+ 'type' => 'apr_dbd_t *',
+ 'name' => 'handle'
+ },
+ {
+ 'type' => 'int *',
+ 'name' => 'nrows'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'statement'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_dbd_select',
+ 'args' => [
+ {
+ 'type' => 'const apr_dbd_driver_t *',
+ 'name' => 'driver'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'apr_dbd_t *',
+ 'name' => 'handle'
+ },
+ {
+ 'type' => 'apr_dbd_results_t **',
+ 'name' => 'res'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'statement'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'random'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_dbd_set_dbname',
+ 'args' => [
+ {
+ 'type' => 'const apr_dbd_driver_t *',
+ 'name' => 'driver'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'apr_dbd_t *',
+ 'name' => 'handle'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_dbd_transaction_end',
+ 'args' => [
+ {
+ 'type' => 'const apr_dbd_driver_t *',
+ 'name' => 'driver'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'apr_dbd_transaction_t *',
+ 'name' => 'trans'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_dbd_transaction_mode_get',
+ 'args' => [
+ {
+ 'type' => 'const apr_dbd_driver_t *',
+ 'name' => 'driver'
+ },
+ {
+ 'type' => 'apr_dbd_transaction_t *',
+ 'name' => 'trans'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_dbd_transaction_mode_set',
+ 'args' => [
+ {
+ 'type' => 'const apr_dbd_driver_t *',
+ 'name' => 'driver'
+ },
+ {
+ 'type' => 'apr_dbd_transaction_t *',
+ 'name' => 'trans'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'mode'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_dbd_transaction_start',
+ 'args' => [
+ {
+ 'type' => 'const apr_dbd_driver_t *',
+ 'name' => 'driver'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'apr_dbd_t *',
+ 'name' => 'handle'
+ },
+ {
+ 'type' => 'apr_dbd_transaction_t **',
+ 'name' => 'trans'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_dbm_close',
+ 'args' => [
+ {
+ 'type' => 'apr_dbm_t *',
+ 'name' => 'dbm'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_dbm_delete',
+ 'args' => [
+ {
+ 'type' => 'apr_dbm_t *',
+ 'name' => 'dbm'
+ },
+ {
+ 'type' => 'apr_datum_t',
+ 'name' => 'key'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_dbm_exists',
+ 'args' => [
+ {
+ 'type' => 'apr_dbm_t *',
+ 'name' => 'dbm'
+ },
+ {
+ 'type' => 'apr_datum_t',
+ 'name' => 'key'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_dbm_fetch',
+ 'args' => [
+ {
+ 'type' => 'apr_dbm_t *',
+ 'name' => 'dbm'
+ },
+ {
+ 'type' => 'apr_datum_t',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'apr_datum_t *',
+ 'name' => 'pvalue'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_dbm_firstkey',
+ 'args' => [
+ {
+ 'type' => 'apr_dbm_t *',
+ 'name' => 'dbm'
+ },
+ {
+ 'type' => 'apr_datum_t *',
+ 'name' => 'pkey'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_dbm_freedatum',
+ 'args' => [
+ {
+ 'type' => 'apr_dbm_t *',
+ 'name' => 'dbm'
+ },
+ {
+ 'type' => 'apr_datum_t',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_dbm_get_usednames',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'pathname'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'used1'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'used2'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_dbm_get_usednames_ex',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'type'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'pathname'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'used1'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'used2'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'apr_dbm_geterror',
+ 'args' => [
+ {
+ 'type' => 'apr_dbm_t *',
+ 'name' => 'dbm'
+ },
+ {
+ 'type' => 'int *',
+ 'name' => 'errcode'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'errbuf'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'errbufsize'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_dbm_nextkey',
+ 'args' => [
+ {
+ 'type' => 'apr_dbm_t *',
+ 'name' => 'dbm'
+ },
+ {
+ 'type' => 'apr_datum_t *',
+ 'name' => 'pkey'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_dbm_open',
+ 'args' => [
+ {
+ 'type' => 'apr_dbm_t **',
+ 'name' => 'dbm'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'mode'
+ },
+ {
+ 'type' => 'apr_fileperms_t',
+ 'name' => 'perm'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'cntxt'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_dbm_open_ex',
+ 'args' => [
+ {
+ 'type' => 'apr_dbm_t **',
+ 'name' => 'dbm'
+ },
+ {
+ 'type' => 'const char*',
+ 'name' => 'type'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'mode'
+ },
+ {
+ 'type' => 'apr_fileperms_t',
+ 'name' => 'perm'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'cntxt'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_dbm_store',
+ 'args' => [
+ {
+ 'type' => 'apr_dbm_t *',
+ 'name' => 'dbm'
+ },
+ {
+ 'type' => 'apr_datum_t',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'apr_datum_t',
+ 'name' => 'value'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_dir_close',
+ 'args' => [
+ {
+ 'type' => 'apr_dir_t *',
+ 'name' => 'thedir'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_dir_make',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'path'
+ },
+ {
+ 'type' => 'apr_fileperms_t',
+ 'name' => 'perm'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_dir_make_recursive',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'path'
+ },
+ {
+ 'type' => 'apr_fileperms_t',
+ 'name' => 'perm'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_dir_open',
+ 'args' => [
+ {
+ 'type' => 'apr_dir_t **',
+ 'name' => 'new_dir'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'dirname'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_dir_read',
+ 'args' => [
+ {
+ 'type' => 'apr_finfo_t *',
+ 'name' => 'finfo'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'wanted'
+ },
+ {
+ 'type' => 'apr_dir_t *',
+ 'name' => 'thedir'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_dir_remove',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'path'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_dir_rewind',
+ 'args' => [
+ {
+ 'type' => 'apr_dir_t *',
+ 'name' => 'thedir'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'apr_dso_error',
+ 'args' => [
+ {
+ 'type' => 'apr_dso_handle_t *',
+ 'name' => 'dso'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'bufsize'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_dso_load',
+ 'args' => [
+ {
+ 'type' => 'apr_dso_handle_t **',
+ 'name' => 'res_handle'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'path'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'ctx'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_dso_sym',
+ 'args' => [
+ {
+ 'type' => 'apr_dso_handle_sym_t *',
+ 'name' => 'ressym'
+ },
+ {
+ 'type' => 'apr_dso_handle_t *',
+ 'name' => 'handle'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'symname'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_dso_unload',
+ 'args' => [
+ {
+ 'type' => 'apr_dso_handle_t *',
+ 'name' => 'handle'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_dynamic_fn_register',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'apr_opt_fn_t *',
+ 'name' => 'pfn'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_opt_fn_t *',
+ 'name' => 'apr_dynamic_fn_retrieve',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_env_delete',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'envvar'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_env_get',
+ 'args' => [
+ {
+ 'type' => 'char **',
+ 'name' => 'value'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'envvar'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_env_set',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'envvar'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'value'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_append',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'from_path'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'to_path'
+ },
+ {
+ 'type' => 'apr_fileperms_t',
+ 'name' => 'perms'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_attrs_set',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'fname'
+ },
+ {
+ 'type' => 'apr_fileattrs_t',
+ 'name' => 'attributes'
+ },
+ {
+ 'type' => 'apr_fileattrs_t',
+ 'name' => 'attr_mask'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_buffer_set',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'thefile'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'buffer'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'bufsize'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'apr_file_buffer_size_get',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'thefile'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_close',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'file'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_copy',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'from_path'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'to_path'
+ },
+ {
+ 'type' => 'apr_fileperms_t',
+ 'name' => 'perms'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_data_get',
+ 'args' => [
+ {
+ 'type' => 'void **',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'file'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_data_set',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'file'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'apr_status_t (*cleanup)(void *)',
+ 'name' => 'arg3'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_datasync',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'thefile'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_dup',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t **',
+ 'name' => 'new_file'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'old_file'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_dup2',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'new_file'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'old_file'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_eof',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'fptr'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_int32_t',
+ 'name' => 'apr_file_flags_get',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'f'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_flush',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'thefile'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_getc',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'ch'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'thefile'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_gets',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'str'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'len'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'thefile'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_info_get',
+ 'args' => [
+ {
+ 'type' => 'apr_finfo_t *',
+ 'name' => 'finfo'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'wanted'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'thefile'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_inherit_set',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'thefile'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_inherit_unset',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'thefile'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_link',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'from_path'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'to_path'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_lock',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'thefile'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'type'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_mktemp',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t **',
+ 'name' => 'fp'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'templ'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'flags'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_mtime_set',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'fname'
+ },
+ {
+ 'type' => 'apr_time_t',
+ 'name' => 'mtime'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_name_get',
+ 'args' => [
+ {
+ 'type' => 'const char **',
+ 'name' => 'new_path'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'thefile'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_namedpipe_create',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'filename'
+ },
+ {
+ 'type' => 'apr_fileperms_t',
+ 'name' => 'perm'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_open',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t **',
+ 'name' => 'newf'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'fname'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'flag'
+ },
+ {
+ 'type' => 'apr_fileperms_t',
+ 'name' => 'perm'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_open_flags_stderr',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t **',
+ 'name' => 'thefile'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'flags'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_open_flags_stdin',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t **',
+ 'name' => 'thefile'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'flags'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_open_flags_stdout',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t **',
+ 'name' => 'thefile'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'flags'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_open_stderr',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t **',
+ 'name' => 'thefile'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_open_stdin',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t **',
+ 'name' => 'thefile'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_open_stdout',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t **',
+ 'name' => 'thefile'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_perms_set',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'fname'
+ },
+ {
+ 'type' => 'apr_fileperms_t',
+ 'name' => 'perms'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_pipe_create',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t **',
+ 'name' => 'in'
+ },
+ {
+ 'type' => 'apr_file_t **',
+ 'name' => 'out'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_pipe_create_ex',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t **',
+ 'name' => 'in'
+ },
+ {
+ 'type' => 'apr_file_t **',
+ 'name' => 'out'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'blocking'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_pipe_timeout_get',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'thepipe'
+ },
+ {
+ 'type' => 'apr_interval_time_t *',
+ 'name' => 'timeout'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_pipe_timeout_set',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'thepipe'
+ },
+ {
+ 'type' => 'apr_interval_time_t',
+ 'name' => 'timeout'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_pool_t *',
+ 'name' => 'apr_file_pool_get',
+ 'args' => [
+ {
+ 'type' => 'const apr_file_t *',
+ 'name' => 'thefile'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_file_printf',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'fptr'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'format'
+ },
+ {
+ 'type' => '...',
+ 'name' => 'arg2'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_putc',
+ 'args' => [
+ {
+ 'type' => 'char',
+ 'name' => 'ch'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'thefile'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_puts',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'str'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'thefile'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_read',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'thefile'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'nbytes'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_read_full',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'thefile'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'nbytes'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'bytes_read'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_remove',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'path'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_rename',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'from_path'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'to_path'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_seek',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'thefile'
+ },
+ {
+ 'type' => 'apr_seek_where_t',
+ 'name' => 'where'
+ },
+ {
+ 'type' => 'apr_off_t *',
+ 'name' => 'offset'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_setaside',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t **',
+ 'name' => 'new_file'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'old_file'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_sync',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'thefile'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_trunc',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'fp'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'offset'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_ungetc',
+ 'args' => [
+ {
+ 'type' => 'char',
+ 'name' => 'ch'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'thefile'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_unlock',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'thefile'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_write',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'thefile'
+ },
+ {
+ 'type' => 'const void *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'nbytes'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_write_full',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'thefile'
+ },
+ {
+ 'type' => 'const void *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'nbytes'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'bytes_written'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_writev',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'thefile'
+ },
+ {
+ 'type' => 'const struct iovec *',
+ 'name' => 'vec'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'nvec'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'nbytes'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_file_writev_full',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'thefile'
+ },
+ {
+ 'type' => 'const struct iovec *',
+ 'name' => 'vec'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'nvec'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'nbytes'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_filepath_encoding',
+ 'args' => [
+ {
+ 'type' => 'int *',
+ 'name' => 'style'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_filepath_get',
+ 'args' => [
+ {
+ 'type' => 'char **',
+ 'name' => 'path'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'flags'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_filepath_list_merge',
+ 'args' => [
+ {
+ 'type' => 'char **',
+ 'name' => 'liststr'
+ },
+ {
+ 'type' => 'apr_array_header_t *',
+ 'name' => 'pathelts'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_filepath_list_split',
+ 'args' => [
+ {
+ 'type' => 'apr_array_header_t **',
+ 'name' => 'pathelts'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'liststr'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_filepath_merge',
+ 'args' => [
+ {
+ 'type' => 'char **',
+ 'name' => 'newpath'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'rootpath'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'addpath'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'flags'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'apr_filepath_name_get',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'pathname'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_filepath_root',
+ 'args' => [
+ {
+ 'type' => 'const char **',
+ 'name' => 'rootpath'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'filepath'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'flags'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_filepath_set',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'path'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_fnmatch',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'pattern'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'strings'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'flags'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_fnmatch_test',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'pattern'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_generate_random_bytes',
+ 'args' => [
+ {
+ 'type' => 'unsigned char *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'length'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_gethostname',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'len'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'cont'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_getnameinfo',
+ 'args' => [
+ {
+ 'type' => 'char **',
+ 'name' => 'hostname'
+ },
+ {
+ 'type' => 'apr_sockaddr_t *',
+ 'name' => 'sa'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'flags'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_getopt',
+ 'args' => [
+ {
+ 'type' => 'apr_getopt_t *',
+ 'name' => 'os'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'opts'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'option_ch'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'option_arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_getopt_init',
+ 'args' => [
+ {
+ 'type' => 'apr_getopt_t **',
+ 'name' => 'os'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'cont'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'argc'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'argv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_getopt_long',
+ 'args' => [
+ {
+ 'type' => 'apr_getopt_t *',
+ 'name' => 'os'
+ },
+ {
+ 'type' => 'const apr_getopt_option_t *',
+ 'name' => 'opts'
+ },
+ {
+ 'type' => 'int *',
+ 'name' => 'option_ch'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'option_arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_getservbyname',
+ 'args' => [
+ {
+ 'type' => 'apr_sockaddr_t *',
+ 'name' => 'sockaddr'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'servname'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_gid_get',
+ 'args' => [
+ {
+ 'type' => 'apr_gid_t *',
+ 'name' => 'groupid'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'groupname'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_gid_name_get',
+ 'args' => [
+ {
+ 'type' => 'char **',
+ 'name' => 'groupname'
+ },
+ {
+ 'type' => 'apr_gid_t',
+ 'name' => 'groupid'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_global_mutex_child_init',
+ 'args' => [
+ {
+ 'type' => 'apr_global_mutex_t **',
+ 'name' => 'mutex'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'fname'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_global_mutex_create',
+ 'args' => [
+ {
+ 'type' => 'apr_global_mutex_t **',
+ 'name' => 'mutex'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'fname'
+ },
+ {
+ 'type' => 'apr_lockmech_e',
+ 'name' => 'mech'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_global_mutex_destroy',
+ 'args' => [
+ {
+ 'type' => 'apr_global_mutex_t *',
+ 'name' => 'mutex'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_global_mutex_lock',
+ 'args' => [
+ {
+ 'type' => 'apr_global_mutex_t *',
+ 'name' => 'mutex'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'apr_global_mutex_lockfile',
+ 'args' => [
+ {
+ 'type' => 'apr_global_mutex_t *',
+ 'name' => 'mutex'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'apr_global_mutex_name',
+ 'args' => [
+ {
+ 'type' => 'apr_global_mutex_t *',
+ 'name' => 'mutex'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_pool_t *',
+ 'name' => 'apr_global_mutex_pool_get',
+ 'args' => [
+ {
+ 'type' => 'const apr_global_mutex_t *',
+ 'name' => 'theglobal_mutex'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_global_mutex_trylock',
+ 'args' => [
+ {
+ 'type' => 'apr_global_mutex_t *',
+ 'name' => 'mutex'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_global_mutex_unlock',
+ 'args' => [
+ {
+ 'type' => 'apr_global_mutex_t *',
+ 'name' => 'mutex'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_hash_clear',
+ 'args' => [
+ {
+ 'type' => 'apr_hash_t *',
+ 'name' => 'ht'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_hash_t *',
+ 'name' => 'apr_hash_copy',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'const apr_hash_t *',
+ 'name' => 'h'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'unsigned int',
+ 'name' => 'apr_hash_count',
+ 'args' => [
+ {
+ 'type' => 'apr_hash_t *',
+ 'name' => 'ht'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_hash_do',
+ 'args' => [
+ {
+ 'type' => 'apr_hash_do_callback_fn_t *comp',
+ 'name' => 'arg0'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'rec'
+ },
+ {
+ 'type' => 'const apr_hash_t *',
+ 'name' => 'ht'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_hash_index_t *',
+ 'name' => 'apr_hash_first',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_hash_t *',
+ 'name' => 'ht'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void *',
+ 'name' => 'apr_hash_get',
+ 'args' => [
+ {
+ 'type' => 'apr_hash_t *',
+ 'name' => 'ht'
+ },
+ {
+ 'type' => 'const void *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'apr_ssize_t',
+ 'name' => 'klen'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_hash_t *',
+ 'name' => 'apr_hash_make',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_hash_t *',
+ 'name' => 'apr_hash_make_custom',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'apr_hashfunc_t',
+ 'name' => 'hash_func'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_hash_t *',
+ 'name' => 'apr_hash_merge',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const apr_hash_t *',
+ 'name' => 'h1'
+ },
+ {
+ 'type' => 'const apr_hash_t *',
+ 'name' => 'h2'
+ },
+ {
+ 'type' => 'void * (*merger)(apr_pool_t *p, const void *key, apr_ssize_t klen, const void *h1_val, const void *h2_val, const void *data)',
+ 'name' => 'arg3'
+ },
+ {
+ 'type' => 'const void *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_hash_index_t *',
+ 'name' => 'apr_hash_next',
+ 'args' => [
+ {
+ 'type' => 'apr_hash_index_t *',
+ 'name' => 'hi'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_hash_t *',
+ 'name' => 'apr_hash_overlay',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const apr_hash_t *',
+ 'name' => 'overlay'
+ },
+ {
+ 'type' => 'const apr_hash_t *',
+ 'name' => 'base'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_pool_t *',
+ 'name' => 'apr_hash_pool_get',
+ 'args' => [
+ {
+ 'type' => 'const apr_hash_t *',
+ 'name' => 'thehash'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_hash_set',
+ 'args' => [
+ {
+ 'type' => 'apr_hash_t *',
+ 'name' => 'ht'
+ },
+ {
+ 'type' => 'const void *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'apr_ssize_t',
+ 'name' => 'klen'
+ },
+ {
+ 'type' => 'const void *',
+ 'name' => 'val'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_hash_this',
+ 'args' => [
+ {
+ 'type' => 'apr_hash_index_t *',
+ 'name' => 'hi'
+ },
+ {
+ 'type' => 'const void **',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'apr_ssize_t *',
+ 'name' => 'klen'
+ },
+ {
+ 'type' => 'void **',
+ 'name' => 'val'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'unsigned int',
+ 'name' => 'apr_hashfunc_default',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'apr_ssize_t *',
+ 'name' => 'klen'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_hook_debug_show',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_hook_deregister_all',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_hook_sort_all',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_hook_sort_register',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'szHookName'
+ },
+ {
+ 'type' => 'apr_array_header_t **',
+ 'name' => 'aHooks'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_initialize',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_ipsubnet_create',
+ 'args' => [
+ {
+ 'type' => 'apr_ipsubnet_t **',
+ 'name' => 'ipsub'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'ipstr'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'mask_or_numbits'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_ipsubnet_test',
+ 'args' => [
+ {
+ 'type' => 'apr_ipsubnet_t *',
+ 'name' => 'ipsub'
+ },
+ {
+ 'type' => 'apr_sockaddr_t *',
+ 'name' => 'sa'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_is_empty_array',
+ 'args' => [
+ {
+ 'type' => 'const apr_array_header_t *',
+ 'name' => 'a'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_is_empty_table',
+ 'args' => [
+ {
+ 'type' => 'const apr_table_t *',
+ 'name' => 't'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'apr_itoa',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'n'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_ldap_get_option',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'LDAP *',
+ 'name' => 'ldap'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'option'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'outvalue'
+ },
+ {
+ 'type' => 'apr_ldap_err_t **',
+ 'name' => 'result_err'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_ldap_info',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'apr_ldap_err_t **',
+ 'name' => 'result_err'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_ldap_init',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'LDAP **',
+ 'name' => 'ldap'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'hostname'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'portno'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'secure'
+ },
+ {
+ 'type' => 'apr_ldap_err_t **',
+ 'name' => 'result_err'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_ldap_is_ldap_url',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'url'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_ldap_is_ldapi_url',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'url'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_ldap_is_ldaps_url',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'url'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_ldap_rebind_add',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'LDAP *',
+ 'name' => 'ld'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'bindDN'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'bindPW'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_ldap_rebind_init',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_ldap_rebind_remove',
+ 'args' => [
+ {
+ 'type' => 'LDAP *',
+ 'name' => 'ld'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_ldap_set_option',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'LDAP *',
+ 'name' => 'ldap'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'option'
+ },
+ {
+ 'type' => 'const void *',
+ 'name' => 'invalue'
+ },
+ {
+ 'type' => 'apr_ldap_err_t **',
+ 'name' => 'result_err'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_ldap_ssl_deinit',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_ldap_ssl_init',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'cert_auth_file'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'cert_file_type'
+ },
+ {
+ 'type' => 'apr_ldap_err_t **',
+ 'name' => 'result_err'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_ldap_url_parse',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'url_in'
+ },
+ {
+ 'type' => 'apr_ldap_url_desc_t **',
+ 'name' => 'ludpp'
+ },
+ {
+ 'type' => 'apr_ldap_err_t **',
+ 'name' => 'result_err'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_ldap_url_parse_ext',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'url_in'
+ },
+ {
+ 'type' => 'apr_ldap_url_desc_t **',
+ 'name' => 'ludpp'
+ },
+ {
+ 'type' => 'apr_ldap_err_t **',
+ 'name' => 'result_err'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'apr_ltoa',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'long',
+ 'name' => 'n'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_match_glob',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'pattern'
+ },
+ {
+ 'type' => 'apr_array_header_t **',
+ 'name' => 'result'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_mcast_hops',
+ 'args' => [
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'sock'
+ },
+ {
+ 'type' => 'apr_byte_t',
+ 'name' => 'ttl'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_mcast_interface',
+ 'args' => [
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'sock'
+ },
+ {
+ 'type' => 'apr_sockaddr_t *',
+ 'name' => 'iface'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_mcast_join',
+ 'args' => [
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'sock'
+ },
+ {
+ 'type' => 'apr_sockaddr_t *',
+ 'name' => 'join'
+ },
+ {
+ 'type' => 'apr_sockaddr_t *',
+ 'name' => 'iface'
+ },
+ {
+ 'type' => 'apr_sockaddr_t *',
+ 'name' => 'source'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_mcast_leave',
+ 'args' => [
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'sock'
+ },
+ {
+ 'type' => 'apr_sockaddr_t *',
+ 'name' => 'addr'
+ },
+ {
+ 'type' => 'apr_sockaddr_t *',
+ 'name' => 'iface'
+ },
+ {
+ 'type' => 'apr_sockaddr_t *',
+ 'name' => 'source'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_mcast_loopback',
+ 'args' => [
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'sock'
+ },
+ {
+ 'type' => 'apr_byte_t',
+ 'name' => 'opt'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_md4',
+ 'args' => [
+ {
+ 'type' => 'unsigned char',
+ 'name' => 'digest'
+ },
+ {
+ 'type' => 'const unsigned char *',
+ 'name' => 'input'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'inputLen'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_md4_final',
+ 'args' => [
+ {
+ 'type' => 'unsigned char',
+ 'name' => 'digest'
+ },
+ {
+ 'type' => 'apr_md4_ctx_t *',
+ 'name' => 'context'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_md4_init',
+ 'args' => [
+ {
+ 'type' => 'apr_md4_ctx_t *',
+ 'name' => 'context'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_md4_set_xlate',
+ 'args' => [
+ {
+ 'type' => 'apr_md4_ctx_t *',
+ 'name' => 'context'
+ },
+ {
+ 'type' => 'apr_xlate_t *',
+ 'name' => 'xlate'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_md4_update',
+ 'args' => [
+ {
+ 'type' => 'apr_md4_ctx_t *',
+ 'name' => 'context'
+ },
+ {
+ 'type' => 'const unsigned char *',
+ 'name' => 'input'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'inputLen'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_md5',
+ 'args' => [
+ {
+ 'type' => 'unsigned char',
+ 'name' => 'digest'
+ },
+ {
+ 'type' => 'const void *',
+ 'name' => 'input'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'inputLen'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_md5_encode',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'password'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'salt'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'result'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'nbytes'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_md5_final',
+ 'args' => [
+ {
+ 'type' => 'unsigned char',
+ 'name' => 'digest'
+ },
+ {
+ 'type' => 'apr_md5_ctx_t *',
+ 'name' => 'context'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_md5_init',
+ 'args' => [
+ {
+ 'type' => 'apr_md5_ctx_t *',
+ 'name' => 'context'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_md5_set_xlate',
+ 'args' => [
+ {
+ 'type' => 'apr_md5_ctx_t *',
+ 'name' => 'context'
+ },
+ {
+ 'type' => 'apr_xlate_t *',
+ 'name' => 'xlate'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_md5_update',
+ 'args' => [
+ {
+ 'type' => 'apr_md5_ctx_t *',
+ 'name' => 'context'
+ },
+ {
+ 'type' => 'const void *',
+ 'name' => 'input'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'inputLen'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_memcache_add',
+ 'args' => [
+ {
+ 'type' => 'apr_memcache_t *',
+ 'name' => 'mc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'baton'
+ },
+ {
+ 'type' => 'const apr_size_t',
+ 'name' => 'data_size'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'timeout'
+ },
+ {
+ 'type' => 'apr_uint16_t',
+ 'name' => 'flags'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_memcache_add_multget_key',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'data_pool'
+ },
+ {
+ 'type' => 'const char*',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'apr_hash_t **',
+ 'name' => 'values'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_memcache_add_server',
+ 'args' => [
+ {
+ 'type' => 'apr_memcache_t *',
+ 'name' => 'mc'
+ },
+ {
+ 'type' => 'apr_memcache_server_t *',
+ 'name' => 'server'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_memcache_create',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_uint16_t',
+ 'name' => 'max_servers'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'flags'
+ },
+ {
+ 'type' => 'apr_memcache_t **',
+ 'name' => 'mc'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_memcache_decr',
+ 'args' => [
+ {
+ 'type' => 'apr_memcache_t *',
+ 'name' => 'mc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'n'
+ },
+ {
+ 'type' => 'apr_uint32_t *',
+ 'name' => 'new_value'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_memcache_delete',
+ 'args' => [
+ {
+ 'type' => 'apr_memcache_t *',
+ 'name' => 'mc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'timeout'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_memcache_disable_server',
+ 'args' => [
+ {
+ 'type' => 'apr_memcache_t *',
+ 'name' => 'mc'
+ },
+ {
+ 'type' => 'apr_memcache_server_t *',
+ 'name' => 'ms'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_memcache_enable_server',
+ 'args' => [
+ {
+ 'type' => 'apr_memcache_t *',
+ 'name' => 'mc'
+ },
+ {
+ 'type' => 'apr_memcache_server_t *',
+ 'name' => 'ms'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_memcache_server_t *',
+ 'name' => 'apr_memcache_find_server',
+ 'args' => [
+ {
+ 'type' => 'apr_memcache_t *',
+ 'name' => 'mc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'host'
+ },
+ {
+ 'type' => 'apr_port_t',
+ 'name' => 'port'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_memcache_server_t *',
+ 'name' => 'apr_memcache_find_server_hash',
+ 'args' => [
+ {
+ 'type' => 'apr_memcache_t *',
+ 'name' => 'mc'
+ },
+ {
+ 'type' => 'const apr_uint32_t',
+ 'name' => 'hash'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_memcache_server_t *',
+ 'name' => 'apr_memcache_find_server_hash_default',
+ 'args' => [
+ {
+ 'type' => 'void *',
+ 'name' => 'baton'
+ },
+ {
+ 'type' => 'apr_memcache_t *',
+ 'name' => 'mc'
+ },
+ {
+ 'type' => 'const apr_uint32_t',
+ 'name' => 'hash'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_memcache_getp',
+ 'args' => [
+ {
+ 'type' => 'apr_memcache_t *',
+ 'name' => 'mc'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char*',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'char **',
+ 'name' => 'baton'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'len'
+ },
+ {
+ 'type' => 'apr_uint16_t *',
+ 'name' => 'flags'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_uint32_t',
+ 'name' => 'apr_memcache_hash',
+ 'args' => [
+ {
+ 'type' => 'apr_memcache_t *',
+ 'name' => 'mc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'const apr_size_t',
+ 'name' => 'data_len'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_uint32_t',
+ 'name' => 'apr_memcache_hash_crc32',
+ 'args' => [
+ {
+ 'type' => 'void *',
+ 'name' => 'baton'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'const apr_size_t',
+ 'name' => 'data_len'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_uint32_t',
+ 'name' => 'apr_memcache_hash_default',
+ 'args' => [
+ {
+ 'type' => 'void *',
+ 'name' => 'baton'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'const apr_size_t',
+ 'name' => 'data_len'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_memcache_incr',
+ 'args' => [
+ {
+ 'type' => 'apr_memcache_t *',
+ 'name' => 'mc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'n'
+ },
+ {
+ 'type' => 'apr_uint32_t *',
+ 'name' => 'nv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_memcache_multgetp',
+ 'args' => [
+ {
+ 'type' => 'apr_memcache_t *',
+ 'name' => 'mc'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'temp_pool'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'data_pool'
+ },
+ {
+ 'type' => 'apr_hash_t *',
+ 'name' => 'values'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_memcache_replace',
+ 'args' => [
+ {
+ 'type' => 'apr_memcache_t *',
+ 'name' => 'mc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'baton'
+ },
+ {
+ 'type' => 'const apr_size_t',
+ 'name' => 'data_size'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'timeout'
+ },
+ {
+ 'type' => 'apr_uint16_t',
+ 'name' => 'flags'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_memcache_server_create',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'host'
+ },
+ {
+ 'type' => 'apr_port_t',
+ 'name' => 'port'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'min'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'smax'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'max'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'ttl'
+ },
+ {
+ 'type' => 'apr_memcache_server_t **',
+ 'name' => 'ns'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_memcache_set',
+ 'args' => [
+ {
+ 'type' => 'apr_memcache_t *',
+ 'name' => 'mc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'baton'
+ },
+ {
+ 'type' => 'const apr_size_t',
+ 'name' => 'data_size'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'timeout'
+ },
+ {
+ 'type' => 'apr_uint16_t',
+ 'name' => 'flags'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_memcache_stats',
+ 'args' => [
+ {
+ 'type' => 'apr_memcache_server_t *',
+ 'name' => 'ms'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_memcache_stats_t **',
+ 'name' => 'stats'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_memcache_version',
+ 'args' => [
+ {
+ 'type' => 'apr_memcache_server_t *',
+ 'name' => 'ms'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'char **',
+ 'name' => 'baton'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_mmap_create',
+ 'args' => [
+ {
+ 'type' => 'apr_mmap_t **',
+ 'name' => 'newmmap'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'file'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'offset'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'size'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'flag'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'cntxt'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_mmap_delete',
+ 'args' => [
+ {
+ 'type' => 'apr_mmap_t *',
+ 'name' => 'mm'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_mmap_dup',
+ 'args' => [
+ {
+ 'type' => 'apr_mmap_t **',
+ 'name' => 'new_mmap'
+ },
+ {
+ 'type' => 'apr_mmap_t *',
+ 'name' => 'old_mmap'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_mmap_offset',
+ 'args' => [
+ {
+ 'type' => 'void **',
+ 'name' => 'addr'
+ },
+ {
+ 'type' => 'apr_mmap_t *',
+ 'name' => 'mm'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'offset'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'apr_off_t_toa',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'n'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_optional_hook_add',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'void (*pfn)(void)',
+ 'name' => 'arg1'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPre'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSucc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'apr_optional_hook_get',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char*',
+ 'name' => 'apr_os_default_encoding',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_os_dir_get',
+ 'args' => [
+ {
+ 'type' => 'apr_os_dir_t **',
+ 'name' => 'thedir'
+ },
+ {
+ 'type' => 'apr_dir_t *',
+ 'name' => 'dir'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_os_dir_put',
+ 'args' => [
+ {
+ 'type' => 'apr_dir_t **',
+ 'name' => 'dir'
+ },
+ {
+ 'type' => 'apr_os_dir_t *',
+ 'name' => 'thedir'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'cont'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_os_dso_handle_get',
+ 'args' => [
+ {
+ 'type' => 'apr_os_dso_handle_t *',
+ 'name' => 'dso'
+ },
+ {
+ 'type' => 'apr_dso_handle_t *',
+ 'name' => 'aprdso'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_os_dso_handle_put',
+ 'args' => [
+ {
+ 'type' => 'apr_dso_handle_t **',
+ 'name' => 'dso'
+ },
+ {
+ 'type' => 'apr_os_dso_handle_t',
+ 'name' => 'thedso'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_os_exp_time_get',
+ 'args' => [
+ {
+ 'type' => 'apr_os_exp_time_t **',
+ 'name' => 'ostime'
+ },
+ {
+ 'type' => 'apr_time_exp_t *',
+ 'name' => 'aprtime'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_os_exp_time_put',
+ 'args' => [
+ {
+ 'type' => 'apr_time_exp_t *',
+ 'name' => 'aprtime'
+ },
+ {
+ 'type' => 'apr_os_exp_time_t **',
+ 'name' => 'ostime'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'cont'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_os_file_get',
+ 'args' => [
+ {
+ 'type' => 'apr_os_file_t *',
+ 'name' => 'thefile'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'file'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_os_file_put',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t **',
+ 'name' => 'file'
+ },
+ {
+ 'type' => 'apr_os_file_t *',
+ 'name' => 'thefile'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'flags'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'cont'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_os_global_mutex_get',
+ 'args' => [
+ {
+ 'type' => 'apr_os_global_mutex_t *',
+ 'name' => 'ospmutex'
+ },
+ {
+ 'type' => 'apr_global_mutex_t *',
+ 'name' => 'pmutex'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_os_imp_time_get',
+ 'args' => [
+ {
+ 'type' => 'apr_os_imp_time_t **',
+ 'name' => 'ostime'
+ },
+ {
+ 'type' => 'apr_time_t *',
+ 'name' => 'aprtime'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_os_imp_time_put',
+ 'args' => [
+ {
+ 'type' => 'apr_time_t *',
+ 'name' => 'aprtime'
+ },
+ {
+ 'type' => 'apr_os_imp_time_t **',
+ 'name' => 'ostime'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'cont'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char*',
+ 'name' => 'apr_os_locale_encoding',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_os_pipe_put',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t **',
+ 'name' => 'file'
+ },
+ {
+ 'type' => 'apr_os_file_t *',
+ 'name' => 'thefile'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'cont'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_os_pipe_put_ex',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t **',
+ 'name' => 'file'
+ },
+ {
+ 'type' => 'apr_os_file_t *',
+ 'name' => 'thefile'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'register_cleanup'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'cont'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_os_proc_mutex_get',
+ 'args' => [
+ {
+ 'type' => 'apr_os_proc_mutex_t *',
+ 'name' => 'ospmutex'
+ },
+ {
+ 'type' => 'apr_proc_mutex_t *',
+ 'name' => 'pmutex'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_os_proc_mutex_put',
+ 'args' => [
+ {
+ 'type' => 'apr_proc_mutex_t **',
+ 'name' => 'pmutex'
+ },
+ {
+ 'type' => 'apr_os_proc_mutex_t *',
+ 'name' => 'ospmutex'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'cont'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_os_shm_get',
+ 'args' => [
+ {
+ 'type' => 'apr_os_shm_t *',
+ 'name' => 'osshm'
+ },
+ {
+ 'type' => 'apr_shm_t *',
+ 'name' => 'shm'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_os_shm_put',
+ 'args' => [
+ {
+ 'type' => 'apr_shm_t **',
+ 'name' => 'shm'
+ },
+ {
+ 'type' => 'apr_os_shm_t *',
+ 'name' => 'osshm'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'cont'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_os_sock_get',
+ 'args' => [
+ {
+ 'type' => 'apr_os_sock_t *',
+ 'name' => 'thesock'
+ },
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'sock'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_os_sock_make',
+ 'args' => [
+ {
+ 'type' => 'apr_socket_t **',
+ 'name' => 'apr_sock'
+ },
+ {
+ 'type' => 'apr_os_sock_info_t *',
+ 'name' => 'os_sock_info'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'cont'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_os_sock_put',
+ 'args' => [
+ {
+ 'type' => 'apr_socket_t **',
+ 'name' => 'sock'
+ },
+ {
+ 'type' => 'apr_os_sock_t *',
+ 'name' => 'thesock'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'cont'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_os_thread_t',
+ 'name' => 'apr_os_thread_current',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_os_thread_equal',
+ 'args' => [
+ {
+ 'type' => 'apr_os_thread_t',
+ 'name' => 'tid1'
+ },
+ {
+ 'type' => 'apr_os_thread_t',
+ 'name' => 'tid2'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_os_thread_get',
+ 'args' => [
+ {
+ 'type' => 'apr_os_thread_t **',
+ 'name' => 'thethd'
+ },
+ {
+ 'type' => 'apr_thread_t *',
+ 'name' => 'thd'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_os_thread_put',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_t **',
+ 'name' => 'thd'
+ },
+ {
+ 'type' => 'apr_os_thread_t *',
+ 'name' => 'thethd'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'cont'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_os_threadkey_get',
+ 'args' => [
+ {
+ 'type' => 'apr_os_threadkey_t *',
+ 'name' => 'thekey'
+ },
+ {
+ 'type' => 'apr_threadkey_t *',
+ 'name' => 'key'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_os_threadkey_put',
+ 'args' => [
+ {
+ 'type' => 'apr_threadkey_t **',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'apr_os_threadkey_t *',
+ 'name' => 'thekey'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'cont'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_os_uuid_get',
+ 'args' => [
+ {
+ 'type' => 'unsigned char *',
+ 'name' => 'uuid_data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void *',
+ 'name' => 'apr_palloc',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'size'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void *',
+ 'name' => 'apr_palloc_debug',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'size'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'file_line'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_parse_addr_port',
+ 'args' => [
+ {
+ 'type' => 'char **',
+ 'name' => 'addr'
+ },
+ {
+ 'type' => 'char **',
+ 'name' => 'scope_id'
+ },
+ {
+ 'type' => 'apr_port_t *',
+ 'name' => 'port'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'str'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_password_get',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'prompt'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'pwbuf'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'bufsize'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_password_validate',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'passwd'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'hash'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void *',
+ 'name' => 'apr_pcalloc_debug',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'size'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'file_line'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void *',
+ 'name' => 'apr_pmemdup',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const void *',
+ 'name' => 'm'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'n'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_poll',
+ 'args' => [
+ {
+ 'type' => 'apr_pollfd_t *',
+ 'name' => 'aprset'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'numsock'
+ },
+ {
+ 'type' => 'apr_int32_t *',
+ 'name' => 'nsds'
+ },
+ {
+ 'type' => 'apr_interval_time_t',
+ 'name' => 'timeout'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'apr_poll_method_defname',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_pollcb_add',
+ 'args' => [
+ {
+ 'type' => 'apr_pollcb_t *',
+ 'name' => 'pollcb'
+ },
+ {
+ 'type' => 'apr_pollfd_t *',
+ 'name' => 'descriptor'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_pollcb_create',
+ 'args' => [
+ {
+ 'type' => 'apr_pollcb_t **',
+ 'name' => 'pollcb'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'size'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'flags'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_pollcb_create_ex',
+ 'args' => [
+ {
+ 'type' => 'apr_pollcb_t **',
+ 'name' => 'pollcb'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'size'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'flags'
+ },
+ {
+ 'type' => 'apr_pollset_method_e',
+ 'name' => 'method'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_pollcb_poll',
+ 'args' => [
+ {
+ 'type' => 'apr_pollcb_t *',
+ 'name' => 'pollcb'
+ },
+ {
+ 'type' => 'apr_interval_time_t',
+ 'name' => 'timeout'
+ },
+ {
+ 'type' => 'apr_pollcb_cb_t',
+ 'name' => 'func'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'baton'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_pollcb_remove',
+ 'args' => [
+ {
+ 'type' => 'apr_pollcb_t *',
+ 'name' => 'pollcb'
+ },
+ {
+ 'type' => 'apr_pollfd_t *',
+ 'name' => 'descriptor'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_pollset_add',
+ 'args' => [
+ {
+ 'type' => 'apr_pollset_t *',
+ 'name' => 'pollset'
+ },
+ {
+ 'type' => 'const apr_pollfd_t *',
+ 'name' => 'descriptor'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_pollset_create',
+ 'args' => [
+ {
+ 'type' => 'apr_pollset_t **',
+ 'name' => 'pollset'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'size'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'flags'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_pollset_create_ex',
+ 'args' => [
+ {
+ 'type' => 'apr_pollset_t **',
+ 'name' => 'pollset'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'size'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'flags'
+ },
+ {
+ 'type' => 'apr_pollset_method_e',
+ 'name' => 'method'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_pollset_destroy',
+ 'args' => [
+ {
+ 'type' => 'apr_pollset_t *',
+ 'name' => 'pollset'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'apr_pollset_method_name',
+ 'args' => [
+ {
+ 'type' => 'apr_pollset_t *',
+ 'name' => 'pollset'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_pollset_poll',
+ 'args' => [
+ {
+ 'type' => 'apr_pollset_t *',
+ 'name' => 'pollset'
+ },
+ {
+ 'type' => 'apr_interval_time_t',
+ 'name' => 'timeout'
+ },
+ {
+ 'type' => 'apr_int32_t *',
+ 'name' => 'num'
+ },
+ {
+ 'type' => 'const apr_pollfd_t **',
+ 'name' => 'descriptors'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_pollset_remove',
+ 'args' => [
+ {
+ 'type' => 'apr_pollset_t *',
+ 'name' => 'pollset'
+ },
+ {
+ 'type' => 'const apr_pollfd_t *',
+ 'name' => 'descriptor'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_pollset_wakeup',
+ 'args' => [
+ {
+ 'type' => 'apr_pollset_t *',
+ 'name' => 'pollset'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_abortfunc_t',
+ 'name' => 'apr_pool_abort_get',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_pool_abort_set',
+ 'args' => [
+ {
+ 'type' => 'apr_abortfunc_t',
+ 'name' => 'abortfunc'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_allocator_t *',
+ 'name' => 'apr_pool_allocator_get',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_pool_child_cleanup_set',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const void *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'apr_status_t (*plain_cleanup)(void *)',
+ 'name' => 'arg2'
+ },
+ {
+ 'type' => 'apr_status_t (*child_cleanup)(void *)',
+ 'name' => 'arg3'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_pool_cleanup_for_exec',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_pool_cleanup_kill',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const void *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'apr_status_t (*cleanup)(void *)',
+ 'name' => 'arg2'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_pool_cleanup_null',
+ 'args' => [
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_pool_cleanup_register',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const void *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'apr_status_t (*plain_cleanup)(void *)',
+ 'name' => 'arg2'
+ },
+ {
+ 'type' => 'apr_status_t (*child_cleanup)(void *)',
+ 'name' => 'arg3'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_pool_cleanup_run',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'apr_status_t (*cleanup)(void *)',
+ 'name' => 'arg2'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_pool_clear',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_pool_clear_debug',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'file_line'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_pool_create_core_ex',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t **',
+ 'name' => 'newpool'
+ },
+ {
+ 'type' => 'apr_abortfunc_t',
+ 'name' => 'abort_fn'
+ },
+ {
+ 'type' => 'apr_allocator_t *',
+ 'name' => 'allocator'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_pool_create_core_ex_debug',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t **',
+ 'name' => 'newpool'
+ },
+ {
+ 'type' => 'apr_abortfunc_t',
+ 'name' => 'abort_fn'
+ },
+ {
+ 'type' => 'apr_allocator_t *',
+ 'name' => 'allocator'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'file_line'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_pool_create_ex',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t **',
+ 'name' => 'newpool'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'parent'
+ },
+ {
+ 'type' => 'apr_abortfunc_t',
+ 'name' => 'abort_fn'
+ },
+ {
+ 'type' => 'apr_allocator_t *',
+ 'name' => 'allocator'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_pool_create_ex_debug',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t **',
+ 'name' => 'newpool'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'parent'
+ },
+ {
+ 'type' => 'apr_abortfunc_t',
+ 'name' => 'abort_fn'
+ },
+ {
+ 'type' => 'apr_allocator_t *',
+ 'name' => 'allocator'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'file_line'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_pool_create_unmanaged_ex',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t **',
+ 'name' => 'newpool'
+ },
+ {
+ 'type' => 'apr_abortfunc_t',
+ 'name' => 'abort_fn'
+ },
+ {
+ 'type' => 'apr_allocator_t *',
+ 'name' => 'allocator'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_pool_create_unmanaged_ex_debug',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t **',
+ 'name' => 'newpool'
+ },
+ {
+ 'type' => 'apr_abortfunc_t',
+ 'name' => 'abort_fn'
+ },
+ {
+ 'type' => 'apr_allocator_t *',
+ 'name' => 'allocator'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'file_line'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_pool_destroy',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_pool_destroy_debug',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'file_line'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_pool_initialize',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_pool_is_ancestor',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'a'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'b'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_pool_note_subprocess',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'a'
+ },
+ {
+ 'type' => 'apr_proc_t *',
+ 'name' => 'proc'
+ },
+ {
+ 'type' => 'apr_kill_conditions_e',
+ 'name' => 'how'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_pool_t *',
+ 'name' => 'apr_pool_parent_get',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_pool_pre_cleanup_register',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const void *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'apr_status_t (*plain_cleanup)(void *)',
+ 'name' => 'arg2'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_pool_tag',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'tag'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_pool_terminate',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_pool_userdata_get',
+ 'args' => [
+ {
+ 'type' => 'void **',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_pool_userdata_set',
+ 'args' => [
+ {
+ 'type' => 'const void *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'apr_status_t (*cleanup)(void *)',
+ 'name' => 'arg2'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_pool_userdata_setn',
+ 'args' => [
+ {
+ 'type' => 'const void *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'apr_status_t (*cleanup)(void *)',
+ 'name' => 'arg2'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_proc_create',
+ 'args' => [
+ {
+ 'type' => 'apr_proc_t *',
+ 'name' => 'new_proc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'progname'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'args'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'env'
+ },
+ {
+ 'type' => 'apr_procattr_t *',
+ 'name' => 'attr'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_proc_detach',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'daemonize'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_proc_fork',
+ 'args' => [
+ {
+ 'type' => 'apr_proc_t *',
+ 'name' => 'proc'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'cont'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_proc_kill',
+ 'args' => [
+ {
+ 'type' => 'apr_proc_t *',
+ 'name' => 'proc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'sig'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_proc_mutex_child_init',
+ 'args' => [
+ {
+ 'type' => 'apr_proc_mutex_t **',
+ 'name' => 'mutex'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'fname'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_proc_mutex_cleanup',
+ 'args' => [
+ {
+ 'type' => 'void *',
+ 'name' => 'mutex'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_proc_mutex_create',
+ 'args' => [
+ {
+ 'type' => 'apr_proc_mutex_t **',
+ 'name' => 'mutex'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'fname'
+ },
+ {
+ 'type' => 'apr_lockmech_e',
+ 'name' => 'mech'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'apr_proc_mutex_defname',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_proc_mutex_destroy',
+ 'args' => [
+ {
+ 'type' => 'apr_proc_mutex_t *',
+ 'name' => 'mutex'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_proc_mutex_lock',
+ 'args' => [
+ {
+ 'type' => 'apr_proc_mutex_t *',
+ 'name' => 'mutex'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'apr_proc_mutex_lockfile',
+ 'args' => [
+ {
+ 'type' => 'apr_proc_mutex_t *',
+ 'name' => 'mutex'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'apr_proc_mutex_name',
+ 'args' => [
+ {
+ 'type' => 'apr_proc_mutex_t *',
+ 'name' => 'mutex'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_pool_t *',
+ 'name' => 'apr_proc_mutex_pool_get',
+ 'args' => [
+ {
+ 'type' => 'const apr_proc_mutex_t *',
+ 'name' => 'theproc_mutex'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_proc_mutex_trylock',
+ 'args' => [
+ {
+ 'type' => 'apr_proc_mutex_t *',
+ 'name' => 'mutex'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_proc_mutex_unlock',
+ 'args' => [
+ {
+ 'type' => 'apr_proc_mutex_t *',
+ 'name' => 'mutex'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_proc_other_child_alert',
+ 'args' => [
+ {
+ 'type' => 'apr_proc_t *',
+ 'name' => 'proc'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'reason'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'status'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_proc_other_child_refresh',
+ 'args' => [
+ {
+ 'type' => 'apr_other_child_rec_t *',
+ 'name' => 'ocr'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'reason'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_proc_other_child_refresh_all',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'reason'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_proc_other_child_register',
+ 'args' => [
+ {
+ 'type' => 'apr_proc_t *',
+ 'name' => 'proc'
+ },
+ {
+ 'type' => 'void (*maintenance) (int reason, void *, int status)',
+ 'name' => 'arg1'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'write_fd'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_proc_other_child_unregister',
+ 'args' => [
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_proc_wait',
+ 'args' => [
+ {
+ 'type' => 'apr_proc_t *',
+ 'name' => 'proc'
+ },
+ {
+ 'type' => 'int *',
+ 'name' => 'exitcode'
+ },
+ {
+ 'type' => 'apr_exit_why_e *',
+ 'name' => 'exitwhy'
+ },
+ {
+ 'type' => 'apr_wait_how_e',
+ 'name' => 'waithow'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_proc_wait_all_procs',
+ 'args' => [
+ {
+ 'type' => 'apr_proc_t *',
+ 'name' => 'proc'
+ },
+ {
+ 'type' => 'int *',
+ 'name' => 'exitcode'
+ },
+ {
+ 'type' => 'apr_exit_why_e *',
+ 'name' => 'exitwhy'
+ },
+ {
+ 'type' => 'apr_wait_how_e',
+ 'name' => 'waithow'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_procattr_addrspace_set',
+ 'args' => [
+ {
+ 'type' => 'apr_procattr_t *',
+ 'name' => 'attr'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'addrspace'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_procattr_child_err_set',
+ 'args' => [
+ {
+ 'type' => 'struct apr_procattr_t *',
+ 'name' => 'attr'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'child_err'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'parent_err'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_procattr_child_errfn_set',
+ 'args' => [
+ {
+ 'type' => 'apr_procattr_t *',
+ 'name' => 'attr'
+ },
+ {
+ 'type' => 'apr_child_errfn_t *',
+ 'name' => 'errfn'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_procattr_child_in_set',
+ 'args' => [
+ {
+ 'type' => 'struct apr_procattr_t *',
+ 'name' => 'attr'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'child_in'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'parent_in'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_procattr_child_out_set',
+ 'args' => [
+ {
+ 'type' => 'struct apr_procattr_t *',
+ 'name' => 'attr'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'child_out'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'parent_out'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_procattr_cmdtype_set',
+ 'args' => [
+ {
+ 'type' => 'apr_procattr_t *',
+ 'name' => 'attr'
+ },
+ {
+ 'type' => 'apr_cmdtype_e',
+ 'name' => 'cmd'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_procattr_create',
+ 'args' => [
+ {
+ 'type' => 'apr_procattr_t **',
+ 'name' => 'new_attr'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'cont'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_procattr_detach_set',
+ 'args' => [
+ {
+ 'type' => 'apr_procattr_t *',
+ 'name' => 'attr'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'detach'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_procattr_dir_set',
+ 'args' => [
+ {
+ 'type' => 'apr_procattr_t *',
+ 'name' => 'attr'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'dir'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_procattr_error_check_set',
+ 'args' => [
+ {
+ 'type' => 'apr_procattr_t *',
+ 'name' => 'attr'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'chk'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_procattr_group_set',
+ 'args' => [
+ {
+ 'type' => 'apr_procattr_t *',
+ 'name' => 'attr'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'groupname'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_procattr_io_set',
+ 'args' => [
+ {
+ 'type' => 'apr_procattr_t *',
+ 'name' => 'attr'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'in'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'out'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'err'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_procattr_limit_set',
+ 'args' => [
+ {
+ 'type' => 'apr_procattr_t *',
+ 'name' => 'attr'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'what'
+ },
+ {
+ 'type' => 'struct rlimit *',
+ 'name' => 'limit'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_procattr_user_set',
+ 'args' => [
+ {
+ 'type' => 'apr_procattr_t *',
+ 'name' => 'attr'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'username'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'password'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'apr_psprintf',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'fmt'
+ },
+ {
+ 'type' => '...',
+ 'name' => 'arg2'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'apr_pstrcat',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => '...',
+ 'name' => 'arg1'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'apr_pstrcatv',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const struct iovec *',
+ 'name' => 'vec'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'nvec'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'nbytes'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'apr_pstrdup',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'apr_pstrmemdup',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'n'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'apr_pstrndup',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'n'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'apr_pvsprintf',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'fmt'
+ },
+ {
+ 'type' => 'va_list',
+ 'name' => 'ap'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_queue_create',
+ 'args' => [
+ {
+ 'type' => 'apr_queue_t **',
+ 'name' => 'queue'
+ },
+ {
+ 'type' => 'unsigned int',
+ 'name' => 'queue_capacity'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'a'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_queue_interrupt_all',
+ 'args' => [
+ {
+ 'type' => 'apr_queue_t *',
+ 'name' => 'queue'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_queue_pop',
+ 'args' => [
+ {
+ 'type' => 'apr_queue_t *',
+ 'name' => 'queue'
+ },
+ {
+ 'type' => 'void **',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_queue_push',
+ 'args' => [
+ {
+ 'type' => 'apr_queue_t *',
+ 'name' => 'queue'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'unsigned int',
+ 'name' => 'apr_queue_size',
+ 'args' => [
+ {
+ 'type' => 'apr_queue_t *',
+ 'name' => 'queue'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_queue_term',
+ 'args' => [
+ {
+ 'type' => 'apr_queue_t *',
+ 'name' => 'queue'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_queue_trypop',
+ 'args' => [
+ {
+ 'type' => 'apr_queue_t *',
+ 'name' => 'queue'
+ },
+ {
+ 'type' => 'void **',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_queue_trypush',
+ 'args' => [
+ {
+ 'type' => 'apr_queue_t *',
+ 'name' => 'queue'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_random_add_entropy',
+ 'args' => [
+ {
+ 'type' => 'apr_random_t *',
+ 'name' => 'g'
+ },
+ {
+ 'type' => 'const void *',
+ 'name' => 'entropy_'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'bytes'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_random_after_fork',
+ 'args' => [
+ {
+ 'type' => 'apr_proc_t *',
+ 'name' => 'proc'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_random_barrier',
+ 'args' => [
+ {
+ 'type' => 'apr_random_t *',
+ 'name' => 'g'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_random_init',
+ 'args' => [
+ {
+ 'type' => 'apr_random_t *',
+ 'name' => 'g'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_crypto_hash_t *',
+ 'name' => 'pool_hash'
+ },
+ {
+ 'type' => 'apr_crypto_hash_t *',
+ 'name' => 'key_hash'
+ },
+ {
+ 'type' => 'apr_crypto_hash_t *',
+ 'name' => 'prng_hash'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_random_insecure_bytes',
+ 'args' => [
+ {
+ 'type' => 'apr_random_t *',
+ 'name' => 'g'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'random'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'bytes'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_random_insecure_ready',
+ 'args' => [
+ {
+ 'type' => 'apr_random_t *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_random_secure_bytes',
+ 'args' => [
+ {
+ 'type' => 'apr_random_t *',
+ 'name' => 'g'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'random'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'bytes'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_random_secure_ready',
+ 'args' => [
+ {
+ 'type' => 'apr_random_t *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_random_t *',
+ 'name' => 'apr_random_standard_new',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_reslist_acquire',
+ 'args' => [
+ {
+ 'type' => 'apr_reslist_t *',
+ 'name' => 'reslist'
+ },
+ {
+ 'type' => 'void **',
+ 'name' => 'resource'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_uint32_t',
+ 'name' => 'apr_reslist_acquired_count',
+ 'args' => [
+ {
+ 'type' => 'apr_reslist_t *',
+ 'name' => 'reslist'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_reslist_cleanup_order_set',
+ 'args' => [
+ {
+ 'type' => 'apr_reslist_t *',
+ 'name' => 'reslist'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'mode'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_reslist_create',
+ 'args' => [
+ {
+ 'type' => 'apr_reslist_t **',
+ 'name' => 'reslist'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'min'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'smax'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'hmax'
+ },
+ {
+ 'type' => 'apr_interval_time_t',
+ 'name' => 'ttl'
+ },
+ {
+ 'type' => 'apr_reslist_constructor',
+ 'name' => 'con'
+ },
+ {
+ 'type' => 'apr_reslist_destructor',
+ 'name' => 'de'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'params'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_reslist_destroy',
+ 'args' => [
+ {
+ 'type' => 'apr_reslist_t *',
+ 'name' => 'reslist'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_reslist_invalidate',
+ 'args' => [
+ {
+ 'type' => 'apr_reslist_t *',
+ 'name' => 'reslist'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'resource'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_reslist_maintain',
+ 'args' => [
+ {
+ 'type' => 'apr_reslist_t *',
+ 'name' => 'reslist'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_reslist_release',
+ 'args' => [
+ {
+ 'type' => 'apr_reslist_t *',
+ 'name' => 'reslist'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'resource'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_reslist_timeout_set',
+ 'args' => [
+ {
+ 'type' => 'apr_reslist_t *',
+ 'name' => 'reslist'
+ },
+ {
+ 'type' => 'apr_interval_time_t',
+ 'name' => 'timeout'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_rfc822_date',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'date_str'
+ },
+ {
+ 'type' => 'apr_time_t',
+ 'name' => 't'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void *',
+ 'name' => 'apr_rmm_addr_get',
+ 'args' => [
+ {
+ 'type' => 'apr_rmm_t *',
+ 'name' => 'rmm'
+ },
+ {
+ 'type' => 'apr_rmm_off_t',
+ 'name' => 'entity'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_rmm_attach',
+ 'args' => [
+ {
+ 'type' => 'apr_rmm_t **',
+ 'name' => 'rmm'
+ },
+ {
+ 'type' => 'apr_anylock_t *',
+ 'name' => 'lock'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'membuf'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'cont'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_rmm_off_t',
+ 'name' => 'apr_rmm_calloc',
+ 'args' => [
+ {
+ 'type' => 'apr_rmm_t *',
+ 'name' => 'rmm'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'reqsize'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_rmm_destroy',
+ 'args' => [
+ {
+ 'type' => 'apr_rmm_t *',
+ 'name' => 'rmm'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_rmm_detach',
+ 'args' => [
+ {
+ 'type' => 'apr_rmm_t *',
+ 'name' => 'rmm'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_rmm_free',
+ 'args' => [
+ {
+ 'type' => 'apr_rmm_t *',
+ 'name' => 'rmm'
+ },
+ {
+ 'type' => 'apr_rmm_off_t',
+ 'name' => 'entity'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_rmm_init',
+ 'args' => [
+ {
+ 'type' => 'apr_rmm_t **',
+ 'name' => 'rmm'
+ },
+ {
+ 'type' => 'apr_anylock_t *',
+ 'name' => 'lock'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'membuf'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'memsize'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'cont'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_rmm_off_t',
+ 'name' => 'apr_rmm_malloc',
+ 'args' => [
+ {
+ 'type' => 'apr_rmm_t *',
+ 'name' => 'rmm'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'reqsize'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_rmm_off_t',
+ 'name' => 'apr_rmm_offset_get',
+ 'args' => [
+ {
+ 'type' => 'apr_rmm_t *',
+ 'name' => 'rmm'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'entity'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'apr_rmm_overhead_get',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'n'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_rmm_off_t',
+ 'name' => 'apr_rmm_realloc',
+ 'args' => [
+ {
+ 'type' => 'apr_rmm_t *',
+ 'name' => 'rmm'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'entity'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'reqsize'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_sdbm_close',
+ 'args' => [
+ {
+ 'type' => 'apr_sdbm_t *',
+ 'name' => 'db'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_sdbm_delete',
+ 'args' => [
+ {
+ 'type' => 'apr_sdbm_t *',
+ 'name' => 'db'
+ },
+ {
+ 'type' => 'const apr_sdbm_datum_t',
+ 'name' => 'key'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_sdbm_fetch',
+ 'args' => [
+ {
+ 'type' => 'apr_sdbm_t *',
+ 'name' => 'db'
+ },
+ {
+ 'type' => 'apr_sdbm_datum_t *',
+ 'name' => 'value'
+ },
+ {
+ 'type' => 'apr_sdbm_datum_t',
+ 'name' => 'key'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_sdbm_firstkey',
+ 'args' => [
+ {
+ 'type' => 'apr_sdbm_t *',
+ 'name' => 'db'
+ },
+ {
+ 'type' => 'apr_sdbm_datum_t *',
+ 'name' => 'key'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_sdbm_lock',
+ 'args' => [
+ {
+ 'type' => 'apr_sdbm_t *',
+ 'name' => 'db'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'type'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_sdbm_nextkey',
+ 'args' => [
+ {
+ 'type' => 'apr_sdbm_t *',
+ 'name' => 'db'
+ },
+ {
+ 'type' => 'apr_sdbm_datum_t *',
+ 'name' => 'key'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_sdbm_open',
+ 'args' => [
+ {
+ 'type' => 'apr_sdbm_t **',
+ 'name' => 'db'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'mode'
+ },
+ {
+ 'type' => 'apr_fileperms_t',
+ 'name' => 'perms'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_sdbm_rdonly',
+ 'args' => [
+ {
+ 'type' => 'apr_sdbm_t *',
+ 'name' => 'db'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_sdbm_store',
+ 'args' => [
+ {
+ 'type' => 'apr_sdbm_t *',
+ 'name' => 'db'
+ },
+ {
+ 'type' => 'apr_sdbm_datum_t',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'apr_sdbm_datum_t',
+ 'name' => 'value'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'opt'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_sdbm_unlock',
+ 'args' => [
+ {
+ 'type' => 'apr_sdbm_t *',
+ 'name' => 'db'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_setup_signal_thread',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_sha1_base64',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'clear'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'len'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'out'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_sha1_final',
+ 'args' => [
+ {
+ 'type' => 'unsigned char',
+ 'name' => 'digest'
+ },
+ {
+ 'type' => 'apr_sha1_ctx_t *',
+ 'name' => 'context'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_sha1_init',
+ 'args' => [
+ {
+ 'type' => 'apr_sha1_ctx_t *',
+ 'name' => 'context'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_sha1_update',
+ 'args' => [
+ {
+ 'type' => 'apr_sha1_ctx_t *',
+ 'name' => 'context'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'input'
+ },
+ {
+ 'type' => 'unsigned int',
+ 'name' => 'inputLen'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_sha1_update_binary',
+ 'args' => [
+ {
+ 'type' => 'apr_sha1_ctx_t *',
+ 'name' => 'context'
+ },
+ {
+ 'type' => 'const unsigned char *',
+ 'name' => 'input'
+ },
+ {
+ 'type' => 'unsigned int',
+ 'name' => 'inputLen'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_shm_attach',
+ 'args' => [
+ {
+ 'type' => 'apr_shm_t **',
+ 'name' => 'm'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'filename'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void *',
+ 'name' => 'apr_shm_baseaddr_get',
+ 'args' => [
+ {
+ 'type' => 'const apr_shm_t *',
+ 'name' => 'm'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_shm_create',
+ 'args' => [
+ {
+ 'type' => 'apr_shm_t **',
+ 'name' => 'm'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'reqsize'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'filename'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_shm_destroy',
+ 'args' => [
+ {
+ 'type' => 'apr_shm_t *',
+ 'name' => 'm'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_shm_detach',
+ 'args' => [
+ {
+ 'type' => 'apr_shm_t *',
+ 'name' => 'm'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_pool_t *',
+ 'name' => 'apr_shm_pool_get',
+ 'args' => [
+ {
+ 'type' => 'const apr_shm_t *',
+ 'name' => 'theshm'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_shm_remove',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'filename'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'apr_shm_size_get',
+ 'args' => [
+ {
+ 'type' => 'const apr_shm_t *',
+ 'name' => 'm'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_sigfunc_t *',
+ 'name' => 'apr_signal',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'signo'
+ },
+ {
+ 'type' => 'apr_sigfunc_t *',
+ 'name' => 'func'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_signal_block',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'signum'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'apr_signal_description_get',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'signum'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_signal_init',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pglobal'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_signal_thread',
+ 'args' => [
+ {
+ 'type' => 'int(*signal_handler)(int signum)',
+ 'name' => 'arg0'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_signal_unblock',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'signum'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_sleep',
+ 'args' => [
+ {
+ 'type' => 'apr_interval_time_t',
+ 'name' => 't'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_snprintf',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'len'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'format'
+ },
+ {
+ 'type' => '...',
+ 'name' => 'arg3'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_sockaddr_equal',
+ 'args' => [
+ {
+ 'type' => 'const apr_sockaddr_t *',
+ 'name' => 'addr1'
+ },
+ {
+ 'type' => 'const apr_sockaddr_t *',
+ 'name' => 'addr2'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_sockaddr_info_get',
+ 'args' => [
+ {
+ 'type' => 'apr_sockaddr_t **',
+ 'name' => 'sa'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'hostname'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'family'
+ },
+ {
+ 'type' => 'apr_port_t',
+ 'name' => 'port'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'flags'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_sockaddr_ip_get',
+ 'args' => [
+ {
+ 'type' => 'char **',
+ 'name' => 'addr'
+ },
+ {
+ 'type' => 'apr_sockaddr_t *',
+ 'name' => 'sockaddr'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_sockaddr_ip_getbuf',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'buflen'
+ },
+ {
+ 'type' => 'apr_sockaddr_t *',
+ 'name' => 'sockaddr'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_socket_accept',
+ 'args' => [
+ {
+ 'type' => 'apr_socket_t **',
+ 'name' => 'new_sock'
+ },
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'sock'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'connection_pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_socket_addr_get',
+ 'args' => [
+ {
+ 'type' => 'apr_sockaddr_t **',
+ 'name' => 'sa'
+ },
+ {
+ 'type' => 'apr_interface_e',
+ 'name' => 'which'
+ },
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'sock'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_socket_atmark',
+ 'args' => [
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'sock'
+ },
+ {
+ 'type' => 'int *',
+ 'name' => 'atmark'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_socket_atreadeof',
+ 'args' => [
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'sock'
+ },
+ {
+ 'type' => 'int *',
+ 'name' => 'atreadeof'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_socket_bind',
+ 'args' => [
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'sock'
+ },
+ {
+ 'type' => 'apr_sockaddr_t *',
+ 'name' => 'sa'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_socket_close',
+ 'args' => [
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'thesocket'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_socket_connect',
+ 'args' => [
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'sock'
+ },
+ {
+ 'type' => 'apr_sockaddr_t *',
+ 'name' => 'sa'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_socket_create',
+ 'args' => [
+ {
+ 'type' => 'apr_socket_t **',
+ 'name' => 'new_sock'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'family'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'type'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'protocol'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'cont'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_socket_data_get',
+ 'args' => [
+ {
+ 'type' => 'void **',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'sock'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_socket_data_set',
+ 'args' => [
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'sock'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'apr_status_t (*cleanup)(void*)',
+ 'name' => 'arg3'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_socket_inherit_set',
+ 'args' => [
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'thesocket'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_socket_inherit_unset',
+ 'args' => [
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'thesocket'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_socket_listen',
+ 'args' => [
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'sock'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'backlog'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_socket_opt_get',
+ 'args' => [
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'sock'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'opt'
+ },
+ {
+ 'type' => 'apr_int32_t *',
+ 'name' => 'on'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_socket_opt_set',
+ 'args' => [
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'sock'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'opt'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'on'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_pool_t *',
+ 'name' => 'apr_socket_pool_get',
+ 'args' => [
+ {
+ 'type' => 'const apr_socket_t *',
+ 'name' => 'thesocket'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_socket_protocol_get',
+ 'args' => [
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'sock'
+ },
+ {
+ 'type' => 'int *',
+ 'name' => 'protocol'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_socket_recv',
+ 'args' => [
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'sock'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'len'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_socket_recvfrom',
+ 'args' => [
+ {
+ 'type' => 'apr_sockaddr_t *',
+ 'name' => 'from'
+ },
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'sock'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'flags'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'len'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_socket_send',
+ 'args' => [
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'sock'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'len'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_socket_sendfile',
+ 'args' => [
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'sock'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'file'
+ },
+ {
+ 'type' => 'apr_hdtr_t *',
+ 'name' => 'hdtr'
+ },
+ {
+ 'type' => 'apr_off_t *',
+ 'name' => 'offset'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'len'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'flags'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_socket_sendto',
+ 'args' => [
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'sock'
+ },
+ {
+ 'type' => 'apr_sockaddr_t *',
+ 'name' => 'where'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'flags'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'len'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_socket_sendv',
+ 'args' => [
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'sock'
+ },
+ {
+ 'type' => 'const struct iovec *',
+ 'name' => 'vec'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'nvec'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'len'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_socket_shutdown',
+ 'args' => [
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'thesocket'
+ },
+ {
+ 'type' => 'apr_shutdown_how_e',
+ 'name' => 'how'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_socket_timeout_get',
+ 'args' => [
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'sock'
+ },
+ {
+ 'type' => 'apr_interval_time_t *',
+ 'name' => 't'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_socket_timeout_set',
+ 'args' => [
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'sock'
+ },
+ {
+ 'type' => 'apr_interval_time_t',
+ 'name' => 't'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_socket_type_get',
+ 'args' => [
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'sock'
+ },
+ {
+ 'type' => 'int *',
+ 'name' => 'type'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_stat',
+ 'args' => [
+ {
+ 'type' => 'apr_finfo_t *',
+ 'name' => 'finfo'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'fname'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'wanted'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'apr_strerror',
+ 'args' => [
+ {
+ 'type' => 'apr_status_t',
+ 'name' => 'statcode'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'bufsize'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'apr_strfsize',
+ 'args' => [
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'size'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'buf'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_strftime',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'retsize'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'max'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'format'
+ },
+ {
+ 'type' => 'apr_time_exp_t *',
+ 'name' => 'tm'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const apr_strmatch_pattern *',
+ 'name' => 'apr_strmatch_precompile',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'case_sensitive'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_strnatcasecmp',
+ 'args' => [
+ {
+ 'type' => 'char const *',
+ 'name' => 'a'
+ },
+ {
+ 'type' => 'char const *',
+ 'name' => 'b'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_strnatcmp',
+ 'args' => [
+ {
+ 'type' => 'char const *',
+ 'name' => 'a'
+ },
+ {
+ 'type' => 'char const *',
+ 'name' => 'b'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_strtoff',
+ 'args' => [
+ {
+ 'type' => 'apr_off_t *',
+ 'name' => 'offset'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'char **',
+ 'name' => 'end'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'base'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_int64_t',
+ 'name' => 'apr_strtoi64',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'char **',
+ 'name' => 'end'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'base'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'apr_strtok',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'str'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'sep'
+ },
+ {
+ 'type' => 'char **',
+ 'name' => 'last'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_table_add',
+ 'args' => [
+ {
+ 'type' => 'apr_table_t *',
+ 'name' => 't'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'val'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_table_addn',
+ 'args' => [
+ {
+ 'type' => 'apr_table_t *',
+ 'name' => 't'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'val'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_table_clear',
+ 'args' => [
+ {
+ 'type' => 'apr_table_t *',
+ 'name' => 't'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_table_t *',
+ 'name' => 'apr_table_clone',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const apr_table_t *',
+ 'name' => 't'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_table_compress',
+ 'args' => [
+ {
+ 'type' => 'apr_table_t *',
+ 'name' => 't'
+ },
+ {
+ 'type' => 'unsigned',
+ 'name' => 'flags'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_table_t *',
+ 'name' => 'apr_table_copy',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const apr_table_t *',
+ 'name' => 't'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_table_do',
+ 'args' => [
+ {
+ 'type' => 'void *comp',
+ 'name' => 'arg0'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'rec'
+ },
+ {
+ 'type' => 'const apr_table_t *',
+ 'name' => 't'
+ },
+ {
+ 'type' => '...',
+ 'name' => 'arg3'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const apr_array_header_t *',
+ 'name' => 'apr_table_elts',
+ 'args' => [
+ {
+ 'type' => 'const apr_table_t *',
+ 'name' => 't'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'apr_table_get',
+ 'args' => [
+ {
+ 'type' => 'const apr_table_t *',
+ 'name' => 't'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'key'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_table_t *',
+ 'name' => 'apr_table_make',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nelts'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_table_merge',
+ 'args' => [
+ {
+ 'type' => 'apr_table_t *',
+ 'name' => 't'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'val'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_table_mergen',
+ 'args' => [
+ {
+ 'type' => 'apr_table_t *',
+ 'name' => 't'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'val'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_table_overlap',
+ 'args' => [
+ {
+ 'type' => 'apr_table_t *',
+ 'name' => 'a'
+ },
+ {
+ 'type' => 'const apr_table_t *',
+ 'name' => 'b'
+ },
+ {
+ 'type' => 'unsigned',
+ 'name' => 'flags'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_table_t *',
+ 'name' => 'apr_table_overlay',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const apr_table_t *',
+ 'name' => 'overlay'
+ },
+ {
+ 'type' => 'const apr_table_t *',
+ 'name' => 'base'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_table_set',
+ 'args' => [
+ {
+ 'type' => 'apr_table_t *',
+ 'name' => 't'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'val'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_table_setn',
+ 'args' => [
+ {
+ 'type' => 'apr_table_t *',
+ 'name' => 't'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'val'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_table_unset',
+ 'args' => [
+ {
+ 'type' => 'apr_table_t *',
+ 'name' => 't'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'key'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_table_vdo',
+ 'args' => [
+ {
+ 'type' => 'void *comp',
+ 'name' => 'arg0'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'rec'
+ },
+ {
+ 'type' => 'const apr_table_t *',
+ 'name' => 't'
+ },
+ {
+ 'type' => 'va_list',
+ 'name' => 'vp'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_temp_dir_get',
+ 'args' => [
+ {
+ 'type' => 'const char **',
+ 'name' => 'temp_dir'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_terminate',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_terminate2',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_text_append',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_text_header *',
+ 'name' => 'hdr'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'text'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_thread_cond_broadcast',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_cond_t *',
+ 'name' => 'cond'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_thread_cond_create',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_cond_t **',
+ 'name' => 'cond'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_thread_cond_destroy',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_cond_t *',
+ 'name' => 'cond'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_pool_t *',
+ 'name' => 'apr_thread_cond_pool_get',
+ 'args' => [
+ {
+ 'type' => 'const apr_thread_cond_t *',
+ 'name' => 'thethread_cond'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_thread_cond_signal',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_cond_t *',
+ 'name' => 'cond'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_thread_cond_timedwait',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_cond_t *',
+ 'name' => 'cond'
+ },
+ {
+ 'type' => 'apr_thread_mutex_t *',
+ 'name' => 'mutex'
+ },
+ {
+ 'type' => 'apr_interval_time_t',
+ 'name' => 'timeout'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_thread_cond_wait',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_cond_t *',
+ 'name' => 'cond'
+ },
+ {
+ 'type' => 'apr_thread_mutex_t *',
+ 'name' => 'mutex'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_thread_create',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_t **',
+ 'name' => 'new_thread'
+ },
+ {
+ 'type' => 'apr_threadattr_t *',
+ 'name' => 'attr'
+ },
+ {
+ 'type' => 'apr_thread_start_t',
+ 'name' => 'func'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'cont'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_thread_data_get',
+ 'args' => [
+ {
+ 'type' => 'void **',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'apr_thread_t *',
+ 'name' => 'thread'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_thread_data_set',
+ 'args' => [
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'apr_status_t (*cleanup) (void *)',
+ 'name' => 'arg2'
+ },
+ {
+ 'type' => 'apr_thread_t *',
+ 'name' => 'thread'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_thread_detach',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_t *',
+ 'name' => 'thd'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_thread_exit',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_t *',
+ 'name' => 'thd'
+ },
+ {
+ 'type' => 'apr_status_t',
+ 'name' => 'retval'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_thread_join',
+ 'args' => [
+ {
+ 'type' => 'apr_status_t *',
+ 'name' => 'retval'
+ },
+ {
+ 'type' => 'apr_thread_t *',
+ 'name' => 'thd'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_thread_mutex_create',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_mutex_t **',
+ 'name' => 'mutex'
+ },
+ {
+ 'type' => 'unsigned int',
+ 'name' => 'flags'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_thread_mutex_destroy',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_mutex_t *',
+ 'name' => 'mutex'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_thread_mutex_lock',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_mutex_t *',
+ 'name' => 'mutex'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_pool_t *',
+ 'name' => 'apr_thread_mutex_pool_get',
+ 'args' => [
+ {
+ 'type' => 'const apr_thread_mutex_t *',
+ 'name' => 'thethread_mutex'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_thread_mutex_trylock',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_mutex_t *',
+ 'name' => 'mutex'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_thread_mutex_unlock',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_mutex_t *',
+ 'name' => 'mutex'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_thread_once',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_once_t *',
+ 'name' => 'control'
+ },
+ {
+ 'type' => 'void (*func)(void)',
+ 'name' => 'arg1'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_thread_once_init',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_once_t **',
+ 'name' => 'control'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'apr_thread_pool_busy_count',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_pool_t *',
+ 'name' => 'me'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_thread_pool_create',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_pool_t **',
+ 'name' => 'me'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'init_threads'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'max_threads'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_thread_pool_destroy',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_pool_t *',
+ 'name' => 'me'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_pool_t *',
+ 'name' => 'apr_thread_pool_get',
+ 'args' => [
+ {
+ 'type' => 'const apr_thread_t *',
+ 'name' => 'thethread'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'apr_thread_pool_idle_count',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_pool_t *',
+ 'name' => 'me'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'apr_thread_pool_idle_max_get',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_pool_t *',
+ 'name' => 'me'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'apr_thread_pool_idle_max_set',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_pool_t *',
+ 'name' => 'me'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'cnt'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_interval_time_t',
+ 'name' => 'apr_thread_pool_idle_wait_get',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_pool_t *',
+ 'name' => 'me'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_interval_time_t',
+ 'name' => 'apr_thread_pool_idle_wait_set',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_pool_t *',
+ 'name' => 'me'
+ },
+ {
+ 'type' => 'apr_interval_time_t',
+ 'name' => 'timeout'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_thread_pool_push',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_pool_t *',
+ 'name' => 'me'
+ },
+ {
+ 'type' => 'apr_thread_start_t',
+ 'name' => 'func'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'param'
+ },
+ {
+ 'type' => 'apr_byte_t',
+ 'name' => 'priority'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'owner'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_thread_pool_schedule',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_pool_t *',
+ 'name' => 'me'
+ },
+ {
+ 'type' => 'apr_thread_start_t',
+ 'name' => 'func'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'param'
+ },
+ {
+ 'type' => 'apr_interval_time_t',
+ 'name' => 'time'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'owner'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'apr_thread_pool_scheduled_tasks_count',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_pool_t *',
+ 'name' => 'me'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_thread_pool_task_owner_get',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_t *',
+ 'name' => 'thd'
+ },
+ {
+ 'type' => 'void **',
+ 'name' => 'owner'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_thread_pool_tasks_cancel',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_pool_t *',
+ 'name' => 'me'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'owner'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'apr_thread_pool_tasks_count',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_pool_t *',
+ 'name' => 'me'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'apr_thread_pool_tasks_high_count',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_pool_t *',
+ 'name' => 'me'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'apr_thread_pool_tasks_run_count',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_pool_t *',
+ 'name' => 'me'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'apr_thread_pool_thread_max_get',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_pool_t *',
+ 'name' => 'me'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'apr_thread_pool_thread_max_set',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_pool_t *',
+ 'name' => 'me'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'cnt'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'apr_thread_pool_threads_count',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_pool_t *',
+ 'name' => 'me'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'apr_thread_pool_threads_high_count',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_pool_t *',
+ 'name' => 'me'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'apr_thread_pool_threads_idle_timeout_count',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_pool_t *',
+ 'name' => 'me'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'apr_thread_pool_threshold_get',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_pool_t *',
+ 'name' => 'me'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'apr_thread_pool_threshold_set',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_pool_t *',
+ 'name' => 'me'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'val'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_thread_pool_top',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_pool_t *',
+ 'name' => 'me'
+ },
+ {
+ 'type' => 'apr_thread_start_t',
+ 'name' => 'func'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'param'
+ },
+ {
+ 'type' => 'apr_byte_t',
+ 'name' => 'priority'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'owner'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_thread_rwlock_create',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_rwlock_t **',
+ 'name' => 'rwlock'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_thread_rwlock_destroy',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_rwlock_t *',
+ 'name' => 'rwlock'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_pool_t *',
+ 'name' => 'apr_thread_rwlock_pool_get',
+ 'args' => [
+ {
+ 'type' => 'const apr_thread_rwlock_t *',
+ 'name' => 'thethread_rwlock'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_thread_rwlock_rdlock',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_rwlock_t *',
+ 'name' => 'rwlock'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_thread_rwlock_tryrdlock',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_rwlock_t *',
+ 'name' => 'rwlock'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_thread_rwlock_trywrlock',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_rwlock_t *',
+ 'name' => 'rwlock'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_thread_rwlock_unlock',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_rwlock_t *',
+ 'name' => 'rwlock'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_thread_rwlock_wrlock',
+ 'args' => [
+ {
+ 'type' => 'apr_thread_rwlock_t *',
+ 'name' => 'rwlock'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_thread_yield',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_threadattr_create',
+ 'args' => [
+ {
+ 'type' => 'apr_threadattr_t **',
+ 'name' => 'new_attr'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'cont'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_threadattr_detach_get',
+ 'args' => [
+ {
+ 'type' => 'apr_threadattr_t *',
+ 'name' => 'attr'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_threadattr_detach_set',
+ 'args' => [
+ {
+ 'type' => 'apr_threadattr_t *',
+ 'name' => 'attr'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'on'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_threadattr_guardsize_set',
+ 'args' => [
+ {
+ 'type' => 'apr_threadattr_t *',
+ 'name' => 'attr'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'guardsize'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_threadattr_stacksize_set',
+ 'args' => [
+ {
+ 'type' => 'apr_threadattr_t *',
+ 'name' => 'attr'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'stacksize'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_threadkey_data_get',
+ 'args' => [
+ {
+ 'type' => 'void **',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'apr_threadkey_t *',
+ 'name' => 'threadkey'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_threadkey_data_set',
+ 'args' => [
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'apr_status_t (*cleanup) (void *)',
+ 'name' => 'arg2'
+ },
+ {
+ 'type' => 'apr_threadkey_t *',
+ 'name' => 'threadkey'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_threadkey_private_create',
+ 'args' => [
+ {
+ 'type' => 'apr_threadkey_t **',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'void (*dest)(void *)',
+ 'name' => 'arg1'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'cont'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_threadkey_private_delete',
+ 'args' => [
+ {
+ 'type' => 'apr_threadkey_t *',
+ 'name' => 'key'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_threadkey_private_get',
+ 'args' => [
+ {
+ 'type' => 'void **',
+ 'name' => 'new_mem'
+ },
+ {
+ 'type' => 'apr_threadkey_t *',
+ 'name' => 'key'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_threadkey_private_set',
+ 'args' => [
+ {
+ 'type' => 'void *',
+ 'name' => 'priv'
+ },
+ {
+ 'type' => 'apr_threadkey_t *',
+ 'name' => 'key'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_time_ansi_put',
+ 'args' => [
+ {
+ 'type' => 'apr_time_t *',
+ 'name' => 'result'
+ },
+ {
+ 'type' => 'time_t',
+ 'name' => 'input'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_time_clock_hires',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_time_exp_get',
+ 'args' => [
+ {
+ 'type' => 'apr_time_t *',
+ 'name' => 'result'
+ },
+ {
+ 'type' => 'apr_time_exp_t *',
+ 'name' => 'input'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_time_exp_gmt',
+ 'args' => [
+ {
+ 'type' => 'apr_time_exp_t *',
+ 'name' => 'result'
+ },
+ {
+ 'type' => 'apr_time_t',
+ 'name' => 'input'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_time_exp_gmt_get',
+ 'args' => [
+ {
+ 'type' => 'apr_time_t *',
+ 'name' => 'result'
+ },
+ {
+ 'type' => 'apr_time_exp_t *',
+ 'name' => 'input'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_time_exp_lt',
+ 'args' => [
+ {
+ 'type' => 'apr_time_exp_t *',
+ 'name' => 'result'
+ },
+ {
+ 'type' => 'apr_time_t',
+ 'name' => 'input'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_time_exp_tz',
+ 'args' => [
+ {
+ 'type' => 'apr_time_exp_t *',
+ 'name' => 'result'
+ },
+ {
+ 'type' => 'apr_time_t',
+ 'name' => 'input'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'offs'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_time_t',
+ 'name' => 'apr_time_now',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_tokenize_to_argv',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg_str'
+ },
+ {
+ 'type' => 'char ***',
+ 'name' => 'argv_out'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'token_context'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_uid_current',
+ 'args' => [
+ {
+ 'type' => 'apr_uid_t *',
+ 'name' => 'userid'
+ },
+ {
+ 'type' => 'apr_gid_t *',
+ 'name' => 'groupid'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_uid_get',
+ 'args' => [
+ {
+ 'type' => 'apr_uid_t *',
+ 'name' => 'userid'
+ },
+ {
+ 'type' => 'apr_gid_t *',
+ 'name' => 'groupid'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'username'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_uid_homepath_get',
+ 'args' => [
+ {
+ 'type' => 'char **',
+ 'name' => 'dirname'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'username'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_uid_name_get',
+ 'args' => [
+ {
+ 'type' => 'char **',
+ 'name' => 'username'
+ },
+ {
+ 'type' => 'apr_uid_t',
+ 'name' => 'userid'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_uri_parse',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'uri'
+ },
+ {
+ 'type' => 'apr_uri_t *',
+ 'name' => 'uptr'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_uri_parse_hostinfo',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'hostinfo'
+ },
+ {
+ 'type' => 'apr_uri_t *',
+ 'name' => 'uptr'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_port_t',
+ 'name' => 'apr_uri_port_of_scheme',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'scheme_str'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'apr_uri_unparse',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const apr_uri_t *',
+ 'name' => 'uptr'
+ },
+ {
+ 'type' => 'unsigned',
+ 'name' => 'flags'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_uuid_format',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'buffer'
+ },
+ {
+ 'type' => 'const apr_uuid_t *',
+ 'name' => 'uuid'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_uuid_get',
+ 'args' => [
+ {
+ 'type' => 'apr_uuid_t *',
+ 'name' => 'uuid'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_uuid_parse',
+ 'args' => [
+ {
+ 'type' => 'apr_uuid_t *',
+ 'name' => 'uuid'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'uuid_str'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_version',
+ 'args' => [
+ {
+ 'type' => 'apr_version_t *',
+ 'name' => 'pvsn'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'apr_version_string',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_vformatter',
+ 'args' => [
+ {
+ 'type' => 'int (*flush_func)(apr_vformatter_buff_t *b)',
+ 'name' => 'arg0'
+ },
+ {
+ 'type' => 'apr_vformatter_buff_t *',
+ 'name' => 'c'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'fmt'
+ },
+ {
+ 'type' => 'va_list',
+ 'name' => 'ap'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_vsnprintf',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'len'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'format'
+ },
+ {
+ 'type' => 'va_list',
+ 'name' => 'ap'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_wait_for_io_or_timeout',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'f'
+ },
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'for_read'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_xlate_close',
+ 'args' => [
+ {
+ 'type' => 'apr_xlate_t *',
+ 'name' => 'convset'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_xlate_conv_buffer',
+ 'args' => [
+ {
+ 'type' => 'apr_xlate_t *',
+ 'name' => 'convset'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'inbuf'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'inbytes_left'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'outbuf'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'outbytes_left'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_int32_t',
+ 'name' => 'apr_xlate_conv_byte',
+ 'args' => [
+ {
+ 'type' => 'apr_xlate_t *',
+ 'name' => 'convset'
+ },
+ {
+ 'type' => 'unsigned char',
+ 'name' => 'inchar'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_xlate_open',
+ 'args' => [
+ {
+ 'type' => 'apr_xlate_t **',
+ 'name' => 'convset'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'topage'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'frompage'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_xlate_sb_get',
+ 'args' => [
+ {
+ 'type' => 'apr_xlate_t *',
+ 'name' => 'convset'
+ },
+ {
+ 'type' => 'int *',
+ 'name' => 'onoff'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'apr_xml_empty_elem',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const apr_xml_elem *',
+ 'name' => 'elem'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'apr_xml_insert_uri',
+ 'args' => [
+ {
+ 'type' => 'apr_array_header_t *',
+ 'name' => 'uri_array'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'uri'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_xml_parse_file',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_xml_parser **',
+ 'name' => 'parser'
+ },
+ {
+ 'type' => 'apr_xml_doc **',
+ 'name' => 'ppdoc'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'xmlfd'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'buffer_length'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_xml_parser *',
+ 'name' => 'apr_xml_parser_create',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_xml_parser_done',
+ 'args' => [
+ {
+ 'type' => 'apr_xml_parser *',
+ 'name' => 'parser'
+ },
+ {
+ 'type' => 'apr_xml_doc **',
+ 'name' => 'pdoc'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'apr_xml_parser_feed',
+ 'args' => [
+ {
+ 'type' => 'apr_xml_parser *',
+ 'name' => 'parser'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'len'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'apr_xml_parser_geterror',
+ 'args' => [
+ {
+ 'type' => 'apr_xml_parser *',
+ 'name' => 'parser'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'errbuf'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'errbufsize'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_xml_quote_elem',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_xml_elem *',
+ 'name' => 'elem'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'apr_xml_quote_string',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'quotes'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'apr_xml_to_text',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const apr_xml_elem *',
+ 'name' => 'elem'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'style'
+ },
+ {
+ 'type' => 'apr_array_header_t *',
+ 'name' => 'namespaces'
+ },
+ {
+ 'type' => 'int *',
+ 'name' => 'ns_map'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'pbuf'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'psize'
+ }
+ ]
+ }
+];
+
+
+1;
diff --git a/xs/tables/current24/Apache2/StructureTable.pm b/xs/tables/current24/Apache2/StructureTable.pm
new file mode 100644
index 0000000..0bf8530
--- /dev/null
+++ b/xs/tables/current24/Apache2/StructureTable.pm
@@ -0,0 +1,5468 @@
+package Apache2::StructureTable;
+
+# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+# ! WARNING: generated by Apache2::ParseSource/0.02
+# ! Mon Jul 1 12:38:15 2013
+# ! do NOT edit, any changes will be lost !
+# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+$Apache2::StructureTable = [
+ {
+ 'type' => 'ap_HOOK_access_checker_ex_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_access_checker_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_auth_checker_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_check_config_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_check_user_id_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_child_init_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_child_status_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_create_connection_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_create_request_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_default_port_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_drop_privileges_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_end_generation_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_error_log_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_expr_lookup_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_fixups_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_generate_log_id_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_get_mgmt_items_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_get_suexec_identity_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_handler_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_header_parser_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_http_scheme_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_insert_error_filter_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_insert_filter_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_insert_network_bucket_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_log_transaction_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_map_to_storage_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_monitor_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_mpm_get_name_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_mpm_query_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_mpm_register_timed_callback_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_mpm_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_note_auth_failure_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_open_logs_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_optional_fn_retrieve_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_post_config_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_post_read_request_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_pre_config_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_pre_connection_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_pre_mpm_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_pre_read_request_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_process_connection_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_quick_handler_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_session_decode_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_session_encode_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_session_load_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_session_save_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_status_hook_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_test_config_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_translate_name_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_type_checker_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_watchdog_exit_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_watchdog_init_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_watchdog_need_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_HOOK_watchdog_step_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_LINK_access_checker_ex_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_access_checker_ex_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_access_checker_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_access_checker_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_auth_checker_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_auth_checker_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_check_config_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_check_config_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_check_user_id_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_check_user_id_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_child_init_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_child_init_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_child_status_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_child_status_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_create_connection_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_create_connection_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_create_request_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_create_request_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_default_port_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_default_port_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_drop_privileges_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_drop_privileges_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_end_generation_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_end_generation_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_error_log_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_error_log_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_expr_lookup_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_expr_lookup_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_fixups_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_fixups_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_generate_log_id_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_generate_log_id_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_get_mgmt_items_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_get_mgmt_items_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_get_suexec_identity_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_get_suexec_identity_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_handler_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_handler_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_header_parser_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_header_parser_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_http_scheme_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_http_scheme_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_insert_error_filter_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_insert_error_filter_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_insert_filter_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_insert_filter_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_insert_network_bucket_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_insert_network_bucket_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_log_transaction_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_log_transaction_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_map_to_storage_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_map_to_storage_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_monitor_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_monitor_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_mpm_get_name_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_mpm_get_name_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_mpm_query_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_mpm_query_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_mpm_register_timed_callback_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_mpm_register_timed_callback_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_mpm_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_mpm_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_note_auth_failure_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_note_auth_failure_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_open_logs_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_open_logs_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_optional_fn_retrieve_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_optional_fn_retrieve_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_post_config_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_post_config_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_post_read_request_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_post_read_request_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_pre_config_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_pre_config_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_pre_connection_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_pre_connection_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_pre_mpm_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_pre_mpm_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_pre_read_request_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_pre_read_request_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_process_connection_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_process_connection_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_quick_handler_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_quick_handler_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_session_decode_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_session_decode_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_session_encode_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_session_encode_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_session_load_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_session_load_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_session_save_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_session_save_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_status_hook_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_status_hook_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_test_config_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_test_config_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_translate_name_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_translate_name_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_type_checker_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_type_checker_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_watchdog_exit_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_watchdog_exit_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_watchdog_init_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_watchdog_init_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_watchdog_need_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_watchdog_need_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_LINK_watchdog_step_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_HOOK_watchdog_step_t *',
+ 'name' => 'pFunc'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'szName'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszPredecessors'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'aszSuccessors'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nOrder'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_bucket_error',
+ 'elts' => [
+ {
+ 'type' => 'apr_bucket_refcount',
+ 'name' => 'refcount'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'status'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_conf_vector_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_configfile_t',
+ 'elts' => [
+ {
+ 'type' => 'apr_status_t(*) (char *ch, void *param)',
+ 'name' => 'getch'
+ },
+ {
+ 'type' => 'apr_status_t(*) (void *buf, apr_size_t bufsiz, void *param)',
+ 'name' => 'getstr'
+ },
+ {
+ 'type' => 'apr_status_t(*) (void *param)',
+ 'name' => 'close'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'param'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'unsigned',
+ 'name' => 'line_number'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_conn_keepalive_e',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_cookie_do',
+ 'elts' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'encoded'
+ },
+ {
+ 'type' => 'apr_table_t *',
+ 'name' => 'new_cookies'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'duplicated'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_dbd_t',
+ 'elts' => [
+ {
+ 'type' => 'apr_dbd_t *',
+ 'name' => 'handle'
+ },
+ {
+ 'type' => 'const apr_dbd_driver_t *',
+ 'name' => 'driver'
+ },
+ {
+ 'type' => 'apr_hash_t *',
+ 'name' => 'prepared'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_directive_t',
+ 'elts' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'directive'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'args'
+ },
+ {
+ 'type' => 'ap_directive_t *',
+ 'name' => 'next'
+ },
+ {
+ 'type' => 'ap_directive_t *',
+ 'name' => 'first_child'
+ },
+ {
+ 'type' => 'ap_directive_t *',
+ 'name' => 'parent'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'filename'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'line_num'
+ },
+ {
+ 'type' => 'ap_directive_t *',
+ 'name' => 'last'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_errorlog_format_item',
+ 'elts' => [
+ {
+ 'type' => 'ap_errorlog_handler_fn_t *',
+ 'name' => 'func'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ },
+ {
+ 'type' => 'unsigned int',
+ 'name' => 'flags'
+ },
+ {
+ 'type' => 'unsigned int',
+ 'name' => 'min_loglevel'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_errorlog_handler',
+ 'elts' => [
+ {
+ 'type' => 'ap_errorlog_handler_fn_t *',
+ 'name' => 'func'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'flags'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_errorlog_handler_fn_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_errorlog_info',
+ 'elts' => [
+ {
+ 'type' => 'const server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'const conn_rec *',
+ 'name' => 'c'
+ },
+ {
+ 'type' => 'const request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'const request_rec *',
+ 'name' => 'rmain'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'file'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'line'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'module_index'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'level'
+ },
+ {
+ 'type' => 'apr_status_t',
+ 'name' => 'status'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'using_syslog'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'startup'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'format'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_expr_eval_ctx_t',
+ 'elts' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'err'
+ },
+ {
+ 'type' => 'const ap_expr_info_t *',
+ 'name' => 'info'
+ },
+ {
+ 'type' => 'ap_regmatch_t *',
+ 'name' => 're_pmatch'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 're_nmatch'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 're_source'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'vary_this'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'result_string'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'reclvl'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_expr_info_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_expr_t *',
+ 'name' => 'root_node'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'filename'
+ },
+ {
+ 'type' => 'unsigned int',
+ 'name' => 'line_number'
+ },
+ {
+ 'type' => 'unsigned int',
+ 'name' => 'flags'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'module_index'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_expr_list_func_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_expr_lookup_fn_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_expr_lookup_parms',
+ 'elts' => [
+ {
+ 'type' => 'int',
+ 'name' => 'type'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'flags'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'ptemp'
+ },
+ {
+ 'type' => 'const void **',
+ 'name' => 'func'
+ },
+ {
+ 'type' => 'const void **',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'err'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_expr_op_binary_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_expr_op_unary_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_expr_string_func_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_expr_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_expr_var_func_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_filter_func',
+ 'elts' => [
+ {
+ 'type' => 'ap_out_filter_func',
+ 'name' => 'out_func'
+ },
+ {
+ 'type' => 'ap_in_filter_func',
+ 'name' => 'in_func'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_filter_provider_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_filter_rec_t',
+ 'elts' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'ap_filter_func',
+ 'name' => 'filter_func'
+ },
+ {
+ 'type' => 'ap_init_filter_func',
+ 'name' => 'filter_init_func'
+ },
+ {
+ 'type' => 'ap_filter_rec_t *',
+ 'name' => 'next'
+ },
+ {
+ 'type' => 'ap_filter_provider_t *',
+ 'name' => 'providers'
+ },
+ {
+ 'type' => 'ap_filter_type',
+ 'name' => 'ftype'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'debug'
+ },
+ {
+ 'type' => 'unsigned int',
+ 'name' => 'proto_flags'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_filter_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_filter_rec_t *',
+ 'name' => 'frec'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'ctx'
+ },
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'next'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_filter_type',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_form_pair_t',
+ 'elts' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'value'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_generation_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_in_filter_func',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_init_filter_func',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_input_mode_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_list_provider_groups_t',
+ 'elts' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'provider_group'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'provider_version'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_list_provider_names_t',
+ 'elts' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'provider_name'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_listen_rec',
+ 'elts' => [
+ {
+ 'type' => 'ap_listen_rec *',
+ 'name' => 'next'
+ },
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'sd'
+ },
+ {
+ 'type' => 'apr_sockaddr_t *',
+ 'name' => 'bind_addr'
+ },
+ {
+ 'type' => 'accept_function',
+ 'name' => 'accept_func'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'active'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'protocol'
+ },
+ {
+ 'type' => 'ap_slave_t *',
+ 'name' => 'slave'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_loadavg_t',
+ 'elts' => [
+ {
+ 'type' => 'float',
+ 'name' => 'loadavg'
+ },
+ {
+ 'type' => 'float',
+ 'name' => 'loadavg5'
+ },
+ {
+ 'type' => 'float',
+ 'name' => 'loadavg15'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_method_list_t',
+ 'elts' => [
+ {
+ 'type' => 'apr_int64_t',
+ 'name' => 'method_mask'
+ },
+ {
+ 'type' => 'apr_array_header_t *',
+ 'name' => 'method_list'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_mgmt_item_t',
+ 'elts' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'description'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'ap_mgmt_type_e',
+ 'name' => 'vtype'
+ },
+ {
+ 'type' => 'ap_mgmt_value',
+ 'name' => 'v'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_mgmt_type_e',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_mgmt_value',
+ 'elts' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 's_value'
+ },
+ {
+ 'type' => 'long',
+ 'name' => 'i_value'
+ },
+ {
+ 'type' => 'apr_hash_t *',
+ 'name' => 'h_value'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_module_symbol_t',
+ 'elts' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'module *',
+ 'name' => 'modp'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_mpm_callback_fn_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_out_filter_func',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_pcw_dir_cb_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_pcw_srv_cb_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_pod_t',
+ 'elts' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'pod_in'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'pod_out'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_reclaim_callback_fn_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_regex_t',
+ 'elts' => [
+ {
+ 'type' => 'void *',
+ 'name' => 're_pcre'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 're_nsub'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 're_erroffset'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_regmatch_t',
+ 'elts' => [
+ {
+ 'type' => 'int',
+ 'name' => 'rm_so'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'rm_eo'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_rxplus_t',
+ 'elts' => [
+ {
+ 'type' => 'ap_regex_t',
+ 'name' => 'rx'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'flags'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'subs'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'match'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'nmatch'
+ },
+ {
+ 'type' => 'ap_regmatch_t *',
+ 'name' => 'pmatch'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_sb_handle_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_scoreboard_e',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_slave_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_sload_t',
+ 'elts' => [
+ {
+ 'type' => 'int',
+ 'name' => 'idle'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'busy'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'bytes_served'
+ },
+ {
+ 'type' => 'unsigned long',
+ 'name' => 'access_count'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_slotmem_callback_fn_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_slotmem_instance_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_slotmem_provider_t',
+ 'elts' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'apr_status_t(*)(ap_slotmem_instance_t *s, ap_slotmem_callback_fn_t *func, void *data, apr_pool_t *pool)',
+ 'name' => 'doall'
+ },
+ {
+ 'type' => 'apr_status_t(*)(ap_slotmem_instance_t **inst, const char *name, apr_size_t item_size, unsigned int item_num, ap_slotmem_type_t type, apr_pool_t *pool)',
+ 'name' => 'create'
+ },
+ {
+ 'type' => 'apr_status_t(*)(ap_slotmem_instance_t **inst, const char *name, apr_size_t *item_size, unsigned int *item_num, apr_pool_t *pool)',
+ 'name' => 'attach'
+ },
+ {
+ 'type' => 'apr_status_t(*)(ap_slotmem_instance_t *s, unsigned int item_id, void**mem)',
+ 'name' => 'dptr'
+ },
+ {
+ 'type' => 'apr_status_t(*)(ap_slotmem_instance_t *s, unsigned int item_id, unsigned char *dest, apr_size_t dest_len)',
+ 'name' => 'get'
+ },
+ {
+ 'type' => 'apr_status_t(*)(ap_slotmem_instance_t *slot, unsigned int item_id, unsigned char *src, apr_size_t src_len)',
+ 'name' => 'put'
+ },
+ {
+ 'type' => 'unsigned int(*)(ap_slotmem_instance_t *s)',
+ 'name' => 'num_slots'
+ },
+ {
+ 'type' => 'unsigned int(*)(ap_slotmem_instance_t *s)',
+ 'name' => 'num_free_slots'
+ },
+ {
+ 'type' => 'apr_size_t(*)(ap_slotmem_instance_t *s)',
+ 'name' => 'slot_size'
+ },
+ {
+ 'type' => 'apr_status_t(*)(ap_slotmem_instance_t *s, unsigned int *item_id)',
+ 'name' => 'grab'
+ },
+ {
+ 'type' => 'apr_status_t(*)(ap_slotmem_instance_t *s, unsigned int item_id)',
+ 'name' => 'release'
+ },
+ {
+ 'type' => 'apr_status_t(*)(ap_slotmem_instance_t *s, unsigned int item_id)',
+ 'name' => 'fgrab'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_slotmem_type_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_socache_instance_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_socache_iterator_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_unix_identity_t',
+ 'elts' => [
+ {
+ 'type' => 'uid_t',
+ 'name' => 'uid'
+ },
+ {
+ 'type' => 'gid_t',
+ 'name' => 'gid'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'userdir'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_version_t',
+ 'elts' => [
+ {
+ 'type' => 'int',
+ 'name' => 'major'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'minor'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'patch'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'add_string'
+ }
+ ]
+ },
+ {
+ 'type' => 'ap_vhost_iterate_conn_cb',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_watchdog_callback_fn_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'ap_watchdog_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_access_compat_ap_satisfies_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_ap_authn_cache_store_t
+ ',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_ap_dbd_acquire_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_ap_dbd_cacquire_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_ap_dbd_close_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_ap_dbd_open_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_ap_dbd_prepare_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_ap_find_loaded_module_symbol_t
+ ',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_ap_ident_lookup_t
+ ',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_ap_logio_add_bytes_in_t
+ ',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_ap_logio_add_bytes_out_t
+ ',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_ap_logio_get_last_bytes_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_ap_register_rewrite_mapfunc_t
+ ',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_ap_request_insert_filter_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_ap_request_remove_filter_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_ap_session_get_t
+ ',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_ap_session_load_t
+ ',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_ap_session_save_t
+ ',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_ap_session_set_t
+ ',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_ap_signal_server_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_ap_watchdog_get_instance_t
+ ',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_ap_watchdog_register_callback_t
+ ',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_ap_watchdog_set_callback_interval_t
+ ',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_authn_ap_auth_name_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_authn_ap_auth_type_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_authn_ap_list_provider_names_t
+ ',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_authz_ap_list_provider_names_t
+ ',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_authz_some_auth_required_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_modperl_interp_unselect_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_modperl_thx_interp_get_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_uldap_cache_check_subgroups_t
+ ',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_uldap_cache_checkuserid_t
+ ',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_uldap_cache_compare_t
+ ',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_uldap_cache_comparedn_t
+ ',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_uldap_cache_getuserdn_t
+ ',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_uldap_connection_close_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_uldap_connection_find_t
+ ',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_uldap_connection_open_t
+ ',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_uldap_connection_unbind_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_uldap_ssl_supported_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_xml2enc_charset_t
+ ',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_OFN_xml2enc_filter_t
+ ',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_abortfunc_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_allocator_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_anylock_t',
+ 'elts' => [
+ {
+ 'type' => 'int',
+ 'name' => 'type'
+ },
+ {
+ 'type' => 'union apr_anylock_u_t',
+ 'name' => 'lock'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_array_header_t',
+ 'elts' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'elt_size'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nelts'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nalloc'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'elts'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_brigade_flush',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_bucket',
+ 'elts' => [
+ {
+ 'type' => '_ANON 68',
+ 'name' => 'link'
+ },
+ {
+ 'type' => 'const apr_bucket_type_t *',
+ 'name' => 'type'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'length'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'start'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'void(*)(void *e)',
+ 'name' => 'free'
+ },
+ {
+ 'type' => 'apr_bucket_alloc_t *',
+ 'name' => 'list'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_bucket_alloc_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_bucket_brigade',
+ 'elts' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_bucket_list',
+ 'name' => 'list'
+ },
+ {
+ 'type' => 'apr_bucket_alloc_t *',
+ 'name' => 'bucket_alloc'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_bucket_file',
+ 'elts' => [
+ {
+ 'type' => 'apr_bucket_refcount',
+ 'name' => 'refcount'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'fd'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'readpool'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'can_mmap'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_bucket_heap',
+ 'elts' => [
+ {
+ 'type' => 'apr_bucket_refcount',
+ 'name' => 'refcount'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'base'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'alloc_len'
+ },
+ {
+ 'type' => 'void(*)(void *data)',
+ 'name' => 'free_func'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_bucket_mmap',
+ 'elts' => [
+ {
+ 'type' => 'apr_bucket_refcount',
+ 'name' => 'refcount'
+ },
+ {
+ 'type' => 'apr_mmap_t *',
+ 'name' => 'mmap'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_bucket_pool',
+ 'elts' => [
+ {
+ 'type' => 'apr_bucket_heap',
+ 'name' => 'heap'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'base'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'apr_bucket_alloc_t *',
+ 'name' => 'list'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_bucket_refcount',
+ 'elts' => [
+ {
+ 'type' => 'int',
+ 'name' => 'refcount'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_bucket_structs',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_bucket_type_t',
+ 'elts' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'num_func'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'is_metadata'
+ },
+ {
+ 'type' => 'void(*)(void *data)',
+ 'name' => 'destroy'
+ },
+ {
+ 'type' => 'apr_status_t(*)(apr_bucket *b, const char **str, apr_size_t *len,
+ apr_read_type_e block)',
+ 'name' => 'read'
+ },
+ {
+ 'type' => 'apr_status_t(*)(apr_bucket *e, apr_pool_t *pool)',
+ 'name' => 'setaside'
+ },
+ {
+ 'type' => 'apr_status_t(*)(apr_bucket *e, apr_size_t point)',
+ 'name' => 'split'
+ },
+ {
+ 'type' => 'apr_status_t(*)(apr_bucket *e, apr_bucket **c)',
+ 'name' => 'copy'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_byte_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_child_errfn_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_cmdtype_e',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_crypto_block_key_mode_e',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_crypto_block_key_type_e',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_crypto_block_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_crypto_config_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_crypto_driver_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_crypto_hash_add_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_crypto_hash_finish_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_crypto_hash_init_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_crypto_hash_t',
+ 'elts' => [
+ {
+ 'type' => 'apr_crypto_hash_init_t *',
+ 'name' => 'init'
+ },
+ {
+ 'type' => 'apr_crypto_hash_add_t *',
+ 'name' => 'add'
+ },
+ {
+ 'type' => 'apr_crypto_hash_finish_t *',
+ 'name' => 'finish'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'size'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_crypto_key_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_crypto_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_datatype_e',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_datum_t',
+ 'elts' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'dptr'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'dsize'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_dbd_driver_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_dbd_prepared_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_dbd_results_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_dbd_row_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_dbd_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_dbd_transaction_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_dbd_type_e',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_dbm_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_descriptor',
+ 'elts' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'f'
+ },
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_dev_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_dir_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_dso_handle_sym_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_dso_handle_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_exit_why_e',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_file_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_fileattrs_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_fileperms_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_filetype_e',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_finfo_t',
+ 'elts' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'valid'
+ },
+ {
+ 'type' => 'apr_fileperms_t',
+ 'name' => 'protection'
+ },
+ {
+ 'type' => 'apr_filetype_e',
+ 'name' => 'filetype'
+ },
+ {
+ 'type' => 'apr_uid_t',
+ 'name' => 'user'
+ },
+ {
+ 'type' => 'apr_gid_t',
+ 'name' => 'group'
+ },
+ {
+ 'type' => 'apr_ino_t',
+ 'name' => 'inode'
+ },
+ {
+ 'type' => 'apr_dev_t',
+ 'name' => 'device'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'nlink'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'size'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'csize'
+ },
+ {
+ 'type' => 'apr_time_t',
+ 'name' => 'atime'
+ },
+ {
+ 'type' => 'apr_time_t',
+ 'name' => 'mtime'
+ },
+ {
+ 'type' => 'apr_time_t',
+ 'name' => 'ctime'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'fname'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'filehand'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_getopt_err_fn_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_getopt_option_t',
+ 'elts' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'optch'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'has_arg'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'description'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_getopt_t',
+ 'elts' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'cont'
+ },
+ {
+ 'type' => 'apr_getopt_err_fn_t *',
+ 'name' => 'errfn'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'errarg'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'ind'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'opt'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'reset'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'argc'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'argv'
+ },
+ {
+ 'type' => 'char const *',
+ 'name' => 'place'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'interleave'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'skip_start'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'skip_end'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_gid_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_global_mutex_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_hash_do_callback_fn_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_hash_index_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_hash_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_hashfunc_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_hdtr_t',
+ 'elts' => [
+ {
+ 'type' => 'iovec *',
+ 'name' => 'headers'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'numheaders'
+ },
+ {
+ 'type' => 'iovec *',
+ 'name' => 'trailers'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'numtrailers'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_in_addr_t',
+ 'elts' => [
+ {
+ 'type' => 'in_addr_t',
+ 'name' => 's_addr'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_ino_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_int16_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_int64_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_interface_e',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_interval_time_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_ipsubnet_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_kill_conditions_e',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_ldap_err_t',
+ 'elts' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'reason'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'msg'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'rc'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_ldap_opt_tls_cert_t',
+ 'elts' => [
+ {
+ 'type' => 'int',
+ 'name' => 'type'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'path'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'password'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_ldap_url_desc_t',
+ 'elts' => [
+ {
+ 'type' => 'apr_ldap_url_desc_t *',
+ 'name' => 'lud_next'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'lud_scheme'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'lud_host'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'lud_port'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'lud_dn'
+ },
+ {
+ 'type' => 'char **',
+ 'name' => 'lud_attrs'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'lud_scope'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'lud_filter'
+ },
+ {
+ 'type' => 'char **',
+ 'name' => 'lud_exts'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'lud_crit_exts'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_lockmech_e',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_md4_ctx_t',
+ 'elts' => [
+ {
+ 'type' => 'apr_uint32_t[4]',
+ 'name' => 'state'
+ },
+ {
+ 'type' => 'apr_uint32_t[2]',
+ 'name' => 'count'
+ },
+ {
+ 'type' => 'unsigned char[64]',
+ 'name' => 'buffer'
+ },
+ {
+ 'type' => 'apr_xlate_t *',
+ 'name' => 'xlate'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_md5_ctx_t',
+ 'elts' => [
+ {
+ 'type' => 'apr_uint32_t[4]',
+ 'name' => 'state'
+ },
+ {
+ 'type' => 'apr_uint32_t[2]',
+ 'name' => 'count'
+ },
+ {
+ 'type' => 'unsigned char[64]',
+ 'name' => 'buffer'
+ },
+ {
+ 'type' => 'apr_xlate_t *',
+ 'name' => 'xlate'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_memcache_conn_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_memcache_hash_func',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_memcache_server_func',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_memcache_server_status_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_memcache_server_t',
+ 'elts' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'host'
+ },
+ {
+ 'type' => 'apr_port_t',
+ 'name' => 'port'
+ },
+ {
+ 'type' => 'apr_memcache_server_status_t',
+ 'name' => 'status'
+ },
+ {
+ 'type' => 'apr_reslist_t *',
+ 'name' => 'conns'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_thread_mutex_t *',
+ 'name' => 'lock'
+ },
+ {
+ 'type' => 'apr_time_t',
+ 'name' => 'btime'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_memcache_stats_t',
+ 'elts' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'version'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'pid'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'uptime'
+ },
+ {
+ 'type' => 'apr_time_t',
+ 'name' => 'time'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'pointer_size'
+ },
+ {
+ 'type' => 'apr_time_t',
+ 'name' => 'rusage_user'
+ },
+ {
+ 'type' => 'apr_time_t',
+ 'name' => 'rusage_system'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'curr_items'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'total_items'
+ },
+ {
+ 'type' => 'apr_uint64_t',
+ 'name' => 'bytes'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'curr_connections'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'total_connections'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'connection_structures'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'cmd_get'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'cmd_set'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'get_hits'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'get_misses'
+ },
+ {
+ 'type' => 'apr_uint64_t',
+ 'name' => 'evictions'
+ },
+ {
+ 'type' => 'apr_uint64_t',
+ 'name' => 'bytes_read'
+ },
+ {
+ 'type' => 'apr_uint64_t',
+ 'name' => 'bytes_written'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'limit_maxbytes'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'threads'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_memcache_t',
+ 'elts' => [
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'flags'
+ },
+ {
+ 'type' => 'apr_uint16_t',
+ 'name' => 'nalloc'
+ },
+ {
+ 'type' => 'apr_uint16_t',
+ 'name' => 'ntotal'
+ },
+ {
+ 'type' => 'apr_memcache_server_t **',
+ 'name' => 'live_servers'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'hash_baton'
+ },
+ {
+ 'type' => 'apr_memcache_hash_func',
+ 'name' => 'hash_func'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'server_baton'
+ },
+ {
+ 'type' => 'apr_memcache_server_func',
+ 'name' => 'server_func'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_memcache_value_t',
+ 'elts' => [
+ {
+ 'type' => 'apr_status_t',
+ 'name' => 'status'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'len'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'apr_uint16_t',
+ 'name' => 'flags'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_memnode_t',
+ 'elts' => [
+ {
+ 'type' => 'apr_memnode_t *',
+ 'name' => 'next'
+ },
+ {
+ 'type' => 'apr_memnode_t **',
+ 'name' => 'ref'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'index'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'free_index'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'first_avail'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'endp'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_mmap_t',
+ 'elts' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'cntxt'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'mm'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'size'
+ },
+ {
+ 'type' => '_ANON 66',
+ 'name' => 'link'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_opt_fn_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_os_dir_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_os_dso_handle_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_os_exp_time_t',
+ 'elts' => [
+ {
+ 'type' => 'int',
+ 'name' => 'tm_sec'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'tm_min'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'tm_hour'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'tm_mday'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'tm_mon'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'tm_year'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'tm_wday'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'tm_yday'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'tm_isdst'
+ },
+ {
+ 'type' => 'long int',
+ 'name' => 'tm_gmtoff'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'tm_zone'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_os_file_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_os_global_mutex_t',
+ 'elts' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'apr_proc_mutex_t *',
+ 'name' => 'proc_mutex'
+ },
+ {
+ 'type' => 'apr_thread_mutex_t *',
+ 'name' => 'thread_mutex'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_os_imp_time_t',
+ 'elts' => [
+ {
+ 'type' => '__time_t',
+ 'name' => 'tv_sec'
+ },
+ {
+ 'type' => '__suseconds_t',
+ 'name' => 'tv_usec'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_os_proc_mutex_t',
+ 'elts' => [
+ {
+ 'type' => 'int',
+ 'name' => 'crossproc'
+ },
+ {
+ 'type' => 'pthread_mutex_t *',
+ 'name' => 'pthread_interproc'
+ },
+ {
+ 'type' => 'pthread_mutex_t *',
+ 'name' => 'intraproc'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_os_proc_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_os_shm_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_os_sock_info_t',
+ 'elts' => [
+ {
+ 'type' => 'apr_os_sock_t *',
+ 'name' => 'os_sock'
+ },
+ {
+ 'type' => 'sockaddr *',
+ 'name' => 'local'
+ },
+ {
+ 'type' => 'sockaddr *',
+ 'name' => 'remote'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'family'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'type'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'protocol'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_os_sock_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_os_thread_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_os_threadkey_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_other_child_rec_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_pollcb_cb_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_pollcb_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_pollfd_t',
+ 'elts' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_datatype_e',
+ 'name' => 'desc_type'
+ },
+ {
+ 'type' => 'apr_int16_t',
+ 'name' => 'reqevents'
+ },
+ {
+ 'type' => 'apr_int16_t',
+ 'name' => 'rtnevents'
+ },
+ {
+ 'type' => 'apr_descriptor',
+ 'name' => 'desc'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'client_data'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_pollset_method_e',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_pollset_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_pool_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_port_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_proc_mutex_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_proc_t',
+ 'elts' => [
+ {
+ 'type' => 'pid_t',
+ 'name' => 'pid'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'in'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'out'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'err'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_procattr_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_queue_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_random_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_read_type_e',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_reslist_constructor',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_reslist_destructor',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_reslist_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_rmm_off_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_rmm_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_sdbm_datum_t',
+ 'elts' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'dptr'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'dsize'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_sdbm_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_seek_where_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_sha1_ctx_t',
+ 'elts' => [
+ {
+ 'type' => 'apr_uint32_t[5]',
+ 'name' => 'digest'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'count_lo'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'count_hi'
+ },
+ {
+ 'type' => 'apr_uint32_t[16]',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'local'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_shm_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_short_interval_time_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_shutdown_how_e',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_sigfunc_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_signum_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_sockaddr_t',
+ 'elts' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'hostname'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'servname'
+ },
+ {
+ 'type' => 'apr_port_t',
+ 'name' => 'port'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'family'
+ },
+ {
+ 'type' => 'apr_socklen_t',
+ 'name' => 'salen'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'ipaddr_len'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'addr_str_len'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'ipaddr_ptr'
+ },
+ {
+ 'type' => 'apr_sockaddr_t *',
+ 'name' => 'next'
+ },
+ {
+ 'type' => 'union _ANON 1',
+ 'name' => 'sa'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_socket_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_socklen_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_ssize_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_status_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_strmatch_pattern',
+ 'elts' => [
+ {
+ 'type' => 'const char *(*)(const apr_strmatch_pattern *this_pattern,
+ const char *s, apr_size_t slen)',
+ 'name' => 'compare'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'pattern'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'length'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'context'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_table_entry_t',
+ 'elts' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'val'
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'name' => 'key_checksum'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_table_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_text',
+ 'elts' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'text'
+ },
+ {
+ 'type' => 'apr_text *',
+ 'name' => 'next'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_text_header',
+ 'elts' => [
+ {
+ 'type' => 'apr_text *',
+ 'name' => 'first'
+ },
+ {
+ 'type' => 'apr_text *',
+ 'name' => 'last'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_thread_cond_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_thread_mutex_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_thread_once_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_thread_pool_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_thread_rwlock_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_thread_start_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_thread_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_threadattr_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_threadkey_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_time_exp_t',
+ 'elts' => [
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'tm_usec'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'tm_sec'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'tm_min'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'tm_hour'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'tm_mday'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'tm_mon'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'tm_year'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'tm_wday'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'tm_yday'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'tm_isdst'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'tm_gmtoff'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_time_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_uid_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_uint16_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_uint32_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_uint64_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_uintptr_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_uri_t',
+ 'elts' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'scheme'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'hostinfo'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'user'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'password'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'hostname'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'port_str'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'path'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'query'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'fragment'
+ },
+ {
+ 'type' => 'hostent *',
+ 'name' => 'hostent'
+ },
+ {
+ 'type' => 'apr_port_t',
+ 'name' => 'port'
+ },
+ {
+ 'type' => 'unsigned',
+ 'name' => 'is_initialized'
+ },
+ {
+ 'type' => 'unsigned',
+ 'name' => 'dns_looked_up'
+ },
+ {
+ 'type' => 'unsigned',
+ 'name' => 'dns_resolved'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_uuid_t',
+ 'elts' => [
+ {
+ 'type' => 'unsigned char[16]',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_version_t',
+ 'elts' => [
+ {
+ 'type' => 'int',
+ 'name' => 'major'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'minor'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'patch'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'is_dev'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_vformatter_buff_t',
+ 'elts' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'curpos'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'endpos'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_wait_how_e',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_xlate_t',
+ 'elts' => []
+ },
+ {
+ 'type' => 'apr_xml_attr',
+ 'elts' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'ns'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'value'
+ },
+ {
+ 'type' => 'apr_xml_attr *',
+ 'name' => 'next'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_xml_doc',
+ 'elts' => [
+ {
+ 'type' => 'apr_xml_elem *',
+ 'name' => 'root'
+ },
+ {
+ 'type' => 'apr_array_header_t *',
+ 'name' => 'namespaces'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_xml_elem',
+ 'elts' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'ns'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'lang'
+ },
+ {
+ 'type' => 'apr_text_header',
+ 'name' => 'first_cdata'
+ },
+ {
+ 'type' => 'apr_text_header',
+ 'name' => 'following_cdata'
+ },
+ {
+ 'type' => 'apr_xml_elem *',
+ 'name' => 'parent'
+ },
+ {
+ 'type' => 'apr_xml_elem *',
+ 'name' => 'next'
+ },
+ {
+ 'type' => 'apr_xml_elem *',
+ 'name' => 'first_child'
+ },
+ {
+ 'type' => 'apr_xml_attr *',
+ 'name' => 'attr'
+ },
+ {
+ 'type' => 'apr_xml_elem *',
+ 'name' => 'last_child'
+ },
+ {
+ 'type' => 'apr_xml_ns_scope *',
+ 'name' => 'ns_scope'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'priv'
+ }
+ ]
+ },
+ {
+ 'type' => 'apr_xml_parser',
+ 'elts' => []
+ },
+ {
+ 'type' => 'cmd_parms',
+ 'elts' => [
+ {
+ 'type' => 'void *',
+ 'name' => 'info'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'override'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'override_opts'
+ },
+ {
+ 'type' => 'apr_table_t *',
+ 'name' => 'override_list'
+ },
+ {
+ 'type' => 'apr_int64_t',
+ 'name' => 'limited'
+ },
+ {
+ 'type' => 'apr_array_header_t *',
+ 'name' => 'limited_xmethods'
+ },
+ {
+ 'type' => 'ap_method_list_t *',
+ 'name' => 'xlimited'
+ },
+ {
+ 'type' => 'ap_configfile_t *',
+ 'name' => 'config_file'
+ },
+ {
+ 'type' => 'ap_directive_t *',
+ 'name' => 'directive'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'temp_pool'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 'server'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'path'
+ },
+ {
+ 'type' => 'const command_rec *',
+ 'name' => 'cmd'
+ },
+ {
+ 'type' => 'ap_conf_vector_t *',
+ 'name' => 'context'
+ },
+ {
+ 'type' => 'const ap_directive_t *',
+ 'name' => 'err_directive'
+ }
+ ]
+ },
+ {
+ 'type' => 'command_rec',
+ 'elts' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'cmd_func',
+ 'name' => 'func'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'cmd_data'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'req_override'
+ },
+ {
+ 'type' => 'enum cmd_how',
+ 'name' => 'args_how'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'errmsg'
+ }
+ ]
+ },
+ {
+ 'type' => 'conn_rec',
+ 'elts' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 'base_server'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'vhost_lookup_data'
+ },
+ {
+ 'type' => 'apr_sockaddr_t *',
+ 'name' => 'local_addr'
+ },
+ {
+ 'type' => 'apr_sockaddr_t *',
+ 'name' => 'client_addr'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'client_ip'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'remote_host'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'remote_logname'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'local_ip'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'local_host'
+ },
+ {
+ 'type' => 'long',
+ 'name' => 'id'
+ },
+ {
+ 'type' => 'ap_conf_vector_t *',
+ 'name' => 'conn_config'
+ },
+ {
+ 'type' => 'apr_table_t *',
+ 'name' => 'notes'
+ },
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'input_filters'
+ },
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'output_filters'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'sbh'
+ },
+ {
+ 'type' => 'apr_bucket_alloc_t *',
+ 'name' => 'bucket_alloc'
+ },
+ {
+ 'type' => 'conn_state_t *',
+ 'name' => 'cs'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'data_in_input_filters'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'data_in_output_filters'
+ },
+ {
+ 'type' => 'unsigned int',
+ 'name' => 'clogging_input_filters'
+ },
+ {
+ 'type' => 'signed int',
+ 'name' => 'double_reverse'
+ },
+ {
+ 'type' => 'unsigned',
+ 'name' => 'aborted'
+ },
+ {
+ 'type' => 'ap_conn_keepalive_e',
+ 'name' => 'keepalive'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'keepalives'
+ },
+ {
+ 'type' => 'const struct ap_logconf *',
+ 'name' => 'log'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'log_id'
+ },
+ {
+ 'type' => 'apr_thread_t *',
+ 'name' => 'current_thread'
+ }
+ ]
+ },
+ {
+ 'type' => 'core_net_rec',
+ 'elts' => []
+ },
+ {
+ 'type' => 'htaccess_result',
+ 'elts' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'dir'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'override'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'override_opts'
+ },
+ {
+ 'type' => 'apr_table_t *',
+ 'name' => 'override_list'
+ },
+ {
+ 'type' => 'ap_conf_vector_t *',
+ 'name' => 'htaccess'
+ },
+ {
+ 'type' => 'const struct htaccess_result *',
+ 'name' => 'next'
+ }
+ ]
+ },
+ {
+ 'type' => 'modperl_uri_t',
+ 'elts' => [
+ {
+ 'type' => 'apr_uri_t',
+ 'name' => 'uri'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'path_info'
+ }
+ ]
+ },
+ {
+ 'type' => 'module',
+ 'elts' => [
+ {
+ 'type' => 'int',
+ 'name' => 'version'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'minor_version'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'module_index'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dynamic_load_handle'
+ },
+ {
+ 'type' => 'module_struct *',
+ 'name' => 'next'
+ },
+ {
+ 'type' => 'unsigned long',
+ 'name' => 'magic'
+ },
+ {
+ 'type' => 'void(*) (process_rec *process)',
+ 'name' => 'rewrite_args'
+ },
+ {
+ 'type' => 'void *(*) (apr_pool_t *p, char *dir)',
+ 'name' => 'create_dir_config'
+ },
+ {
+ 'type' => 'void *(*) (apr_pool_t *p, void *base_conf, void *new_conf)',
+ 'name' => 'merge_dir_config'
+ },
+ {
+ 'type' => 'void *(*) (apr_pool_t *p, server_rec *s)',
+ 'name' => 'create_server_config'
+ },
+ {
+ 'type' => 'void *(*) (apr_pool_t *p, void *base_conf,
+ void *new_conf)',
+ 'name' => 'merge_server_config'
+ },
+ {
+ 'type' => 'const command_rec *',
+ 'name' => 'cmds'
+ },
+ {
+ 'type' => 'void(*) (apr_pool_t *p)',
+ 'name' => 'register_hooks'
+ }
+ ]
+ },
+ {
+ 'type' => 'piped_log',
+ 'elts' => []
+ },
+ {
+ 'type' => 'process_rec',
+ 'elts' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pconf'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'short_name'
+ },
+ {
+ 'type' => 'const char * const *',
+ 'name' => 'argv'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'argc'
+ }
+ ]
+ },
+ {
+ 'type' => 'request_rec',
+ 'elts' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'connection'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 'server'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'next'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'prev'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'main'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'the_request'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'assbackwards'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'proxyreq'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'header_only'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'proto_num'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'protocol'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'hostname'
+ },
+ {
+ 'type' => 'apr_time_t',
+ 'name' => 'request_time'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'status_line'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'status'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'method_number'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'method'
+ },
+ {
+ 'type' => 'apr_int64_t',
+ 'name' => 'allowed'
+ },
+ {
+ 'type' => 'apr_array_header_t *',
+ 'name' => 'allowed_xmethods'
+ },
+ {
+ 'type' => 'ap_method_list_t *',
+ 'name' => 'allowed_methods'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'sent_bodyct'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'bytes_sent'
+ },
+ {
+ 'type' => 'apr_time_t',
+ 'name' => 'mtime'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'range'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'clength'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'chunked'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'read_body'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'read_chunked'
+ },
+ {
+ 'type' => 'unsigned',
+ 'name' => 'expecting_100'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'kept_body'
+ },
+ {
+ 'type' => 'apr_table_t *',
+ 'name' => 'body_table'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'remaining'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'read_length'
+ },
+ {
+ 'type' => 'apr_table_t *',
+ 'name' => 'headers_in'
+ },
+ {
+ 'type' => 'apr_table_t *',
+ 'name' => 'headers_out'
+ },
+ {
+ 'type' => 'apr_table_t *',
+ 'name' => 'err_headers_out'
+ },
+ {
+ 'type' => 'apr_table_t *',
+ 'name' => 'subprocess_env'
+ },
+ {
+ 'type' => 'apr_table_t *',
+ 'name' => 'notes'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'content_type'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'handler'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'content_encoding'
+ },
+ {
+ 'type' => 'apr_array_header_t *',
+ 'name' => 'content_languages'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'vlist_validator'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'user'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'ap_auth_type'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'unparsed_uri'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'uri'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'filename'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'canonical_filename'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'path_info'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'args'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'used_path_info'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'eos_sent'
+ },
+ {
+ 'type' => 'ap_conf_vector_t *',
+ 'name' => 'per_dir_config'
+ },
+ {
+ 'type' => 'ap_conf_vector_t *',
+ 'name' => 'request_config'
+ },
+ {
+ 'type' => 'const struct ap_logconf *',
+ 'name' => 'log'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'log_id'
+ },
+ {
+ 'type' => 'const struct htaccess_result *',
+ 'name' => 'htaccess'
+ },
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'output_filters'
+ },
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'input_filters'
+ },
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'proto_output_filters'
+ },
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'proto_input_filters'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'no_cache'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'no_local_copy'
+ },
+ {
+ 'type' => 'apr_thread_mutex_t *',
+ 'name' => 'invoke_mtx'
+ },
+ {
+ 'type' => 'apr_uri_t',
+ 'name' => 'parsed_uri'
+ },
+ {
+ 'type' => 'apr_finfo_t',
+ 'name' => 'finfo'
+ },
+ {
+ 'type' => 'apr_sockaddr_t *',
+ 'name' => 'useragent_addr'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'useragent_ip'
+ }
+ ]
+ },
+ {
+ 'type' => 'server_addr_rec',
+ 'elts' => [
+ {
+ 'type' => 'server_addr_rec *',
+ 'name' => 'next'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'virthost'
+ },
+ {
+ 'type' => 'apr_sockaddr_t *',
+ 'name' => 'host_addr'
+ },
+ {
+ 'type' => 'apr_port_t',
+ 'name' => 'host_port'
+ }
+ ]
+ },
+ {
+ 'type' => 'server_rec',
+ 'elts' => [
+ {
+ 'type' => 'process_rec *',
+ 'name' => 'process'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 'next'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'error_fname'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'error_log'
+ },
+ {
+ 'type' => 'ap_logconf',
+ 'name' => 'log'
+ },
+ {
+ 'type' => 'ap_conf_vector_t *',
+ 'name' => 'module_config'
+ },
+ {
+ 'type' => 'ap_conf_vector_t *',
+ 'name' => 'lookup_defaults'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'defn_name'
+ },
+ {
+ 'type' => 'unsigned',
+ 'name' => 'defn_line_number'
+ },
+ {
+ 'type' => 'char',
+ 'name' => 'is_virtual'
+ },
+ {
+ 'type' => 'apr_port_t',
+ 'name' => 'port'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'server_scheme'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'server_admin'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'server_hostname'
+ },
+ {
+ 'type' => 'server_addr_rec *',
+ 'name' => 'addrs'
+ },
+ {
+ 'type' => 'apr_interval_time_t',
+ 'name' => 'timeout'
+ },
+ {
+ 'type' => 'apr_interval_time_t',
+ 'name' => 'keep_alive_timeout'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'keep_alive_max'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'keep_alive'
+ },
+ {
+ 'type' => 'apr_array_header_t *',
+ 'name' => 'names'
+ },
+ {
+ 'type' => 'apr_array_header_t *',
+ 'name' => 'wild_names'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'path'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'pathlen'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'limit_req_line'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'limit_req_fieldsize'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'limit_req_fields'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'context'
+ }
+ ]
+ },
+ {
+ 'type' => 'session_rec',
+ 'elts' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'apr_uuid_t *',
+ 'name' => 'uuid'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'remote_user'
+ },
+ {
+ 'type' => 'apr_table_t *',
+ 'name' => 'entries'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'encoded'
+ },
+ {
+ 'type' => 'apr_time_t',
+ 'name' => 'expiry'
+ },
+ {
+ 'type' => 'long',
+ 'name' => 'maxage'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'dirty'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'cached'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'written'
+ }
+ ]
+ },
+ {
+ 'type' => 'subrequest_rec',
+ 'elts' => []
+ },
+ {
+ 'type' => 'unixd_config_rec',
+ 'elts' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'user_name'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'group_name'
+ },
+ {
+ 'type' => 'uid_t',
+ 'name' => 'user_id'
+ },
+ {
+ 'type' => 'gid_t',
+ 'name' => 'group_id'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'suexec_enabled'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'chroot_dir'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'suexec_disabled_reason'
+ }
+ ]
+ },
+ {
+ 'type' => 'modperl_interp_t',
+ 'elts' => [
+ {
+ 'type' => 'modperl_interp_pool_t *',
+ 'name' => 'mip'
+ },
+ {
+ 'type' => 'PerlInterpreter *',
+ 'name' => 'perl'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'num_requests'
+ },
+ {
+ 'type' => 'U8',
+ 'name' => 'flags'
+ },
+ {
+ 'type' => 'modperl_config_con_t *',
+ 'name' => 'ccfg'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'refcnt'
+ },
+ {
+ 'type' => 'unsigned long',
+ 'name' => 'tid'
+ }
+ ]
+ },
+ {
+ 'type' => 'modperl_interp_pool_t',
+ 'elts' => [
+ {
+ 'type' => 'server_rec *',
+ 'name' => 'server'
+ },
+ {
+ 'type' => 'modperl_tipool_t *',
+ 'name' => 'tipool'
+ },
+ {
+ 'type' => 'modperl_tipool_config_t *',
+ 'name' => 'tipool_cfg'
+ },
+ {
+ 'type' => 'modperl_interp_t *',
+ 'name' => 'parent'
+ }
+ ]
+ },
+ {
+ 'type' => 'modperl_tipool_t',
+ 'elts' => [
+ {
+ 'type' => 'perl_mutex',
+ 'name' => 'tiplock'
+ },
+ {
+ 'type' => 'perl_cond',
+ 'name' => 'available'
+ },
+ {
+ 'type' => 'modperl_list_t *',
+ 'name' => 'idle'
+ },
+ {
+ 'type' => 'modperl_list_t *',
+ 'name' => 'busy'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'in_use'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'size'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'modperl_tipool_config_t *',
+ 'name' => 'cfg'
+ },
+ {
+ 'type' => 'modperl_tipool_vtbl_t *',
+ 'name' => 'func'
+ }
+ ]
+ },
+ {
+ 'type' => 'modperl_tipool_config_t',
+ 'elts' => [
+ {
+ 'type' => 'int',
+ 'name' => 'start'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'min_spare'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'max_spare'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'max'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'max_requests'
+ }
+ ]
+ }
+];
+
+
+1;
diff --git a/xs/tables/current24/ModPerl/FunctionTable.pm b/xs/tables/current24/ModPerl/FunctionTable.pm
new file mode 100644
index 0000000..0aeb2dc
--- /dev/null
+++ b/xs/tables/current24/ModPerl/FunctionTable.pm
@@ -0,0 +1,8570 @@
+package ModPerl::FunctionTable;
+
+# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+# ! WARNING: generated by ModPerl::ParseSource/0.01
+# ! Mon Jul 1 12:38:19 2013
+# ! do NOT edit, any changes will be lost !
+# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+$ModPerl::FunctionTable = [
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_access_handler',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'modperl_apr_array_header2avrv',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_array_header_t *',
+ 'name' => 'array'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_authen_handler',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_authz_handler',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_array_header_t *',
+ 'name' => 'modperl_avrv2apr_array_header',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'avrv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_brigade_dump',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'bb'
+ },
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'file'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'modperl_bucket_sv_create',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_bucket_alloc_t *',
+ 'name' => 'list'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'sv'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'offset'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'len'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_callback',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'modperl_handler_t *',
+ 'name' => 'handler'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'AV *',
+ 'name' => 'args'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_callback_connection',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'idx'
+ },
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ },
+ {
+ 'type' => 'modperl_hook_run_mode_e',
+ 'name' => 'run_mode'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_callback_files',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'idx'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pconf'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'plog'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'ptemp'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'modperl_hook_run_mode_e',
+ 'name' => 'run_mode'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_callback_per_dir',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'idx'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'modperl_hook_run_mode_e',
+ 'name' => 'run_mode'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_callback_per_srv',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'idx'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'modperl_hook_run_mode_e',
+ 'name' => 'run_mode'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_callback_pre_connection',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'idx'
+ },
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'csd'
+ },
+ {
+ 'type' => 'modperl_hook_run_mode_e',
+ 'name' => 'run_mode'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_callback_process',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'idx'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'modperl_hook_run_mode_e',
+ 'name' => 'run_mode'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_callback_run_handlers',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'idx'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'type'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pconf'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'plog'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'ptemp'
+ },
+ {
+ 'type' => 'modperl_hook_run_mode_e',
+ 'name' => 'run_mode'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_cgi_header_parse',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'buffer'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'len'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'body'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_child_init_handler',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'modperl_cleanup_data_t *',
+ 'name' => 'modperl_cleanup_data_new',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_END',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'mconfig'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_access_handlers',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_add_var',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'mconfig'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg1'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg2'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_authen_handlers',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_authn_provider',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'mconfig'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg1'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg2'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_authz_handlers',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_authz_provider',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'mconfig'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg1'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg2'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_child_exit_handlers',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_child_init_handlers',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_cleanup_handlers',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_config_requires',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'mconfig'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_fixup_handlers',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_header_parser_handlers',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_init_handlers',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'mconfig'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_input_filter_handlers',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_interp_max',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'mconfig'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_interp_max_requests',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'mconfig'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_interp_max_spare',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'mconfig'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_interp_min_spare',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'mconfig'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_interp_scope',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'mconfig'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_interp_start',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'mconfig'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_load_module',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'mconfig'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_log_handlers',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_map_to_storage_handlers',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_modules',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'mconfig'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_open_logs_handlers',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_options',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'mconfig'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_output_filter_handlers',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_pass_env',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'mconfig'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_perl',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'mconfig'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_perldo',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'mconfig'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_pod',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'mconfig'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_pod_cut',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'mconfig'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_post_config_handlers',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_post_config_requires',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'mconfig'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_post_read_request_handlers',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_pre_connection_handlers',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_process_connection_handlers',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'modperl_cmd_push_filter_handlers',
+ 'args' => [
+ {
+ 'type' => 'MpAV **',
+ 'name' => 'handlers'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'modperl_cmd_push_handlers',
+ 'args' => [
+ {
+ 'type' => 'MpAV **',
+ 'name' => 'handlers'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_requires',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'mconfig'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_response_handlers',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_set_env',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'mconfig'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg1'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg2'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_set_input_filter',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'mconfig'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_set_output_filter',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'mconfig'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_set_var',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'mconfig'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg1'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg2'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_switches',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'mconfig'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_trace',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'mconfig'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_trans_handlers',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_cmd_type_handlers',
+ 'args' => [
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'dummy'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'U16 *',
+ 'name' => 'modperl_code_attrs',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'CV *',
+ 'name' => 'cv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_config_apply_PerlModule',
+ 'args' => [
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'modperl_config_srv_t *',
+ 'name' => 'scfg'
+ },
+ {
+ 'type' => 'PerlInterpreter *',
+ 'name' => 'perl'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_config_apply_PerlPostConfigRequire',
+ 'args' => [
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'modperl_config_srv_t *',
+ 'name' => 'scfg'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_config_apply_PerlRequire',
+ 'args' => [
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'modperl_config_srv_t *',
+ 'name' => 'scfg'
+ },
+ {
+ 'type' => 'PerlInterpreter *',
+ 'name' => 'perl'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'modperl_config_con_t *',
+ 'name' => 'modperl_config_con_new',
+ 'args' => [
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void *',
+ 'name' => 'modperl_config_dir_create',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'dir'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void *',
+ 'name' => 'modperl_config_dir_merge',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'basev'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'addv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'modperl_config_dir_t *',
+ 'name' => 'modperl_config_dir_new',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_config_insert',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'ptmp'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'override'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'path'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'override_options'
+ },
+ {
+ 'type' => 'ap_conf_vector_t *',
+ 'name' => 'conf'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'lines'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_config_insert_parms',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'lines'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_config_insert_request',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'lines'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'override'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'path'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'override_options'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_config_insert_server',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'lines'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_config_is_perl_option_enabled',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'modperl_config_req_cleanup',
+ 'args' => [
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'modperl_config_req_t *',
+ 'name' => 'modperl_config_req_new',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'modperl_config_request_cleanup',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char **',
+ 'name' => 'modperl_config_srv_argv_init',
+ 'args' => [
+ {
+ 'type' => 'modperl_config_srv_t *',
+ 'name' => 'scfg'
+ },
+ {
+ 'type' => 'int *',
+ 'name' => 'argc'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void *',
+ 'name' => 'modperl_config_srv_create',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void *',
+ 'name' => 'modperl_config_srv_merge',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'basev'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'addv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'modperl_config_srv_t *',
+ 'name' => 'modperl_config_srv_new',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_const_compile',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'classname'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'arg'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char **',
+ 'name' => 'modperl_constants_group_lookup_apache2_const',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char **',
+ 'name' => 'modperl_constants_group_lookup_apr_const',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char **',
+ 'name' => 'modperl_constants_group_lookup_modperl',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'modperl_constants_lookup_apache2_const',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'modperl_constants_lookup_apr_const',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'modperl_constants_lookup_modperl',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_croak',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_status_t',
+ 'name' => 'rc'
+ },
+ {
+ 'type' => 'const char*',
+ 'name' => 'func'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'unsigned long',
+ 'name' => 'modperl_debug_level',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'modperl_dir_config',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'sv_val'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_env_clear',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_env_configure_request_dir',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_env_configure_request_srv',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_env_configure_server',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_env_default_populate',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_env_hash_keys',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_env_hv_store',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'val'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_env_init',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_env_request_populate',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_env_request_tie',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_env_request_unpopulate',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_env_request_untie',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_env_sync_dir_env_hash2table',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'modperl_config_dir_t *',
+ 'name' => 'dcfg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_env_sync_srv_env_hash2table',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'modperl_config_srv_t *',
+ 'name' => 'scfg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_env_unload',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'modperl_error_strerror',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_status_t',
+ 'name' => 'rc'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_errsv',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'status'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_errsv_prepend',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'pat'
+ },
+ {
+ 'type' => '...',
+ 'name' => 'arg2'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'modperl_file2package',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'file'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'U16 *',
+ 'name' => 'modperl_filter_attributes',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'package'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'cvrv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'modperl_filter_t *',
+ 'name' => 'modperl_filter_mg_get',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'obj'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'modperl_filter_t *',
+ 'name' => 'modperl_filter_new',
+ 'args' => [
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'f'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'bb'
+ },
+ {
+ 'type' => 'modperl_filter_mode_e',
+ 'name' => 'mode'
+ },
+ {
+ 'type' => 'ap_input_mode_t',
+ 'name' => 'input_mode'
+ },
+ {
+ 'type' => 'apr_read_type_e',
+ 'name' => 'block'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'readbytes'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_filter_resolve_init_handler',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'modperl_handler_t *',
+ 'name' => 'handler'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_filter_runtime_add',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'modperl_filter_mode_e',
+ 'name' => 'mode'
+ },
+ {
+ 'type' => 'modperl_filter_add_t',
+ 'name' => 'addfunc'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'callback'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'type'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_fixup_handler',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'U32',
+ 'name' => 'modperl_flags_lookup_dir',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'str'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'U32',
+ 'name' => 'modperl_flags_lookup_srv',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'str'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void *',
+ 'name' => 'modperl_get_perl_module_config',
+ 'args' => [
+ {
+ 'type' => 'ap_conf_vector_t *',
+ 'name' => 'cv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_global_anon_cnt_init',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_global_anon_cnt_next',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'void *',
+ 'name' => 'modperl_global_get',
+ 'args' => [
+ {
+ 'type' => 'modperl_global_t *',
+ 'name' => 'global'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_pool_t *',
+ 'name' => 'modperl_global_get_pconf',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'server_rec *',
+ 'name' => 'modperl_global_get_server_rec',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_global_init',
+ 'args' => [
+ {
+ 'type' => 'modperl_global_t *',
+ 'name' => 'global'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_global_init_pconf',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pconf'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_global_init_server_rec',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'server_rec * server_rec',
+ 'name' => 'arg1'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_global_lock',
+ 'args' => [
+ {
+ 'type' => 'modperl_global_t *',
+ 'name' => 'global'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_global_lock_pconf',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_global_lock_server_rec',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'request_rec *',
+ 'name' => 'modperl_global_request',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'svr'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_global_request_cfg_set',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_global_request_obj_set',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'svr'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_global_request_set',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_global_set',
+ 'args' => [
+ {
+ 'type' => 'modperl_global_t *',
+ 'name' => 'global'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_global_set_pconf',
+ 'args' => [
+ {
+ 'type' => 'void *',
+ 'name' => 'arg0'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_global_set_server_rec',
+ 'args' => [
+ {
+ 'type' => 'void *',
+ 'name' => 'arg0'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_global_unlock',
+ 'args' => [
+ {
+ 'type' => 'modperl_global_t *',
+ 'name' => 'global'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_global_unlock_pconf',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_global_unlock_server_rec',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_handler_anon_add',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'modperl_mgv_t *',
+ 'name' => 'anon'
+ },
+ {
+ 'type' => 'CV *',
+ 'name' => 'cv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'CV *',
+ 'name' => 'modperl_handler_anon_get',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'modperl_mgv_t *',
+ 'name' => 'anon'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_handler_anon_init',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'modperl_mgv_t *',
+ 'name' => 'modperl_handler_anon_next',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'MpAV *',
+ 'name' => 'modperl_handler_array_merge',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'MpAV *',
+ 'name' => 'base_a'
+ },
+ {
+ 'type' => 'MpAV *',
+ 'name' => 'add_a'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_handler_desc_connection',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'idx'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_handler_desc_files',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'idx'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_handler_desc_per_dir',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'idx'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_handler_desc_per_srv',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'idx'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_handler_desc_pre_connection',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'idx'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_handler_desc_process',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'idx'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'modperl_handler_t *',
+ 'name' => 'modperl_handler_dup',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'modperl_handler_t *',
+ 'name' => 'h'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_handler_equal',
+ 'args' => [
+ {
+ 'type' => 'modperl_handler_t *',
+ 'name' => 'h1'
+ },
+ {
+ 'type' => 'modperl_handler_t *',
+ 'name' => 'h2'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'MpAV **',
+ 'name' => 'modperl_handler_get_handlers',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'modperl_handler_action_e',
+ 'name' => 'action'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_handler_lookup',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'int *',
+ 'name' => 'type'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'MpAV **',
+ 'name' => 'modperl_handler_lookup_handlers',
+ 'args' => [
+ {
+ 'type' => 'modperl_config_dir_t *',
+ 'name' => 'dcfg'
+ },
+ {
+ 'type' => 'modperl_config_srv_t *',
+ 'name' => 'scfg'
+ },
+ {
+ 'type' => 'modperl_config_req_t *',
+ 'name' => 'rcfg'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'type'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'idx'
+ },
+ {
+ 'type' => 'modperl_handler_action_e',
+ 'name' => 'action'
+ },
+ {
+ 'type' => 'const char **',
+ 'name' => 'desc'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_handler_make_args',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'AV **',
+ 'name' => 'avp'
+ },
+ {
+ 'type' => '...',
+ 'name' => 'arg2'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_handler_name',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'modperl_handler_t *',
+ 'name' => 'handler'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'modperl_handler_t *',
+ 'name' => 'modperl_handler_new',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'modperl_handler_t *',
+ 'name' => 'modperl_handler_new_from_sv',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'sv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_handler_perl_add_handlers',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'sv'
+ },
+ {
+ 'type' => 'modperl_handler_action_e',
+ 'name' => 'action'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'modperl_handler_perl_get_handlers',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'MpAV **',
+ 'name' => 'handp'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_handler_push_handlers',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'MpAV *',
+ 'name' => 'handlers'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'sv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_handler_resolve',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'modperl_handler_t **',
+ 'name' => 'handp'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_hash_seed_init',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_hash_seed_set',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'modperl_hash_tie',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'classname'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'tsv'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void *',
+ 'name' => 'modperl_hash_tied_object',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'classname'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'tsv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'modperl_hash_tied_object_rv',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'classname'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'tsv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_header_parser_handler',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_hook_init',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pconf'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'plog'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'ptemp'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_hook_pre_config',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'plog'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'ptemp'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_init',
+ 'args' => [
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_init_globals',
+ 'args' => [
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pconf'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_init_vhost',
+ 'args' => [
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 'base_server'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_input_filter_add_connection',
+ 'args' => [
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_input_filter_add_request',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'modperl_input_filter_flush',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'modperl_filter_t *',
+ 'name' => 'filter'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'modperl_input_filter_handler',
+ 'args' => [
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'f'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'bb'
+ },
+ {
+ 'type' => 'ap_input_mode_t',
+ 'name' => 'input_mode'
+ },
+ {
+ 'type' => 'apr_read_type_e',
+ 'name' => 'block'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'readbytes'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'modperl_input_filter_read',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'modperl_filter_t *',
+ 'name' => 'filter'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'buffer'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'wanted'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'modperl_input_filter_write',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'modperl_filter_t *',
+ 'name' => 'filter'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'len'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'modperl_interp_cleanup',
+ 'args' => [
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_interp_clone_init',
+ 'args' => [
+ {
+ 'type' => 'modperl_interp_t *',
+ 'name' => 'interp'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_interp_destroy',
+ 'args' => [
+ {
+ 'type' => 'modperl_interp_t *',
+ 'name' => 'interp'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'modperl_interp_t *',
+ 'name' => 'modperl_interp_get',
+ 'args' => [
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_interp_init',
+ 'args' => [
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'PerlInterpreter *',
+ 'name' => 'perl'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_interp_mip_walk',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter *',
+ 'name' => 'current_perl'
+ },
+ {
+ 'type' => 'PerlInterpreter *',
+ 'name' => 'parent_perl'
+ },
+ {
+ 'type' => 'modperl_interp_pool_t *',
+ 'name' => 'mip'
+ },
+ {
+ 'type' => 'modperl_interp_mip_walker_t',
+ 'name' => 'walker'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_interp_mip_walk_servers',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter *',
+ 'name' => 'current_perl'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 'base_server'
+ },
+ {
+ 'type' => 'modperl_interp_mip_walker_t',
+ 'name' => 'walker'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'modperl_interp_t *',
+ 'name' => 'modperl_interp_new',
+ 'args' => [
+ {
+ 'type' => 'modperl_interp_pool_t *',
+ 'name' => 'mip'
+ },
+ {
+ 'type' => 'PerlInterpreter *',
+ 'name' => 'perl'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'modperl_interp_pool_destroy',
+ 'args' => [
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'modperl_interp_t *',
+ 'name' => 'modperl_interp_pool_get',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'modperl_interp_t *',
+ 'name' => 'modperl_interp_pool_select',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_interp_pool_set',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'modperl_interp_t *',
+ 'name' => 'interp'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'cleanup'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_interp_scope_desc',
+ 'args' => [
+ {
+ 'type' => 'modperl_interp_scope_e',
+ 'name' => 'scope'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'modperl_interp_t *',
+ 'name' => 'modperl_interp_select',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'modperl_interp_unselect',
+ 'args' => [
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_io_apache_init',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_io_handle_tie',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'GV *',
+ 'name' => 'handle'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'classname'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'ptr'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_io_handle_tied',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'GV *',
+ 'name' => 'handle'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'classname'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_io_handle_untie',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'GV *',
+ 'name' => 'handle'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'GV *',
+ 'name' => 'modperl_io_perlio_override_stdin',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'GV *',
+ 'name' => 'modperl_io_perlio_override_stdout',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_io_perlio_restore_stdin',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'GV *',
+ 'name' => 'handle'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_io_perlio_restore_stdout',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'GV *',
+ 'name' => 'handle'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'GV *',
+ 'name' => 'modperl_io_tie_stdin',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'GV *',
+ 'name' => 'modperl_io_tie_stdout',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_is_running',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'modperl_list_t *',
+ 'name' => 'modperl_list_append',
+ 'args' => [
+ {
+ 'type' => 'modperl_list_t *',
+ 'name' => 'list'
+ },
+ {
+ 'type' => 'modperl_list_t *',
+ 'name' => 'new_list'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'modperl_list_t *',
+ 'name' => 'modperl_list_first',
+ 'args' => [
+ {
+ 'type' => 'modperl_list_t *',
+ 'name' => 'list'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'modperl_list_t *',
+ 'name' => 'modperl_list_last',
+ 'args' => [
+ {
+ 'type' => 'modperl_list_t *',
+ 'name' => 'list'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'modperl_list_t *',
+ 'name' => 'modperl_list_new',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'modperl_list_t *',
+ 'name' => 'modperl_list_prepend',
+ 'args' => [
+ {
+ 'type' => 'modperl_list_t *',
+ 'name' => 'list'
+ },
+ {
+ 'type' => 'modperl_list_t *',
+ 'name' => 'new_list'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'modperl_list_t *',
+ 'name' => 'modperl_list_remove',
+ 'args' => [
+ {
+ 'type' => 'modperl_list_t *',
+ 'name' => 'list'
+ },
+ {
+ 'type' => 'modperl_list_t *',
+ 'name' => 'rlist'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'modperl_list_t *',
+ 'name' => 'modperl_list_remove_data',
+ 'args' => [
+ {
+ 'type' => 'modperl_list_t *',
+ 'name' => 'list'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'modperl_list_t **',
+ 'name' => 'listp'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_log_handler',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_map_to_storage_handler',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_mgv_append',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'modperl_mgv_t *',
+ 'name' => 'symbol'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'modperl_mgv_as_string',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'modperl_mgv_t *',
+ 'name' => 'symbol'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'package'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'modperl_mgv_t *',
+ 'name' => 'modperl_mgv_compile',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_mgv_equal',
+ 'args' => [
+ {
+ 'type' => 'modperl_mgv_t *',
+ 'name' => 'mgv1'
+ },
+ {
+ 'type' => 'modperl_mgv_t *',
+ 'name' => 'mgv2'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_mgv_hash_handlers',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'modperl_mgv_t *',
+ 'name' => 'modperl_mgv_last',
+ 'args' => [
+ {
+ 'type' => 'modperl_mgv_t *',
+ 'name' => 'symbol'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'modperl_mgv_last_name',
+ 'args' => [
+ {
+ 'type' => 'modperl_mgv_t *',
+ 'name' => 'symbol'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'GV *',
+ 'name' => 'modperl_mgv_lookup',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'modperl_mgv_t *',
+ 'name' => 'symbol'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'GV *',
+ 'name' => 'modperl_mgv_lookup_autoload',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'modperl_mgv_t *',
+ 'name' => 'symbol'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'modperl_mgv_t *',
+ 'name' => 'modperl_mgv_new',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_mgv_require_module',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'modperl_mgv_t *',
+ 'name' => 'symbol'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_mgv_resolve',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'modperl_handler_t *',
+ 'name' => 'handler'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'logfailure'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_modglobal_hash_keys',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'modperl_modglobal_key_t *',
+ 'name' => 'modperl_modglobal_lookup',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_module_add',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'mod_cmds'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'modperl_module_config_get_obj',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'pmodule'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'ap_conf_vector_t *',
+ 'name' => 'v'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'PTR_TBL_t *',
+ 'name' => 'modperl_module_config_table_get',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'create'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_module_config_table_set',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'PTR_TBL_t *',
+ 'name' => 'table'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'modperl_newSVsv_obj',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'stashsv'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'obj'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_open_logs_handler',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pconf'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'plog'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'ptemp'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'modperl_options_t *',
+ 'name' => 'modperl_options_merge',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'modperl_options_t *',
+ 'name' => 'base'
+ },
+ {
+ 'type' => 'modperl_options_t *new',
+ 'name' => 'arg2'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'modperl_options_t *',
+ 'name' => 'modperl_options_new',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'type'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'modperl_options_set',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'modperl_options_t *',
+ 'name' => 'o'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_output_filter_add_connection',
+ 'args' => [
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_output_filter_add_request',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'modperl_output_filter_flush',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'modperl_filter_t *',
+ 'name' => 'filter'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'modperl_output_filter_handler',
+ 'args' => [
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'f'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'bb'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'modperl_output_filter_read',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'modperl_filter_t *',
+ 'name' => 'filter'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'buffer'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'wanted'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'modperl_output_filter_write',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'modperl_filter_t *',
+ 'name' => 'filter'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'len'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_package_unload',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'package'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_perl_av_push_elts_ref',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'AV *',
+ 'name' => 'dst'
+ },
+ {
+ 'type' => 'AV *',
+ 'name' => 'src'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_perl_call_endav',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_perl_call_list',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'AV *',
+ 'name' => 'subs'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_perl_core_global_init',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_perl_destruct',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter *',
+ 'name' => 'perl'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_perl_destruct_level',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'modperl_perl_do_join',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV **',
+ 'name' => 'mark'
+ },
+ {
+ 'type' => 'SV **',
+ 'name' => 'sp'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_perl_do_sprintf',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'sv'
+ },
+ {
+ 'type' => 'I32',
+ 'name' => 'len'
+ },
+ {
+ 'type' => 'SV **',
+ 'name' => 'sarg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_perl_exit',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'status'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'modperl_perl_gensym',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'pack'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_perl_global_avcv_call',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'modperl_modglobal_key_t *',
+ 'name' => 'gkey'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'package'
+ },
+ {
+ 'type' => 'I32',
+ 'name' => 'packlen'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_perl_global_avcv_clear',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'modperl_modglobal_key_t *',
+ 'name' => 'gkey'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'package'
+ },
+ {
+ 'type' => 'I32',
+ 'name' => 'packlen'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_perl_global_avcv_register',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'modperl_modglobal_key_t *',
+ 'name' => 'gkey'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'package'
+ },
+ {
+ 'type' => 'I32',
+ 'name' => 'packlen'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_perl_global_request_restore',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_perl_global_request_save',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'HE *',
+ 'name' => 'modperl_perl_hv_fetch_he',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'HV *',
+ 'name' => 'hv'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'I32',
+ 'name' => 'klen'
+ },
+ {
+ 'type' => 'U32',
+ 'name' => 'hash'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_perl_init_ids_server',
+ 'args' => [
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_perl_module_loaded',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_perl_pp_set',
+ 'args' => [
+ {
+ 'type' => 'modperl_perl_opcode_e',
+ 'name' => 'idx'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_perl_pp_set_all',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_perl_pp_unset',
+ 'args' => [
+ {
+ 'type' => 'modperl_perl_opcode_e',
+ 'name' => 'idx'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_perl_pp_unset_all',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'modperl_perl_sv_setref_uv',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'rv'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'classname'
+ },
+ {
+ 'type' => 'UV',
+ 'name' => 'uv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'modperl_pnotes',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'HV **',
+ 'name' => 'pnotes'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'val'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_post_config_handler',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pconf'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'plog'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'ptemp'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_post_post_config_phase',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_post_read_request_handler',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_pre_connection_handler',
+ 'args' => [
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'csd'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_process_connection_handler',
+ 'args' => [
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'modperl_ptr2obj',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'classname'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'ptr'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'modperl_register_auth_provider',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'provider_group'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'provider_name'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'provider_version'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'callback1'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'callback2'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'type'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'modperl_register_auth_provider_name',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'provider_group'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'provider_name'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'provider_version'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'callback1'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'callback2'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'type'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_register_handler_hooks',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_register_hooks',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'ssize_t',
+ 'name' => 'modperl_request_read',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'buffer'
+ },
+ {
+ 'type' => 'size_t',
+ 'name' => 'len'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_require_file',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'pv'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'logfailure'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_require_module',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'pv'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'logfailure'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'modperl_response_finish',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_response_handler',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_response_handler_cgi',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_response_init',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_restart_count',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_restart_count_inc',
+ 'args' => [
+ {
+ 'type' => 'server_rec *',
+ 'name' => 'base_server'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_run',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_run_filter',
+ 'args' => [
+ {
+ 'type' => 'modperl_filter_t *',
+ 'name' => 'filter'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'modperl_server_desc',
+ 'args' => [
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_pool_t *',
+ 'name' => 'modperl_server_pool',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'apr_pool_t *',
+ 'name' => 'modperl_server_user_pool',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_set_perl_module_config',
+ 'args' => [
+ {
+ 'type' => 'ap_conf_vector_t *',
+ 'name' => 'cv'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'cfg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'modperl_slurp_filename',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'tainted'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_spawn_proc_prog',
+ 'attr' => [
+ 'static'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'command'
+ },
+ {
+ 'type' => 'const char ***',
+ 'name' => 'argv'
+ },
+ {
+ 'type' => 'apr_file_t **',
+ 'name' => 'script_in'
+ },
+ {
+ 'type' => 'apr_file_t **',
+ 'name' => 'script_out'
+ },
+ {
+ 'type' => 'apr_file_t **',
+ 'name' => 'script_err'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'PerlInterpreter *',
+ 'name' => 'modperl_startup',
+ 'args' => [
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_str_toupper',
+ 'args' => [
+ {
+ 'type' => 'char *',
+ 'name' => 'str'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'request_rec *',
+ 'name' => 'modperl_sv2request_rec',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'sv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'server_rec *',
+ 'name' => 'modperl_sv2server_rec',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'sv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_svptr_table_clear',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'PTR_TBL_t *',
+ 'name' => 'tbl'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'PTR_TBL_t *',
+ 'name' => 'modperl_svptr_table_clone',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'PerlInterpreter *',
+ 'name' => 'proto_perl'
+ },
+ {
+ 'type' => 'PTR_TBL_t *',
+ 'name' => 'source'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_svptr_table_delete',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'PTR_TBL_t *',
+ 'name' => 'tbl'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'key'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_svptr_table_destroy',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'PTR_TBL_t *',
+ 'name' => 'tbl'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void *',
+ 'name' => 'modperl_svptr_table_fetch',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'PTR_TBL_t *',
+ 'name' => 'tbl'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'sv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_svptr_table_free',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'PTR_TBL_t *',
+ 'name' => 'tbl'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'PTR_TBL_t *',
+ 'name' => 'modperl_svptr_table_new',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_svptr_table_split',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'PTR_TBL_t *',
+ 'name' => 'tbl'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_svptr_table_store',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'PTR_TBL_t *',
+ 'name' => 'tbl'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'oldv'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'newv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_sys_dlclose',
+ 'args' => [
+ {
+ 'type' => 'void *',
+ 'name' => 'handle'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_sys_is_dir',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'sv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'modperl_table_get_set',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_table_t *',
+ 'name' => 'table'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'sv_val'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'do_taint'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_threaded_mpm',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_threads_started',
+ 'args' => []
+ },
+ {
+ 'return_type' => 'modperl_interp_t *',
+ 'name' => 'modperl_thx_interp_get',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter *',
+ 'name' => 'thx'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_thx_interp_set',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter *',
+ 'name' => 'thx'
+ },
+ {
+ 'type' => 'modperl_interp_t *',
+ 'name' => 'interp'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_tipool_add',
+ 'args' => [
+ {
+ 'type' => 'modperl_tipool_t *',
+ 'name' => 'tipool'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_tipool_destroy',
+ 'args' => [
+ {
+ 'type' => 'modperl_tipool_t *',
+ 'name' => 'tipool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_tipool_init',
+ 'args' => [
+ {
+ 'type' => 'modperl_tipool_t *',
+ 'name' => 'tipool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'modperl_tipool_t *',
+ 'name' => 'modperl_tipool_new',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'modperl_tipool_config_t *',
+ 'name' => 'cfg'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'func'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'modperl_list_t *',
+ 'name' => 'modperl_tipool_pop',
+ 'args' => [
+ {
+ 'type' => 'modperl_tipool_t *',
+ 'name' => 'tipool'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_tipool_putback',
+ 'args' => [
+ {
+ 'type' => 'modperl_tipool_t *',
+ 'name' => 'tipool'
+ },
+ {
+ 'type' => 'modperl_list_t *',
+ 'name' => 'listp'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'num_requests'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_tipool_putback_data',
+ 'args' => [
+ {
+ 'type' => 'modperl_tipool_t *',
+ 'name' => 'tipool'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'num_requests'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_tipool_remove',
+ 'args' => [
+ {
+ 'type' => 'modperl_tipool_t *',
+ 'name' => 'tipool'
+ },
+ {
+ 'type' => 'modperl_list_t *',
+ 'name' => 'listp'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'modperl_tls_create',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'modperl_tls_t **',
+ 'name' => 'key'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'modperl_tls_create_request_rec',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'modperl_tls_get',
+ 'args' => [
+ {
+ 'type' => 'modperl_tls_t *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'void **',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'modperl_tls_get_request_rec',
+ 'args' => [
+ {
+ 'type' => 'request_rec * *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_tls_reset_cleanup',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'modperl_tls_t *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_tls_reset_cleanup_request_rec',
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'modperl_tls_set',
+ 'args' => [
+ {
+ 'type' => 'modperl_tls_t *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'modperl_tls_set_request_rec',
+ 'args' => [
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_trace',
+ 'args' => [
+ {
+ 'type' => 'const char *',
+ 'name' => 'func'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'fmt'
+ },
+ {
+ 'type' => '...',
+ 'name' => 'arg2'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_trace_level_set',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'logfile'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'level'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_trace_logfile_set',
+ 'args' => [
+ {
+ 'type' => 'apr_file_t *',
+ 'name' => 'logfile_new'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_trans_handler',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'modperl_type_handler',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'modperl_uri_t *',
+ 'name' => 'modperl_uri_new',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'modperl_wbucket_flush',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'modperl_wbucket_t *',
+ 'name' => 'b'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'add_flush_bucket'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'modperl_wbucket_pass',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'modperl_wbucket_t *',
+ 'name' => 'b'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'len'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'add_flush_bucket'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'modperl_wbucket_write',
+ 'attr' => [
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'modperl_wbucket_t *',
+ 'name' => 'b'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'buf'
+ },
+ {
+ 'type' => 'apr_size_t *',
+ 'name' => 'wlen'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_xs_dl_handles_clear',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'modperl_xs_dl_handles_close',
+ 'args' => [
+ {
+ 'type' => 'void **',
+ 'name' => 'handles'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void **',
+ 'name' => 'modperl_xs_dl_handles_get',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'request_rec *',
+ 'name' => 'modperl_xs_sv2request_rec',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'sv'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'classname'
+ },
+ {
+ 'type' => 'CV *',
+ 'name' => 'cv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_APR__Brigade_cleanup',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'brigade'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_APR__Brigade_concat',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'a'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'b'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_APR__Brigade_destroy',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'bb'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'mpxs_APR__Brigade_first',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'brigade'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'mpxs_APR__Brigade_flatten',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'I32',
+ 'name' => 'items'
+ },
+ {
+ 'type' => 'SV **',
+ 'name' => 'mark'
+ },
+ {
+ 'type' => 'SV **',
+ 'name' => 'sp'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_APR__Brigade_insert_head',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'brigade'
+ },
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'bucket'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_APR__Brigade_insert_tail',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'brigade'
+ },
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'bucket'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'mpxs_APR__Brigade_is_empty',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'brigade'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'mpxs_APR__Brigade_last',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'brigade'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_APR__Brigade_length',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'bb'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'read_all'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'mpxs_APR__Brigade_next',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'brigade'
+ },
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'bucket'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_pool_t *',
+ 'name' => 'mpxs_APR__Brigade_pool',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'brigade'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'mpxs_APR__Brigade_prev',
+ 'args' => [
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'brigade'
+ },
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'bucket'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_APR__BucketAlloc_new',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'CLASS'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'p_sv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_APR__Bucket_insert_after',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'a'
+ },
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'b'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_APR__Bucket_insert_before',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'a'
+ },
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'b'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'mpxs_APR__Bucket_is_eos',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'bucket'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'mpxs_APR__Bucket_is_flush',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'bucket'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_bucket *',
+ 'name' => 'mpxs_APR__Bucket_new',
+ 'attr' => [
+ 'static'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'classname'
+ },
+ {
+ 'type' => 'apr_bucket_alloc_t *',
+ 'name' => 'list'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'sv'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'offset'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'len'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'mpxs_APR__Bucket_read',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'bucket'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'buffer'
+ },
+ {
+ 'type' => 'apr_read_type_e',
+ 'name' => 'block'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_APR__Bucket_remove',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'apr_bucket *',
+ 'name' => 'bucket'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'mpxs_APR__Bucket_setaside',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'b_sv'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'p_sv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_APR__Finfo_stat',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'fname'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'wanted'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'p_sv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'unsigned long',
+ 'name' => 'mpxs_APR__OS_current_thread_id',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_APR__Pool_clear',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'obj'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'mpxs_APR__Socket_fileno',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'socket'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_int32_t',
+ 'name' => 'mpxs_APR__Socket_opt_get',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'socket'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'opt'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_APR__Socket_opt_set',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'socket'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'opt'
+ },
+ {
+ 'type' => 'apr_int32_t',
+ 'name' => 'val'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'mpxs_APR__Socket_poll',
+ 'args' => [
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'socket'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'pool'
+ },
+ {
+ 'type' => 'apr_interval_time_t',
+ 'name' => 'timeout'
+ },
+ {
+ 'type' => 'apr_int16_t',
+ 'name' => 'reqevents'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'mpxs_APR__Socket_recv',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'socket'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'buffer'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'len'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_APR__Socket_timeout_set',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'socket'
+ },
+ {
+ 'type' => 'apr_interval_time_t',
+ 'name' => 't'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_APR__String_strfsize',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'size'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'mpxs_APR__Table_EXISTS',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'apr_table_t *',
+ 'name' => 't'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'key'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'mpxs_APR__Table_FETCH',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'tsv'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'key'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'mpxs_APR__Table_NEXTKEY',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'tsv'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'key'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_APR__Table_copy',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_table_t *',
+ 'name' => 'base'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'p_sv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_APR__Table_make',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'p_sv'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'nelts'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_APR__Table_overlay',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_table_t *',
+ 'name' => 'base'
+ },
+ {
+ 'type' => 'apr_table_t *',
+ 'name' => 'overlay'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'p_sv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'mpxs_APR__URI_port',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_uri_t *',
+ 'name' => 'uri'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'portsv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_APR__URI_rpath',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_uri_t *',
+ 'name' => 'apr_uri'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_Apache2__CmdParms_add_config',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'lines'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_Apache2__CmdParms_info',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'cmd_parms *',
+ 'name' => 'parms'
+ }
+ ]
+ },
+ {
+ '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' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'callback'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_Apache2__Connection_add_output_filter',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'callback'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_socket_t *',
+ 'name' => 'mpxs_Apache2__Connection_client_socket',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ },
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 's'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'mpxs_Apache2__Connection_get_remote_host',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'type'
+ },
+ {
+ 'type' => 'ap_conf_vector_t *',
+ 'name' => 'dir_config'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_Apache2__Connection_pnotes',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'val'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_Apache2__Directive_as_hash',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'ap_directive_t *',
+ 'name' => 'tree'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_Apache2__Directive_as_string',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'ap_directive_t *',
+ 'name' => 'self'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_Apache2__Filter_ctx',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'filter'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'mpxs_Apache2__Filter_fflush',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'filter'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'brigade'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'mpxs_Apache2__Filter_get_brigade',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'f'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'bb'
+ },
+ {
+ 'type' => 'ap_input_mode_t',
+ 'name' => 'mode'
+ },
+ {
+ 'type' => 'apr_read_type_e',
+ 'name' => 'block'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'readbytes'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'mpxs_Apache2__Filter_pass_brigade',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'ap_filter_t *',
+ 'name' => 'f'
+ },
+ {
+ 'type' => 'apr_bucket_brigade *',
+ 'name' => 'bb'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'mpxs_Apache2__Filter_print',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'I32',
+ 'name' => 'items'
+ },
+ {
+ 'type' => 'SV **',
+ 'name' => 'mark'
+ },
+ {
+ 'type' => 'SV **',
+ 'name' => 'sp'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'mpxs_Apache2__Filter_read',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'I32',
+ 'name' => 'items'
+ },
+ {
+ 'type' => 'SV **',
+ 'name' => 'mark'
+ },
+ {
+ 'type' => 'SV **',
+ 'name' => 'sp'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_Apache2__Filter_remove',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'I32',
+ 'name' => 'items'
+ },
+ {
+ 'type' => 'SV **',
+ 'name' => 'mark'
+ },
+ {
+ 'type' => 'SV **',
+ 'name' => 'sp'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_Apache2__Filter_seen_eos',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'I32',
+ 'name' => 'items'
+ },
+ {
+ 'type' => 'SV **',
+ 'name' => 'mark'
+ },
+ {
+ 'type' => 'SV **',
+ 'name' => 'sp'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_Apache2__Log_BOOT',
+ 'attr' => [
+ 'static'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_Apache2__Log_log',
+ 'attr' => [
+ 'static'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'sv'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'logtype'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_Apache2__MPM_BOOT',
+ 'attr' => [
+ 'static'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_Apache2__MPM_query',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'self'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'query_code'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_Apache2__Module_add',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'package'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'cmds'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'mpxs_Apache2__Module_ap_api_major_version',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'module *',
+ 'name' => 'mod'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'mpxs_Apache2__Module_ap_api_minor_version',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'module *',
+ 'name' => 'mod'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_Apache2__Module_get_config',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'pmodule'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'ap_conf_vector_t *',
+ 'name' => 'v'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'mpxs_Apache2__Module_loaded',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'mpxs_Apache2__RequestRec_FILENO',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_Apache2__RequestRec_GETC',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'mpxs_Apache2__RequestRec_OPEN',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'self'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'arg1'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'arg2'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_Apache2__RequestRec_add_config',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'lines'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'override'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'path'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'override_options'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_Apache2__RequestRec_add_input_filter',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'callback'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_Apache2__RequestRec_add_output_filter',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'callback'
+ }
+ ]
+ },
+ {
+ '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',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'mpxs_Apache2__RequestRec_auth_name',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'mpxs_Apache2__RequestRec_auth_type',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'type'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_Apache2__RequestRec_child_terminate',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_Apache2__RequestRec_content_languages',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'languages'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'mpxs_Apache2__RequestRec_content_type',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'type'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'mpxs_Apache2__RequestRec_document_root',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'new_root'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_finfo_t *',
+ 'name' => 'mpxs_Apache2__RequestRec_finfo',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'apr_finfo_t *',
+ 'name' => 'finfo'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_Apache2__RequestRec_get_handlers',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'const char *',
+ 'name' => 'mpxs_Apache2__RequestRec_handler',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'I32',
+ 'name' => 'items'
+ },
+ {
+ 'type' => 'SV **',
+ 'name' => 'mark'
+ },
+ {
+ 'type' => 'SV **',
+ 'name' => 'sp'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'mpxs_Apache2__RequestRec_is_perl_option_enabled',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'mpxs_Apache2__RequestRec_location',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'mpxs_Apache2__RequestRec_location_merge',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'location'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_Apache2__RequestRec_new',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'classname'
+ },
+ {
+ 'type' => 'conn_rec *',
+ 'name' => 'c'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'base_pool_sv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'mpxs_Apache2__RequestRec_no_cache',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'flag'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_uri_t *',
+ 'name' => 'mpxs_Apache2__RequestRec_parsed_uri',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_Apache2__RequestRec_pnotes',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'val'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_Apache2__RequestRec_print',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'I32',
+ 'name' => 'items'
+ },
+ {
+ 'type' => 'SV **',
+ 'name' => 'mark'
+ },
+ {
+ 'type' => 'SV **',
+ 'name' => 'sp'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'mpxs_Apache2__RequestRec_proxyreq',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'val'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'mpxs_Apache2__RequestRec_push_handlers',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'sv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_Apache2__RequestRec_read',
+ 'attr' => [
+ 'static'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'buffer'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'len'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'offset'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_Apache2__RequestRec_rflush',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'I32',
+ 'name' => 'items'
+ },
+ {
+ 'type' => 'SV **',
+ 'name' => 'mark'
+ },
+ {
+ 'type' => 'SV **',
+ 'name' => 'sp'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'mpxs_Apache2__RequestRec_sendfile',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'filename'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'offset'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'len'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_Apache2__RequestRec_set_basic_credentials',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'username'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'password'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'mpxs_Apache2__RequestRec_set_handlers',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'sv'
+ }
+ ]
+ },
+ {
+ 'return_type' => '',
+ 'name' => 'mpxs_Apache2__RequestRec_set_last_modified',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'apr_time_t',
+ 'name' => 'mtime'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_Apache2__RequestRec_subprocess_env',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'val'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'mpxs_Apache2__RequestRec_write',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'buffer'
+ },
+ {
+ 'type' => 'apr_size_t',
+ 'name' => 'len'
+ },
+ {
+ 'type' => 'apr_off_t',
+ 'name' => 'offset'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'request_rec *',
+ 'name' => 'mpxs_Apache2__RequestUtil_request',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'classname'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'svr'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_Apache2__ServerRec_add_config',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'lines'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_Apache2__ServerRec_get_handlers',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'mpxs_Apache2__ServerRec_is_perl_option_enabled',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'mpxs_Apache2__ServerRec_is_virtual',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'val'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'mpxs_Apache2__ServerRec_loglevel',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'loglevel'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'mpxs_Apache2__ServerRec_push_handlers',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'sv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'mpxs_Apache2__ServerRec_set_handlers',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'server_rec *',
+ 'name' => 's'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'sv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_Apache2__ServerUtil_BOOT',
+ 'attr' => [
+ 'static'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_Apache2__ServerUtil_server_shutdown_cleanup_register',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'cv'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'mpxs_ModPerl__Global_special_list_call',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'package'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'mpxs_ModPerl__Global_special_list_clear',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'package'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'mpxs_ModPerl__Global_special_list_register',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'package'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_ModPerl__Util_untaint',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'I32',
+ 'name' => 'items'
+ },
+ {
+ 'type' => 'SV **',
+ 'name' => 'mark'
+ },
+ {
+ 'type' => 'SV **',
+ 'name' => 'sp'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_ap_allow_methods',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'I32',
+ 'name' => 'items'
+ },
+ {
+ 'type' => 'SV **',
+ 'name' => 'mark'
+ },
+ {
+ 'type' => 'SV **',
+ 'name' => 'sp'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'long',
+ 'name' => 'mpxs_ap_get_client_block',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'buffer'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'bufsiz'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_ap_log_error',
+ 'attr' => [
+ 'static'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'level'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'sv'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'msg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'mpxs_ap_register_auth_provider',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'I32',
+ 'name' => 'items'
+ },
+ {
+ 'type' => 'SV **',
+ 'name' => 'mark'
+ },
+ {
+ 'type' => 'SV **',
+ 'name' => 'sp'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_ap_requires',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'mpxs_ap_rprintf',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'I32',
+ 'name' => 'items'
+ },
+ {
+ 'type' => 'SV **',
+ 'name' => 'mark'
+ },
+ {
+ 'type' => 'SV **',
+ 'name' => 'sp'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'mpxs_ap_run_sub_req',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'mpxs_ap_rvputs',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'I32',
+ 'name' => 'items'
+ },
+ {
+ 'type' => 'SV **',
+ 'name' => 'mark'
+ },
+ {
+ 'type' => 'SV **',
+ 'name' => 'sp'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'mpxs_ap_unescape_url',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'url'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_apr_base64_decode',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'sv'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_apr_base64_encode',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'sv'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_apr_brigade_create',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'CLASS'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'p_sv'
+ },
+ {
+ 'type' => 'apr_bucket_alloc_t *',
+ 'name' => 'ba'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_apr_ipsubnet_create',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'classname'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'p_sv'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'ipstr'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'mask_or_numbits'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'mpxs_apr_password_validate',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'passwd'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'hash'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_apr_pool_DESTROY',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'obj'
+ }
+ ]
+ },
+ {
+ 'return_type' => '',
+ 'name' => 'mpxs_apr_pool_cleanup',
+ 'args' => [
+ {
+ 'type' => 'void *',
+ 'name' => 'cleanup_data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_apr_pool_cleanup_register',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'p'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'cv'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'arg'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_apr_pool_create',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'parent_pool_obj'
+ }
+ ]
+ },
+ {
+ 'return_type' => '',
+ 'name' => 'mpxs_apr_pool_parent_get',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_pool_t *',
+ 'name' => 'child_pool'
+ }
+ ]
+ },
+ {
+ 'return_type' => '',
+ 'name' => 'mpxs_apr_sockaddr_ip_get',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_sockaddr_t *',
+ 'name' => 'sockaddr'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_size_t',
+ 'name' => 'mpxs_apr_socket_send',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_socket_t *',
+ 'name' => 'socket'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'sv_buf'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'sv_len'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_interval_time_t',
+ 'name' => 'mpxs_apr_socket_timeout_get',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'I32',
+ 'name' => 'items'
+ },
+ {
+ 'type' => 'SV **',
+ 'name' => 'mark'
+ },
+ {
+ 'type' => 'SV **',
+ 'name' => 'sp'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'mpxs_apr_table_do',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'I32',
+ 'name' => 'items'
+ },
+ {
+ 'type' => 'SV **',
+ 'name' => 'mark'
+ },
+ {
+ 'type' => 'SV **',
+ 'name' => 'sp'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'mpxs_apr_table_do_cb',
+ 'attr' => [
+ 'static'
+ ],
+ 'args' => [
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'key'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'val'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_apr_thread_mutex_create',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'classname'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'p_sv'
+ },
+ {
+ 'type' => 'unsigned int',
+ 'name' => 'flags'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_apr_thread_rwlock_create',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'classname'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'p_sv'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_apr_uri_parse',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'classname'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'p_sv'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'uri_string'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'char *',
+ 'name' => 'mpxs_apr_uri_unparse',
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'apr_uri_t *',
+ 'name' => 'uptr'
+ },
+ {
+ 'type' => 'unsigned',
+ 'name' => 'flags'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_uuid_t *',
+ 'name' => 'mpxs_apr_uuid_get',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'CLASS'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_uuid_t *',
+ 'name' => 'mpxs_apr_uuid_parse',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'CLASS'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'buf'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'mpxs_cleanup_run',
+ 'attr' => [
+ 'static'
+ ],
+ 'args' => [
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_insert_auth_cfg',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'directive'
+ },
+ {
+ 'type' => 'char *',
+ 'name' => 'val'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'apr_status_t',
+ 'name' => 'mpxs_setup_client_block',
+ 'args' => [
+ {
+ 'type' => 'request_rec *',
+ 'name' => 'r'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'int',
+ 'name' => 'mpxs_special_list_do',
+ 'attr' => [
+ 'static'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter*',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'const char *',
+ 'name' => 'name'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'package'
+ },
+ {
+ 'type' => 'mpxs_special_list_do_t',
+ 'name' => 'func'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'modperl_interp_t *',
+ 'name' => 'mpxs_ModPerl__Interpreter_current',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter *',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'class'
+ }
+ ]
+ }
+];
+
+
+1;