Re: cvs commit: modperl Makefile.PL
[EMAIL PROTECTED] wrote: randyk 2003/02/20 08:42:46 Modified:.Makefile.PL Log: Reviewed by: stas Use Perl's touch(), in case a system touch() isn't available. Revision ChangesPath 1.208 +5 -1 modperl/Makefile.PL Index: Makefile.PL === RCS file: /home/cvs/modperl/Makefile.PL,v retrieving revision 1.207 retrieving revision 1.208 diff -u -r1.207 -r1.208 --- Makefile.PL 20 Feb 2003 16:34:35 - 1.207 +++ Makefile.PL 20 Feb 2003 16:42:46 - 1.208 @@ -1602,7 +1602,11 @@ my $to = '$(INST_ARCHLIB)/' . "auto/Apache/include/$_"; unless ($self->{PM}->{$from}) { $self->{PM}->{$from} = $to; - system "$Config{touch} $from"; +# system "$Config{touch} $from"; + my @args = ($Config{perlpath}, '-MExtUtils::Command', + '-e', 'touch', $from); + system(@args) == 0 + or die "system @args failed: $?"; } } since we use cvs, we don't commented out snippets of the older code that was replaced with the new one. If in the future we realize the the recent change broke something we can always revert to the previous version. So please remove this commented out line and the same in your other commit on PERL_SECTIONS. Thanks. BTW, in case you were wondering. the style guide doesn't apply to the modperl (1.0) rep, since it's all a mess. We try to keep it clean for 2.0 from the very beginning. __ Stas BekmanJAm_pH --> Just Another mod_perl Hacker http://stason.org/ mod_perl Guide ---> http://perl.apache.org mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com http://modperlbook.org http://apache.org http://ticketmaster.com
cvs commit: modperl/t/net/perl util.pl
stas2003/02/19 23:09:14 Modified:t/net/perl util.pl Log: s/no warnings/local $^W = 0/, I forgot that we have to deal with perl < 5.6 on the mod_perl 1.0 land. Revision ChangesPath 1.17 +1 -1 modperl/t/net/perl/util.pl Index: util.pl === RCS file: /home/cvs/modperl/t/net/perl/util.pl,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- util.pl 20 Feb 2003 06:48:04 - 1.16 +++ util.pl 20 Feb 2003 07:09:14 - 1.17 @@ -113,7 +113,7 @@ { my $str = undef; my $expected = ""; -no warnings; +local $^W = 0; my $received = Apache::unescape_url($str); test ++$i, $received eq $expected; print "expected: $expected\n";
cvs commit: modperl/Apache Apache.pm
stas2003/02/19 22:54:23 Modified:Apache Apache.pm Log: add the reason why the variable gets rendered invalid on Apache::unescape_url Revision ChangesPath 1.74 +2 -1 modperl/Apache/Apache.pm Index: Apache.pm === RCS file: /home/cvs/modperl/Apache/Apache.pm,v retrieving revision 1.73 retrieving revision 1.74 diff -u -r1.73 -r1.74 --- Apache.pm 20 Feb 2003 06:52:10 - 1.73 +++ Apache.pm 20 Feb 2003 06:54:23 - 1.74 @@ -1213,7 +1213,8 @@ Handy function for unescapes. Use this one for filenames/paths. Notice that the original C<$string> is mangled in the -process (because it shrinks). +process (because the string part of PV shrinks, but the variable is +not updated, to speed things up). Use unescape_url_info for the result of submitted form data.
cvs commit: modperl/Apache Apache.pm
stas2003/02/19 22:52:10 Modified:Apache Apache.pm Log: add a note that the original string passed to Apache::unescape_url is mangled, so only the return value should be used. Revision ChangesPath 1.73 +6 -1 modperl/Apache/Apache.pm Index: Apache.pm === RCS file: /home/cvs/modperl/Apache/Apache.pm,v retrieving revision 1.72 retrieving revision 1.73 diff -u -r1.72 -r1.73 --- Apache.pm 13 Aug 2002 03:18:48 - 1.72 +++ Apache.pm 20 Feb 2003 06:52:10 - 1.73 @@ -1209,7 +1209,12 @@ =item Apache::unescape_url($string) -Handy function for unescapes. Use this one for filenames/paths. + $unescaped_url = Apache::unescape_url($string) + +Handy function for unescapes. Use this one for +filenames/paths. Notice that the original C<$string> is mangled in the +process (because it shrinks). + Use unescape_url_info for the result of submitted form data. =item Apache::unescape_url_info($string)
cvs commit: modperl/t/net/perl util.pl
stas2003/02/19 22:48:05 Modified:t/net/perl util.pl Log: add tests for Apache::unescape_url Revision ChangesPath 1.16 +20 -1 modperl/t/net/perl/util.pl Index: util.pl === RCS file: /home/cvs/modperl/t/net/perl/util.pl,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- util.pl 19 Jun 2002 16:31:52 - 1.15 +++ util.pl 20 Feb 2003 06:48:04 - 1.16 @@ -3,7 +3,7 @@ use Apache::test; $|++; my $i = 0; -my $tests = 7; +my $tests = 9; my $r = shift; $r->send_http_header('text/plain'); @@ -100,6 +100,25 @@ Perl => sub { my $esc = URI::Escape::uri_escape($uri) }, }); =cut + +{ +my $str = "aa%20dd%2epl"; +my $expected = "aa dd.pl"; +my $received = Apache::unescape_url($str); +test ++$i, $received eq $expected; +print "expected: $expected\n"; +print "received: $received\n"; +} + +{ +my $str = undef; +my $expected = ""; +no warnings; +my $received = Apache::unescape_url($str); +test ++$i, $received eq $expected; +print "expected: $expected\n"; +print "received: $received\n"; +} $C = Apache::Util::ht_time(); $Perl = HTTP::Date::time2str();
cvs commit: modperl Changes
stas2003/02/19 21:21:56 Modified:src/modules/perl Apache.xs .Changes Log: can't let the default typemap rule to convert sv into char* in unescape_url, since it doesn't handle correctly undefs (returns an unallocated "" string, which then causes a segfault in ap_unescape_url. use SvPV_force, instead, which does the right thing. Revision ChangesPath 1.126 +5 -2 modperl/src/modules/perl/Apache.xs Index: Apache.xs === RCS file: /home/cvs/modperl/src/modules/perl/Apache.xs,v retrieving revision 1.125 retrieving revision 1.126 diff -u -r1.125 -r1.126 --- Apache.xs 6 Jul 2001 20:33:35 - 1.125 +++ Apache.xs 20 Feb 2003 05:21:55 - 1.126 @@ -655,8 +655,11 @@ Apache r char * -unescape_url(string) -char *string +unescape_url(sv) +SV *sv + +INIT: +char *string = SvPV_force(sv, PL_na); CODE: unescape_url(string); 1.662 +6 -0 modperl/Changes Index: Changes === RCS file: /home/cvs/modperl/Changes,v retrieving revision 1.661 retrieving revision 1.662 diff -u -r1.661 -r1.662 --- Changes 19 Feb 2003 02:38:21 - 1.661 +++ Changes 20 Feb 2003 05:21:55 - 1.662 @@ -10,6 +10,12 @@ =item 1.27_01-dev +can't let the default typemap rule to convert sv into char* in +unescape_url, since it doesn't handle correctly undefs (returns an +unallocated "" string, which then causes a segfault in +ap_unescape_url. use SvPV_force, instead, which does the right +thing. [Stas Bekman] + Make sure to start perl, if it's not running, before processing Perl* directives, with threaded perl and PERL_STACKED_HANDLERS=0 [Stas Bekman]
cvs commit: modperl Changes
stas2003/02/18 18:38:22 Modified:src/modules/perl perl_config.c .Changes Log: Make sure to start perl, if it's not running, before processing Perl* directives, with threaded perl and PERL_STACKED_HANDLERS=0 Revision ChangesPath 1.115 +9 -5 modperl/src/modules/perl/perl_config.c Index: perl_config.c === RCS file: /home/cvs/modperl/src/modules/perl/perl_config.c,v retrieving revision 1.114 retrieving revision 1.115 diff -u -r1.114 -r1.115 --- perl_config.c 24 Mar 2002 22:51:04 - 1.114 +++ perl_config.c 19 Feb 2003 02:38:21 - 1.115 @@ -437,6 +437,13 @@ } #endif +#define STARTUP_PERL_IF_NOT_RUNNING \ +if(!PERL_RUNNING()) { \ +perl_startup(parms->server, parms->pool); \ +require_Apache(parms->server); \ +MP_TRACE_g(fprintf(stderr, "mod_perl: calling perl_startup()\n")); \ +} + #ifdef PERL_STACKED_HANDLERS CHAR_P perl_cmd_push_handlers(char *hook, PERL_CMD_TYPE **cmd, char *arg, pool *p) @@ -456,16 +463,13 @@ } #define PERL_CMD_PUSH_HANDLERS(hook, cmd) \ -if(!PERL_RUNNING()) { \ -perl_startup(parms->server, parms->pool); \ -require_Apache(parms->server); \ -MP_TRACE_g(fprintf(stderr, "mod_perl: calling perl_startup()\n")); \ -} \ +STARTUP_PERL_IF_NOT_RUNNING \ return perl_cmd_push_handlers(hook,&cmd,arg,parms->pool) #else #define PERL_CMD_PUSH_HANDLERS(hook, cmd) \ +STARTUP_PERL_IF_NOT_RUNNING \ mp_preload_module(&arg); \ cmd = arg; \ return NULL 1.661 +6 -2 modperl/Changes Index: Changes === RCS file: /home/cvs/modperl/Changes,v retrieving revision 1.660 retrieving revision 1.661 diff -u -r1.660 -r1.661 --- Changes 28 Jan 2003 00:30:22 - 1.660 +++ Changes 19 Feb 2003 02:38:21 - 1.661 @@ -10,6 +10,10 @@ =item 1.27_01-dev +Make sure to start perl, if it's not running, before processing Perl* +directives, with threaded perl and PERL_STACKED_HANDLERS=0 [Stas +Bekman] + Add Apache::Module to Bundle::Apache [Stas Bekman] use $Config{'installstyle'} instead of hardcoded 'lib', to handle @@ -19,8 +23,8 @@ prevent segfaults in mod_perl_mark_where() when a sub can't get resolved [Gerald Richter <[EMAIL PROTECTED]>] -Need to load B::Terse/TerseSize if it wasn't loaded yet in that child -before using it. [Dan Sully <[EMAIL PROTECTED]>] +Apache::Status: Need to load B::Terse/TerseSize if it wasn't loaded +yet in that child before using it. [Dan Sully <[EMAIL PROTECTED]>] document the server_root_relative() method [Stas Bekman <[EMAIL PROTECTED]>]
cvs commit: modperl Changes
stas2003/01/27 16:30:22 Modified:lib/Bundle Apache.pm .Changes Log: Add Apache::Module to Bundle::Apache Revision ChangesPath 1.8 +2 -0 modperl/lib/Bundle/Apache.pm Index: Apache.pm === RCS file: /home/cvs/modperl/lib/Bundle/Apache.pm,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- Apache.pm 22 Mar 2000 08:05:45 - 1.7 +++ Apache.pm 28 Jan 2003 00:30:22 - 1.8 @@ -48,6 +48,8 @@ Apache::Request - Effective methods for dealing with client request data +Apache::Module - Interface to Apache C module structures + =head1 DESCRIPTION This bundle contains modules used by Apache mod_perl. 1.660 +2 -0 modperl/Changes Index: Changes === RCS file: /home/cvs/modperl/Changes,v retrieving revision 1.659 retrieving revision 1.660 diff -u -r1.659 -r1.660 --- Changes 23 Jan 2003 04:25:04 - 1.659 +++ Changes 28 Jan 2003 00:30:22 - 1.660 @@ -10,6 +10,8 @@ =item 1.27_01-dev +Add Apache::Module to Bundle::Apache [Stas Bekman] + use $Config{'installstyle'} instead of hardcoded 'lib', to handle Makefile.PL's PREFIX option correctly [Philippe M. Chiasson <[EMAIL PROTECTED]>]
cvs commit: modperl Makefile.PL Changes
stas2003/01/22 20:25:05 Modified:.Makefile.PL Changes Log: use $Config{'installstyle'} instead of hardcoded 'lib', to handle Makefile.PL's PREFIX option correctly Submitted by: Philippe M. Chiasson <[EMAIL PROTECTED]> Reviewed by: stas Revision ChangesPath 1.205 +1 -1 modperl/Makefile.PL Index: Makefile.PL === RCS file: /home/cvs/modperl/Makefile.PL,v retrieving revision 1.204 retrieving revision 1.205 diff -u -r1.204 -r1.205 --- Makefile.PL 19 Jun 2002 16:31:52 - 1.204 +++ Makefile.PL 23 Jan 2003 04:25:04 - 1.205 @@ -347,7 +347,7 @@ if ($k eq 'PREFIX') { require File::Spec; $MOD_PERL_PREFIX = - File::Spec->catfile($v, 'lib', 'site_perl', + File::Spec->catfile($v, $Config{'installstyle'}, 'site_perl', $Config{'version'}, $Config{'archname'}); } 1.659 +4 -0 modperl/Changes Index: Changes === RCS file: /home/cvs/modperl/Changes,v retrieving revision 1.658 retrieving revision 1.659 diff -u -r1.658 -r1.659 --- Changes 25 Dec 2002 01:46:09 - 1.658 +++ Changes 23 Jan 2003 04:25:04 - 1.659 @@ -10,6 +10,10 @@ =item 1.27_01-dev +use $Config{'installstyle'} instead of hardcoded 'lib', to handle +Makefile.PL's PREFIX option correctly [Philippe M. Chiasson +<[EMAIL PROTECTED]>] + prevent segfaults in mod_perl_mark_where() when a sub can't get resolved [Gerald Richter <[EMAIL PROTECTED]>]
cvs commit: modperl/Util .cvsignore
stas2002/12/26 17:45:22 Modified:Connection .cvsignore File .cvsignore Log .cvsignore ModuleConfig .cvsignore Server .cvsignore Table.cvsignore URI .cvsignore Util .cvsignore Log: update cvs ignore files Revision ChangesPath 1.2 +2 -0 modperl/Connection/.cvsignore Index: .cvsignore === RCS file: /home/cvs/modperl/Connection/.cvsignore,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- .cvsignore28 Jul 1998 17:09:13 - 1.1 +++ .cvsignore27 Dec 2002 01:45:21 - 1.2 @@ -1,2 +1,4 @@ Makefile pm_to_blib +Connection.xs + 1.2 +1 -0 modperl/File/.cvsignore Index: .cvsignore === RCS file: /home/cvs/modperl/File/.cvsignore,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- .cvsignore22 Dec 1998 16:36:50 - 1.1 +++ .cvsignore27 Dec 2002 01:45:22 - 1.2 @@ -1,2 +1,3 @@ Makefile pm_to_blib +File.xs 1.2 +1 -0 modperl/Log/.cvsignore Index: .cvsignore === RCS file: /home/cvs/modperl/Log/.cvsignore,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- .cvsignore13 Jul 1998 13:25:23 - 1.1 +++ .cvsignore27 Dec 2002 01:45:22 - 1.2 @@ -1,2 +1,3 @@ Makefile pm_to_blib +Log.xs 1.2 +2 -0 modperl/ModuleConfig/.cvsignore Index: .cvsignore === RCS file: /home/cvs/modperl/ModuleConfig/.cvsignore,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- .cvsignore22 May 1998 07:43:36 - 1.1 +++ .cvsignore27 Dec 2002 01:45:22 - 1.2 @@ -1,2 +1,4 @@ Makefile pm_to_blib +ModuleConfig.xs + 1.2 +1 -0 modperl/Server/.cvsignore Index: .cvsignore === RCS file: /home/cvs/modperl/Server/.cvsignore,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- .cvsignore28 Jul 1998 17:09:14 - 1.1 +++ .cvsignore27 Dec 2002 01:45:22 - 1.2 @@ -1,2 +1,3 @@ Makefile pm_to_blib +Server.xs 1.2 +1 -0 modperl/Table/.cvsignore Index: .cvsignore === RCS file: /home/cvs/modperl/Table/.cvsignore,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- .cvsignore8 Nov 1998 01:26:42 - 1.1 +++ .cvsignore27 Dec 2002 01:45:22 - 1.2 @@ -1,2 +1,3 @@ Makefile pm_to_blib +Table.xs 1.2 +1 -0 modperl/URI/.cvsignore Index: .cvsignore === RCS file: /home/cvs/modperl/URI/.cvsignore,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- .cvsignore17 Jul 1998 20:48:38 - 1.1 +++ .cvsignore27 Dec 2002 01:45:22 - 1.2 @@ -1,2 +1,3 @@ Makefile pm_to_blib +URI.xs 1.2 +1 -0 modperl/Util/.cvsignore Index: .cvsignore === RCS file: /home/cvs/modperl/Util/.cvsignore,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- .cvsignore18 Jul 1998 14:44:15 - 1.1 +++ .cvsignore27 Dec 2002 01:45:22 - 1.2 @@ -1,2 +1,3 @@ Makefile pm_to_blib +Util.xs
cvs commit: modperl/src/modules/perl apache_inc.h
stas2002/12/26 17:28:26 Modified:src/modules/perl apache_inc.h Log: s/\cM// Revision ChangesPath 1.7 +1 -1 modperl/src/modules/perl/apache_inc.h Index: apache_inc.h === RCS file: /home/cvs/modperl/src/modules/perl/apache_inc.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- apache_inc.h 16 Jun 2002 19:28:20 - 1.6 +++ apache_inc.h 27 Dec 2002 01:28:26 - 1.7 @@ -73,7 +73,7 @@ #define apache_isnan isnan #undef isnan #endif - + #ifdef PERL_IS_5_6 #ifdef opendir
cvs commit: modperl Changes
stas2002/12/24 17:46:10 Modified:src/modules/perl perl_util.c .Changes Log: prevent segfaults in mod_perl_mark_where() when a sub can't get resolved Submitted by: Gerald Richter <[EMAIL PROTECTED]> Reviewed by: stas Revision ChangesPath 1.50 +8 -3 modperl/src/modules/perl/perl_util.c Index: perl_util.c === RCS file: /home/cvs/modperl/src/modules/perl/perl_util.c,v retrieving revision 1.49 retrieving revision 1.50 diff -u -r1.49 -r1.50 --- perl_util.c 15 May 2002 02:08:16 - 1.49 +++ perl_util.c 25 Dec 2002 01:46:09 - 1.50 @@ -852,11 +852,16 @@ name = perl_sv_name(sub); sv_setpv(GvSV(CopFILEGV(curcop)), ""); -sv_catpvf(GvSV(CopFILEGV(curcop)), "%s subroutine `%_'", where, name); +if (name) { +sv_catpvf(GvSV(CopFILEGV(curcop)), "%s subroutine `%_'", where, name); +SvREFCNT_dec(name); +} +else { +sv_catpvf(GvSV(CopFILEGV(curcop)), "%s subroutine ", where); +} + CopLINE_set(curcop, 1); -if(name) - SvREFCNT_dec(name); } #endif 1.658 +3 -0 modperl/Changes Index: Changes === RCS file: /home/cvs/modperl/Changes,v retrieving revision 1.657 retrieving revision 1.658 diff -u -r1.657 -r1.658 --- Changes 28 Nov 2002 09:42:45 - 1.657 +++ Changes 25 Dec 2002 01:46:09 - 1.658 @@ -10,6 +10,9 @@ =item 1.27_01-dev +prevent segfaults in mod_perl_mark_where() when a sub can't get +resolved [Gerald Richter <[EMAIL PROTECTED]>] + Need to load B::Terse/TerseSize if it wasn't loaded yet in that child before using it. [Dan Sully <[EMAIL PROTECTED]>]
cvs commit: modperl Changes
stas2002/11/28 01:42:46 Modified:lib/Apache Status.pm .Changes Log: Need to load B::Terse/TerseSize if it wasn't loaded yet in that child before using it. Submitted by: Dan Sully <[EMAIL PROTECTED]> Reviewed by: stas Revision ChangesPath 1.28 +3 -0 modperl/lib/Apache/Status.pm Index: Status.pm === RCS file: /home/cvs/modperl/lib/Apache/Status.pm,v retrieving revision 1.27 retrieving revision 1.28 diff -u -r1.27 -r1.28 --- Status.pm 31 Jul 2002 02:10:15 - 1.27 +++ Status.pm 28 Nov 2002 09:42:45 - 1.28 @@ -345,6 +345,7 @@ sub noh_b_terse { my $r = shift; +return unless eval { require B::Terse }; $r->send_http_header("text/plain"); no strict 'refs'; my($arg, $name) = (split "/", $r->uri)[-2,-1]; @@ -368,6 +369,7 @@ sub noh_b_terse_size { my $r = shift; +return unless eval { require B::TerseSize }; $r->send_http_header("text/html"); $r->print(''); my($arg, $name) = (split "/", $r->uri)[-2,-1]; @@ -387,6 +389,7 @@ sub noh_b_package_size { my($r, $q) = @_; +return unless eval { require B::TerseSize }; $r->send_http_header("text/html"); $r->print(''); no strict 'refs'; 1.657 +3 -0 modperl/Changes Index: Changes === RCS file: /home/cvs/modperl/Changes,v retrieving revision 1.656 retrieving revision 1.657 diff -u -r1.656 -r1.657 --- Changes 13 Aug 2002 03:18:48 - 1.656 +++ Changes 28 Nov 2002 09:42:45 - 1.657 @@ -10,6 +10,9 @@ =item 1.27_01-dev +Need to load B::Terse/TerseSize if it wasn't loaded yet in that child +before using it. [Dan Sully <[EMAIL PROTECTED]>] + document the server_root_relative() method [Stas Bekman <[EMAIL PROTECTED]>] eliminate warnings when flushing functions with empty () prototypes in
cvs commit: modperl SUPPORT
stas2002/08/21 23:51:45 Modified:.SUPPORT Log: update the mail list archive URL Revision ChangesPath 1.19 +1 -1 modperl/SUPPORT Index: SUPPORT === RCS file: /home/cvs/modperl/SUPPORT,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- SUPPORT 25 Mar 2002 02:57:59 - 1.18 +++ SUPPORT 22 Aug 2002 06:51:44 - 1.19 @@ -34,7 +34,7 @@ There are several modperl list archives, choose your favorite: -http://perl.apache.org/#maillists +http://perl.apache.org/maillist/modperl.html#Searchable_Archives =back
cvs commit: modperl Changes
stas2002/08/12 20:18:48 Modified:Apache Apache.pm .Changes Log: document the server_root_relative() method Revision ChangesPath 1.72 +28 -1 modperl/Apache/Apache.pm Index: Apache.pm === RCS file: /home/cvs/modperl/Apache/Apache.pm,v retrieving revision 1.71 retrieving revision 1.72 diff -u -r1.71 -r1.72 --- Apache.pm 16 May 2002 15:21:46 - 1.71 +++ Apache.pm 13 Aug 2002 03:18:48 - 1.72 @@ -656,7 +656,7 @@ authentication realm, from C<$r-Eauth_name>, to determine which set of credentials to authenticate. -=item $r-Edocument_root ( [$docroot] ) +=item $r-Edocument_root( [$docroot] ) When called with no argument, returns a reference to the current value of the per server configuration directive B. To quote the @@ -678,6 +678,33 @@ } PerlTransHandler trans_handler + +=item $r-Eserver_root_relative( [$relative_path] ) + +If called without any arguments, this method returns the value of the +currently-configured C directory. + +If a single argument is passed, it concatenates it with the value of +C. For example here is how to get the path to the +I file under the server root: + + my $error_log = $r->server_root_relative("logs/error_log"); + +See also the next item. + +=item Apache-Eserver_root_relative( [$relative_path] ) + +Same as the previous item, but this time it's used without a request +object. This method is usually needed in a startup file. For example +the following startup file modifies C<@INC> to add a local directory +with perl modules located under the server root and after that loads a +module from that directory. + + BEGIN { + use Apache(): + use lib Apache->server_root_relative("lib/my_project"); + } + use MyProject::Config (); =item $r-Eallow_options 1.656 +2 -0 modperl/Changes Index: Changes === RCS file: /home/cvs/modperl/Changes,v retrieving revision 1.655 retrieving revision 1.656 diff -u -r1.655 -r1.656 --- Changes 12 Aug 2002 07:11:39 - 1.655 +++ Changes 13 Aug 2002 03:18:48 - 1.656 @@ -10,6 +10,8 @@ =item 1.27_01-dev +document the server_root_relative() method [Stas Bekman <[EMAIL PROTECTED]>] + eliminate warnings when flushing functions with empty () prototypes in Apache::PerlRun::flush_namespace [Yair Lenga <[EMAIL PROTECTED]>]
cvs commit: modperl Changes
stas2002/08/12 00:11:39 Modified:lib/Apache PerlRun.pm .Changes Log: eliminate warnings when flushing functions with empty () prototypes in Apache::PerlRun::flush_namespace Submitted by: Yair Lenga <[EMAIL PROTECTED]> Reviewed by: stas Revision ChangesPath 1.40 +1 -1 modperl/lib/Apache/PerlRun.pm Index: PerlRun.pm === RCS file: /home/cvs/modperl/lib/Apache/PerlRun.pm,v retrieving revision 1.39 retrieving revision 1.40 diff -u -r1.39 -r1.40 --- PerlRun.pm29 May 2002 16:52:17 - 1.39 +++ PerlRun.pm12 Aug 2002 07:11:39 - 1.40 @@ -354,7 +354,7 @@ if (defined &$fullname) { no warnings; local $^W = 0; -if (my $p = prototype $fullname) { +if (defined(my $p = prototype $fullname)) { *{$fullname} = eval "sub ($p) {}"; } else { 1.655 +3 -0 modperl/Changes Index: Changes === RCS file: /home/cvs/modperl/Changes,v retrieving revision 1.654 retrieving revision 1.655 diff -u -r1.654 -r1.655 --- Changes 31 Jul 2002 02:10:16 - 1.654 +++ Changes 12 Aug 2002 07:11:39 - 1.655 @@ -10,6 +10,9 @@ =item 1.27_01-dev +eliminate warnings when flushing functions with empty () prototypes in +Apache::PerlRun::flush_namespace [Yair Lenga <[EMAIL PROTECTED]>] + fix Apache::Status to not use :: in filenames, which is not allowed on certain OSs [DH <[EMAIL PROTECTED]>]
cvs commit: modperl README
stas2002/08/01 18:52:07 Modified:.README Log: bring the links up-to-date Revision ChangesPath 1.12 +25 -18modperl/README Index: README === RCS file: /home/cvs/modperl/README,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- README25 Mar 2002 02:57:59 - 1.11 +++ README2 Aug 2002 01:52:07 - 1.12 @@ -67,32 +67,39 @@ Here is an important list of links to follow: -Ken Williams' Epigone mail list archive: -http://forum.swarthmore.edu/epigone/modperl +The Apache/Perl homepage: +http://perl.apache.org/ + or +http://apache.perl.org/ + +Mailing list archives: +http://perl.apache.org/maillist/modperl.html#Searchable_Archives + +Documentation: +http://perl.apache.org/docs/index.html -Frank Cringle's mod_perl FAQ: -http://perl.apache.org/faq/ +Books: -Stas Bekman's "mod_perl Developer's Mini Guide": -http://perl.apache.org/guide/ + "Practical mod_perl" + By Stas Bekman and Eric Cholet + http://www.modperlbook.org/ -Lincoln Stein and Doug MacEachern's book - "Writing Apache Modules with Perl and C": -http://www.modperl.com/ + "The mod_perl Developer's Cookbook" + By Geoffrey Young; Paul Lindner; Randy Kobes + http://www.modperlcookbook.org/ -Andrew Ford's mod_perl quick reference card: -http://www.refcards.com/ + "mod_perl quick reference card" + By Andrew Ford + http://www.refcards.com/ -Vivek Khera's mod_perl performance tuning guide: -http://perl.apache.org/tuning/ + "Writing Apache Modules with Perl and C": + By Lincoln Stein and Doug MacEachern + http://www.modperl.com/ The Apache/Perl module list: -http://www.perl.com/CPAN/modules/by-module/Apache/apache-modlist.html +http://perl.apache.org/products/apache-modules.html + -The Apache/Perl homepage: -http://perl.apache.org/ - or -http://apache.perl.org/ Enjoy, -Doug MacEachern ([EMAIL PROTECTED])
cvs commit: modperl Changes
stas2002/07/30 19:10:16 Modified:lib/Apache Status.pm .Changes Log: fix Apache::Status to not use :: in filenames, which is not allowed on certain OSs Submitted by: DH <[EMAIL PROTECTED]> Revision ChangesPath 1.27 +1 -0 modperl/lib/Apache/Status.pm Index: Status.pm === RCS file: /home/cvs/modperl/lib/Apache/Status.pm,v retrieving revision 1.26 retrieving revision 1.27 diff -u -r1.26 -r1.27 --- Status.pm 23 May 2002 16:14:56 - 1.26 +++ Status.pm 31 Jul 2002 02:10:15 - 1.27 @@ -514,6 +514,7 @@ mkdir $dir, 0755 unless -d $dir; (my $thing = $r->path_info) =~ s:^/::; +$thing =~ s{::}{-}g; # :: is not allowed in the filename on some OS my $type = "dot"; my $file = "$dir/$thing.$$.gif"; 1.654 +3 -0 modperl/Changes Index: Changes === RCS file: /home/cvs/modperl/Changes,v retrieving revision 1.653 retrieving revision 1.654 diff -u -r1.653 -r1.654 --- Changes 19 Jun 2002 16:31:52 - 1.653 +++ Changes 31 Jul 2002 02:10:16 - 1.654 @@ -10,6 +10,9 @@ =item 1.27_01-dev +fix Apache::Status to not use :: in filenames, which is not allowed on +certain OSs [DH <[EMAIL PROTECTED]>] + various cygwin fixes [Per Einar Ellefsen <[EMAIL PROTECTED]>] fix to compile with 5.8.0 on win32 [Randy Kobes <[EMAIL PROTECTED]>]
cvs commit: modperl/htdocs/manual/mod mod_perl.html
stas2002/07/01 08:17:09 Modified:htdocs/manual/mod mod_perl.html Log: tidy up the mod_perl manual to comply with xhtml standard: % tidy -mi -asxml -wrap 80 mod_perl.html Submitted by: Rich Bowen <[EMAIL PROTECTED]> Revision ChangesPath 1.2 +751 -661 modperl/htdocs/manual/mod/mod_perl.html Index: mod_perl.html === RCS file: /home/cvs/modperl/htdocs/manual/mod/mod_perl.html,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- mod_perl.html 19 Mar 1998 23:08:41 - 1.1 +++ mod_perl.html 1 Jul 2002 15:17:09 - 1.2 @@ -1,662 +1,752 @@ - -Apache module mod_perl +http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";> + +http://www.w3.org/1999/xhtml";> + + + +Apache module mod_perl + + + + + + + + + Apache HTTP Server Version 1.3 + + +Module mod_perl + +This module is contained in the mod_perl.c file. + + + <Perl> + </Perl> + =pod + =cut + __END__ + PerlAccessHandler + PerlAuthenHandler + PerlAuthzHandler + PerlChildExitHandler + PerlChildInitHandler + PerlCleanupHandler + PerlDispatchHandler + PerlFixupHandler + PerlFreshRestart + PerlHandler + PerlHeaderParserHandler + PerlInitHandler + PerlLogHandler + PerlModule + PerlPassEnv + PerlPostReadRequestHandler + PerlRequire + PerlRestartHandler + PerlScript + PerlSendHeader + PerlSetEnv + PerlSetVar + PerlSetupEnv + PerlTaintCheck + PerlTransHandler + PerlTypeHandler + PerlWarn + + + +<Perl> directive + +Description: Perl code + + Syntax: <Perl> Raw Text +(RAW_ARGS) + PerlSyntax: N/A + Context: Allowed in *.conf anywhere and in +.htaccess + Override: Any other than None + Status: Extension + Module: mod_perl + + +</Perl> directive + +Description: End Perl code + + Syntax: </Perl> (NO_ARGS) + PerlSyntax: N/A + Context: Allowed in *.conf anywhere and in +.htaccess + Override: Any other than None + Status: Extension + Module: mod_perl + + +=pod directive + +Description: Start of POD + + Syntax: =pod Raw Text +(RAW_ARGS) + PerlSyntax: =pod + Context: Allowed in *.conf anywhere and in +.htaccess + Override: Any other than None + Status: Extension + Module: mod_perl + + +=cut directive + +Description: End of POD + + Syntax: =cut (NO_ARGS) + PerlSyntax: =cut + Context: Allowed in *.conf anywhere and in +.htaccess + Override: Any other than None + Status: Extension + Module: mod_perl + + +__END__ directive + +Description: Stop reading config + + Syntax: __END__ Raw Text +(RAW_ARGS) + PerlSyntax: __END__ + Context: Allowed in *.conf anywhere and in +.htaccess + Override: Any other than None + Status: Extension + Module: mod_perl + + +PerlAccessHandler +directive + +Description: the Perl Access handler routine name + + Syntax: PerlAccessHandler Arg1 x n +(ITERATE) + PerlSyntax: push @PerlAccessHandler, +$arg1 + Context: Allowed in *.conf anywhere and in +.htaccess + Override: Any other than None + Status: Extension + Module: mod_perl + + +PerlAuthenHandler +directive + +Description: the Perl Authentication handler routine name + + Syntax: PerlAuthenHandler Arg1 x n +(ITERATE) + PerlSyntax: push @PerlAuthenHandler, +$arg1 + Context: Allowed in *.conf anywhere and in +.htaccess + Override: Any other than None + Status: Extension + Module: mod_perl + + +PerlAuthzHandler +directive + +Description: the Perl Authorization handler routine name + + Syntax: PerlAuthzHandler Arg1 x n +(ITERATE) + PerlSyntax: push @PerlAuthzHandler, +$arg1 + Context: Allowed in *.conf anywhere and in +.htaccess + Override: Any other than None + Status: Extension + Module: mod_perl + + +PerlChildExitHandler directive + +Description: the Perl Child exit handler routine name + + Syntax: PerlChildExitHandler Arg1 x +n (ITERATE) + PerlSyntax: push @PerlChildExitHandler, +$arg1 + Context: Allowed in *.conf only outside +<Directory> or <Location> + Overr
cvs commit: modperl Changes
stas2002/06/05 22:17:06 Modified:Constants Constants.pm .Changes Log: Document the possible misuses of the Apache::Constant constants Submitted by: Per Einar Ellefsen <[EMAIL PROTECTED]> Revision ChangesPath 1.23 +33 -0 modperl/Constants/Constants.pm Index: Constants.pm === RCS file: /home/cvs/modperl/Constants/Constants.pm,v retrieving revision 1.22 retrieving revision 1.23 diff -u -r1.22 -r1.23 --- Constants.pm 24 Mar 2002 02:07:58 - 1.22 +++ Constants.pm 6 Jun 2002 05:17:05 - 1.23 @@ -243,6 +243,39 @@ =back +=head1 Misuses + +You should be aware of the issues relating to using constant +subroutines in Perl. For example this: + + $r->custom_response(FORBIDDEN => "File size exceeds quota."); + +will not set a custom response for C, but for the string +C<"FORBIDDEN">, which clearly isn't what is expected. You'll get an +error like this: + + [Tue Apr 23 19:46:14 2002] null: Argument "FORBIDDEN" isn't + numeric in subroutine entry at ... + +Therefore, the best solution is not to use the hash notation for +things that don't require it: + + $r->custom_response(FORBIDDEN, "File size exceeds quota."); + +Another important note is that instead of using HTTP codes, you should +use designed for that purpose constants. Therefore, this is wrong: + + sub handler { return 200; } + +The correct use is: + + use Apache::Constants qw(OK); + sub handler { return OK; } + +Also remember that C. + =head1 AUTHORS Doug MacEachern, Gisle Aas and h2xs + +=cut 1.651 +3 -0 modperl/Changes Index: Changes === RCS file: /home/cvs/modperl/Changes,v retrieving revision 1.650 retrieving revision 1.651 diff -u -r1.650 -r1.651 --- Changes 2 Jun 2002 03:07:13 - 1.650 +++ Changes 6 Jun 2002 05:17:05 - 1.651 @@ -10,6 +10,9 @@ =item 1.27_01-dev +Document the possible misuses of the Apache::Constant constants [Per +Einar Ellefsen <[EMAIL PROTECTED]>] + =item 1.27 - June 1, 2002 workaround Cwd bug in 5.8.0-RC1 that breaks apache configuration on solaris
cvs commit: modperl/Apache Apache.pm
stas02/05/16 08:21:47 Modified:Apache Apache.pm Log: s/PerlScript/PerlRequire/, the former is deprecated Revision ChangesPath 1.71 +1 -1 modperl/Apache/Apache.pm Index: Apache.pm === RCS file: /home/cvs/modperl/Apache/Apache.pm,v retrieving revision 1.70 retrieving revision 1.71 diff -u -r1.70 -r1.71 --- Apache.pm 24 Jan 2002 14:53:34 - 1.70 +++ Apache.pm 16 May 2002 15:21:46 - 1.71 @@ -703,7 +703,7 @@ =item $s = Apache-Eserver Same as above, but only available during server startup for use in -CPerlE> sections, B or B. +CPerlE> sections, B or B. =item $s-Eserver_admin
cvs commit: modperl STATUS
stas02/04/14 10:25:03 Modified:.STATUS Log: need to resolve the URI/LWP bad combinations issue. Revision ChangesPath 1.15 +10 -1 modperl/STATUS Index: STATUS === RCS file: /home/cvs/modperl/STATUS,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- STATUS2 Apr 2002 15:10:02 - 1.14 +++ STATUS14 Apr 2002 17:25:03 - 1.15 @@ -1,5 +1,5 @@ mod_perl 1.3 STATUS: - Last modified at [$Date: 2002/04/02 15:10:02 $] + Last modified at [$Date: 2002/04/14 17:25:03 $] Release: @@ -18,6 +18,15 @@ Needs Patch or Further Investigation + +* make test fails when a wrong combination of URI and LWP are + installed. (e.g. lwp 5.64 and URI 1.09). LWP's Makefile.PL + requires the right URI version, but certain binary distributors + miss this requirement and distribute LWP without making a + dependency on the right version of the URI package +Report: many reports in the last year. +Status: ??? +Suggestion: require libwww-perl 5.64 and URI 1.1 * two identical directives in configuration Report: http://marc.theaimsgroup.com/?l=apache-modperl&m=97449481013350&w=2
cvs commit: modperl/t report.PL
stas02/03/24 18:58:00 Modified:.CREDITS Changes README SUPPORT apache-modlist.html mod_perl_cvs.pod mod_perl_tuning.pod eg README faq mod_perl_faq.pod treport.PL Log: Adjust the mailling list addresses 's|\@apache\.org|\@perl.apache.org|' Revision ChangesPath 1.7 +2 -2 modperl/CREDITS Index: CREDITS === RCS file: /home/cvs/modperl/CREDITS,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- CREDITS 22 Aug 2001 02:31:29 - 1.6 +++ CREDITS 25 Mar 2002 02:57:59 - 1.7 @@ -310,7 +310,7 @@ There are B other people who have contributed a great deal to mod_perl in one way or another, this list is derived from the Changes -file, activity on the [EMAIL PROTECTED] list including support, +file, activity on the [EMAIL PROTECTED] list including support, suggestions and new ideas, along with help through private mails or other means. @@ -340,4 +340,4 @@ =head1 REVISION -$Revision: 1.6 $ $Date: 2001/08/22 02:31:29 $ +$Revision: 1.7 $ $Date: 2002/03/25 02:57:59 $ 1.638 +3 -0 modperl/Changes Index: Changes === RCS file: /home/cvs/modperl/Changes,v retrieving revision 1.637 retrieving revision 1.638 diff -u -r1.637 -r1.638 --- Changes 25 Mar 2002 01:59:02 - 1.637 +++ Changes 25 Mar 2002 02:57:59 - 1.638 @@ -10,6 +10,9 @@ =item 1.26_01-dev +Adjust the mailling list addresses +'s|\@apache\.org|\@perl.apache.org|' [Stas Bekman <[EMAIL PROTECTED]>] + Apache::PerlRun will now localize $SIG{__{DIE,WARN}__} thanks to Jon Coulter for the spot 1.11 +1 -1 modperl/README Index: README === RCS file: /home/cvs/modperl/README,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- README3 Mar 2000 06:58:26 - 1.10 +++ README25 Mar 2002 02:57:59 - 1.11 @@ -61,7 +61,7 @@ directly inside SSI files. For comments, questions, bug-reports, etc., join the Apache/Perl -mailing list by sending mail to [EMAIL PROTECTED] +mailing list by sending mail to [EMAIL PROTECTED] sending mail to [EMAIL PROTECTED] will subscribe you to the very low-traffic announcements list. 1.18 +4 -4 modperl/SUPPORT Index: SUPPORT === RCS file: /home/cvs/modperl/SUPPORT,v retrieving revision 1.17 retrieving revision 1.18 diff -u -r1.17 -r1.18 --- SUPPORT 19 Sep 2001 17:03:17 - 1.17 +++ SUPPORT 25 Mar 2002 02:57:59 - 1.18 @@ -5,12 +5,12 @@ =item MAIL LIST For comments, questions, bug-reports, announcements, etc., send mail -to I<[EMAIL PROTECTED]>. +to I<[EMAIL PROTECTED]>. To subscribe to this list (which you must do to send mail to the list), send a mail message to -I<[EMAIL PROTECTED]> +I<[EMAIL PROTECTED]> We also have a mailing list just for announcements. Subscribe by sending a message to @@ -26,7 +26,7 @@ Subscribe by (you properly got the idea by now) sending mail to I<[EMAIL PROTECTED]>. -All CVS commit messages goes to the I<[EMAIL PROTECTED]> +All CVS commit messages goes to the I<[EMAIL PROTECTED]> list. Embperl CVS messages goes to I<[EMAIL PROTECTED]>. @@ -57,7 +57,7 @@ =item WHERE -Please send mail to [EMAIL PROTECTED] +Please send mail to [EMAIL PROTECTED] =item WHAT 1.82 +3 -3 modperl/apache-modlist.html Index: apache-modlist.html === RCS file: /home/cvs/modperl/apache-modlist.html,v retrieving revision 1.81 retrieving revision 1.82 diff -u -r1.81 -r1.82 --- apache-modlist.html 15 Feb 2001 09:27:04 - 1.81 +++ apache-modlist.html 25 Mar 2002 02:57:59 - 1.82 @@ -6,7 +6,7 @@ The Apache/Perl Module List Maintained by mailto:[EMAIL PROTECTED]";>Doug MacEachern, - $Revision: 1.81 $ $Date: 2001/02/15 09:27:04 $ + $Revision: 1.82 $ $Date: 2002/03/25 02:57:59 $ Contents Introduction @@ -48,7 +48,7 @@ Perl module list, all that is said there is relevant here! If you have any additions or changes for the list, please send them to -the Apache/Perl mailto:[EMAIL PROTECTED]";> mailing list +the Apache/Perl mailto:[EMAIL PROTECTED]";> mailing list or to mailto:[EMAIL PROTECTED]";>me. If you wish to share you module(s) the Per
cvs commit: modperl Changes Makefile.PL
stas02/03/22 11:58:13 Modified:.Changes Makefile.PL Log: the first flag argument to perl cannot start with space, since perl tries to open the " -spi.bak" as a file. fix that in the win32 case. Revision ChangesPath 1.626 +4 -0 modperl/Changes Index: Changes === RCS file: /home/cvs/modperl/Changes,v retrieving revision 1.625 retrieving revision 1.626 diff -u -r1.625 -r1.626 --- Changes 19 Mar 2002 02:18:02 - 1.625 +++ Changes 22 Mar 2002 19:58:13 - 1.626 @@ -10,6 +10,10 @@ =item 1.26_01-dev +the first flag argument to perl cannot start with space, since perl tries +to open the " -spi.bak" as a file. fix that in the win32 case. +[Stas Bekman <[EMAIL PROTECTED]>] + starting from perl 5.7.3 for tied filehandles, tiedscalar magic is applied to the IO slot of the GP rather than the GV itself. adjust the TIEHANDLE macro to work properly under 5.7.3+. [Charles Jardine <[EMAIL PROTECTED]>, 1.197 +1 -1 modperl/Makefile.PL Index: Makefile.PL === RCS file: /home/cvs/modperl/Makefile.PL,v retrieving revision 1.196 retrieving revision 1.197 diff -u -r1.196 -r1.197 --- Makefile.PL 9 Sep 2001 21:56:46 - 1.196 +++ Makefile.PL 22 Mar 2002 19:58:13 - 1.197 @@ -1101,7 +1101,7 @@ cp "lib/mod_perl_hooks.pm.PL", "lib/mod_perl_hooks.pm"; if ($Is_Win32) { - my @args = ($^X, ' -spi.bak ', ' -e ', "\"s/sub mod_perl::hooks.*/sub mod_perl::hooks { qw($hooks) }/\"", 'lib/mod_perl_hooks.pm'); + my @args = ($^X, '-spi.bak ', ' -e ', "\"s/sub mod_perl::hooks.*/sub mod_perl::hooks { qw($hooks) }/\"", 'lib/mod_perl_hooks.pm'); system(@args) == 0 or die "@args failed\n"; } iedit "lib/mod_perl_hooks.pm",
cvs commit: modperl/src/modules/perl perlio.c
stas02/03/18 18:18:02 Modified:.Changes src/modules/perl perlio.c Log: starting from perl 5.7.3 for tied filehandles, tiedscalar magic is applied to the IO slot of the GP rather than the GV itself. adjust the TIEHANDLE macro to work properly under 5.7.3+. [Charles Jardine <[EMAIL PROTECTED]>, Stas Bekman <[EMAIL PROTECTED]>] Revision ChangesPath 1.625 +5 -0 modperl/Changes Index: Changes === RCS file: /home/cvs/modperl/Changes,v retrieving revision 1.624 retrieving revision 1.625 diff -u -r1.624 -r1.625 --- Changes 11 Dec 2001 03:29:43 - 1.624 +++ Changes 19 Mar 2002 02:18:02 - 1.625 @@ -10,6 +10,11 @@ =item 1.26_01-dev +starting from perl 5.7.3 for tied filehandles, tiedscalar magic is applied +to the IO slot of the GP rather than the GV itself. adjust the TIEHANDLE +macro to work properly under 5.7.3+. [Charles Jardine <[EMAIL PROTECTED]>, +Stas Bekman <[EMAIL PROTECTED]>] + added perl_perl_merge_dir_config and array_header2avrv symbols to mod_perl.def for win32 and mod_perl.exp for aix. [Randy Kobes <[EMAIL PROTECTED]>] 1.8 +13 -0 modperl/src/modules/perl/perlio.c Index: perlio.c === RCS file: /home/cvs/modperl/src/modules/perl/perlio.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- perlio.c 13 Jun 2001 21:27:51 - 1.7 +++ perlio.c 19 Mar 2002 02:18:02 - 1.8 @@ -51,12 +51,25 @@ #define dHANDLE(name) GV *handle = gv_fetchpv(name, TRUE, SVt_PVIO) +#if (PERL_REVISION == 5 && PERL_VERSION < 7) + #define TIEHANDLE(name,obj) \ { \ dHANDLE(name); \ sv_unmagic((SV*)handle, 'q'); \ sv_magic((SV*)handle, obj, 'q', Nullch, 0); \ } + +#else + +#define TIEHANDLE(name,obj) \ +{ \ + dHANDLE(name); \ + sv_unmagic((SV*)GvIOp((SV*)handle), 'q'); \ + sv_magic((SV*)GvIOp((SV*)handle), obj, 'q', Nullch, 0); \ +} + +#endif #if 0 #define TIED tied_handle
cvs commit: modperl-2.0/xs/Apache/SubProcess Apache__SubProcess.h
stas02/03/14 20:29:25 Modified:xs/Apache/SubProcess Apache__SubProcess.h Log: - adjust for APR changes: s/kill_after_timeout/APR_KILL_AFTER_TIMEOUT/ Revision ChangesPath 1.10 +1 -1 modperl-2.0/xs/Apache/SubProcess/Apache__SubProcess.h Index: Apache__SubProcess.h === RCS file: /home/cvs/modperl-2.0/xs/Apache/SubProcess/Apache__SubProcess.h,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- Apache__SubProcess.h 19 Jan 2002 00:25:41 - 1.9 +++ Apache__SubProcess.h 15 Mar 2002 04:29:25 - 1.10 @@ -75,7 +75,7 @@ return rc; } -apr_pool_note_subprocess(p, procnew, kill_after_timeout); +apr_pool_note_subprocess(p, procnew, APR_KILL_AFTER_TIMEOUT); if (!(*script_in = procnew->in)) { Perl_croak(aTHX_ "broken program-in stream");
cvs commit: modperl-2.0/xs/maps apr_types.map
stas02/03/14 18:03:57 Modified:xs/maps apr_types.map Log: fixing the typemap for apr_interval_time_t to NV, because it's: typedef apr_int64_t apr_interval_time_t; 64bit != IV, but NV Revision ChangesPath 1.13 +1 -1 modperl-2.0/xs/maps/apr_types.map Index: apr_types.map === RCS file: /home/cvs/modperl-2.0/xs/maps/apr_types.map,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- apr_types.map 10 Mar 2002 00:11:50 - 1.12 +++ apr_types.map 15 Mar 2002 02:03:57 - 1.13 @@ -139,7 +139,7 @@ apr_ssize_t| IV apr_size_t | IV apr_time_t | NV -apr_interval_time_t| IV +apr_interval_time_t| NV apr_gid_t | IV apr_uid_t | IV apr_off_t | IV
cvs commit: modperl/lib/Apache SizeLimit.pm
stas02/03/13 21:27:44 Modified:lib/Apache SizeLimit.pm Log: - the parent process doesn't get killed if it's big, so correct the note not to say "exiting..." Revision ChangesPath 1.9 +1 -1 modperl/lib/Apache/SizeLimit.pm Index: SizeLimit.pm === RCS file: /home/cvs/modperl/lib/Apache/SizeLimit.pm,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- SizeLimit.pm 6 Jul 2001 13:44:39 - 1.8 +++ SizeLimit.pm 14 Mar 2002 05:27:43 - 1.9 @@ -227,7 +227,7 @@ $r->child_terminate; } else {# this is the main httpd, whose parent is init? - my $msg = "main process too big, exiting at SIZE=$size KB "; + my $msg = "main process too big, SIZE=$size KB "; $msg .= " SHARE=$share KB" if ($share); error_log($msg); }
cvs commit: modperl-2.0/lib/ModPerl WrapXS.pm
stas02/03/13 09:26:50 Modified:lib/ModPerl WrapXS.pm Log: - wrap the XS loading in the BEGIN block, to make sure that any constants defined in the boot function will be immediately available during the perl code compilation Revision ChangesPath 1.40 +7 -4 modperl-2.0/lib/ModPerl/WrapXS.pm Index: WrapXS.pm === RCS file: /home/cvs/modperl-2.0/lib/ModPerl/WrapXS.pm,v retrieving revision 1.39 retrieving revision 1.40 diff -u -r1.39 -r1.40 --- WrapXS.pm 14 Dec 2001 05:12:13 - 1.39 +++ WrapXS.pm 13 Mar 2002 17:26:50 - 1.40 @@ -496,10 +496,13 @@ $noedit_warning package $module; -$isa -use $loader (); -our \$VERSION = '0.01'; -$loader\::load __PACKAGE__; + +BEGIN { +$isa +use $loader (); +our \$VERSION = '0.01'; +$loader\::load __PACKAGE__; +} $code
cvs commit: modperl-2.0 Makefile.PL
stas02/03/13 08:01:02 Modified:.Makefile.PL Log: do yourself a favor, don't use perl v5.6.0 Revision ChangesPath 1.59 +5 -0 modperl-2.0/Makefile.PL Index: Makefile.PL === RCS file: /home/cvs/modperl-2.0/Makefile.PL,v retrieving revision 1.58 retrieving revision 1.59 diff -u -r1.58 -r1.59 --- Makefile.PL 31 Dec 2001 08:45:13 - 1.58 +++ Makefile.PL 13 Mar 2002 16:01:02 - 1.59 @@ -25,6 +25,11 @@ } } +if ($] < 5.006001) { +error "You are running Perl version $]\n" . +"We strongly suggest to upgrade to at least 5.6.1"; +} + my $build = Apache::Build->new(init => 1); my $code = ModPerl::Code->new;
cvs commit: modperl-2.0/lib/ModPerl TypeMap.pm
stas02/03/11 02:29:44 Modified:lib/ModPerl TypeMap.pm Log: - check return value of map_type and die if undef, otherwise were getting 'odd number of elements in hash' error. Revision ChangesPath 1.15 +6 -2 modperl-2.0/lib/ModPerl/TypeMap.pm Index: TypeMap.pm === RCS file: /home/cvs/modperl-2.0/lib/ModPerl/TypeMap.pm,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- TypeMap.pm6 Mar 2002 06:13:39 - 1.14 +++ TypeMap.pm11 Mar 2002 10:29:44 - 1.15 @@ -223,10 +223,14 @@ return unless $self->can_map($map, $func->{return_type}, map $_->{type}, @{ $func->{args} }); + +my $type = $map->{return_type} || $func->{return_type} || 'void'; +my $map_type = $self->map_type($type); +die "unknown typemap: '$type'" unless defined $map_type; + my $mf = { name=> $func->{name}, - return_type => $self->map_type($map->{return_type} || - $func->{return_type} || 'void'), + return_type => $map_type, args=> $self->map_args($func), perl_name => $map->{name}, thx => $func->{thx},
cvs commit: modperl-site/guide help.html
stas02/03/07 08:03:12 Modified:guidehelp.html Log: [EMAIL PROTECTED][EMAIL PROTECTED]/ Revision ChangesPath 1.33 +6 -6 modperl-site/guide/help.html Index: help.html === RCS file: /home/cvs/modperl-site/guide/help.html,v retrieving revision 1.32 retrieving revision 1.33 diff -u -r1.32 -r1.33 --- help.html 15 Nov 2001 09:04:50 - 1.32 +++ help.html 7 Mar 2002 16:03:12 - 1.33 @@ -261,14 +261,14 @@ The Apache/Perl mailing list is available for mod_perl users and developers to share ideas, solve problems and discuss things related to mod_perl and the Apache::* modules. To subscribe to this list, send email to mailto:[EMAIL PROTECTED]";>[EMAIL PROTECTED] +HREF="mailto:[EMAIL PROTECTED]";>[EMAIL PROTECTED] . To unsubscribe send email to mailto:[EMAIL PROTECTED]";>[EMAIL PROTECTED] +HREF="mailto:[EMAIL PROTECTED]";>[EMAIL PROTECTED] . To subscribe to the digest list send email to mailto:[EMAIL PROTECTED]";>[EMAIL PROTECTED] +HREF="mailto:[EMAIL PROTECTED]";>[EMAIL PROTECTED] . @@ -426,11 +426,11 @@ To subscribe to this list, send email to mailto:[EMAIL PROTECTED]";>[EMAIL PROTECTED] +HREF="mailto:[EMAIL PROTECTED]";>[EMAIL PROTECTED] . To unsubscribe send email to mailto:[EMAIL PROTECTED]";>[EMAIL PROTECTED] +HREF="mailto:[EMAIL PROTECTED]";>[EMAIL PROTECTED] . Send email to mailto:[EMAIL PROTECTED]";>[EMAIL PROTECTED] to post to +HREF="mailto:[EMAIL PROTECTED]";>[EMAIL PROTECTED] to post to the list.
cvs commit: modperl-site index.html
stas02/03/07 07:56:36 Modified:.index.html Log: [EMAIL PROTECTED][EMAIL PROTECTED]/ for all mailing lists which weren't moved earlier Revision ChangesPath 1.100 +10 -10modperl-site/index.html Index: index.html === RCS file: /home/cvs/modperl-site/index.html,v retrieving revision 1.99 retrieving revision 1.100 diff -u -r1.99 -r1.100 --- index.html22 Feb 2002 04:35:25 - 1.99 +++ index.html7 Mar 2002 15:56:36 - 1.100 @@ -495,19 +495,19 @@ subscribe to the list: mailto:[EMAIL PROTECTED]";>[EMAIL PROTECTED]. + href="mailto:[EMAIL PROTECTED]";>[EMAIL PROTECTED]. subscribe to the list's digest: mailto:[EMAIL PROTECTED]";>[EMAIL PROTECTED]. + href="mailto:[EMAIL PROTECTED]";>[EMAIL PROTECTED]. unsubscribe from the list: mailto:[EMAIL PROTECTED]";>[EMAIL PROTECTED]. + href="mailto:[EMAIL PROTECTED]";>[EMAIL PROTECTED]. get help with the list: mailto:[EMAIL PROTECTED]";>[EMAIL PROTECTED]. + href="mailto:[EMAIL PROTECTED]";>[EMAIL PROTECTED]. @@ -746,18 +746,18 @@ subscribe to the list: mailto:[EMAIL PROTECTED]";> - [EMAIL PROTECTED]. + href="mailto:[EMAIL PROTECTED]";> + [EMAIL PROTECTED]. unsubscribe from the list: mailto:[EMAIL PROTECTED]";> - [EMAIL PROTECTED]. + href="mailto:[EMAIL PROTECTED]";> + [EMAIL PROTECTED]. get help with the list: mailto:[EMAIL PROTECTED]";> - [EMAIL PROTECTED]. + href="mailto:[EMAIL PROTECTED]";> + [EMAIL PROTECTED].
cvs commit: modperl-2.0/lib/ModPerl TypeMap.pm
stas02/03/05 22:13:39 Modified:lib/ModPerl TypeMap.pm Log: - better diagnostics when the typemap conversion fails Revision ChangesPath 1.14 +5 -1 modperl-2.0/lib/ModPerl/TypeMap.pm Index: TypeMap.pm === RCS file: /home/cvs/modperl-2.0/lib/ModPerl/TypeMap.pm,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- TypeMap.pm21 Feb 2002 01:40:03 - 1.13 +++ TypeMap.pm6 Mar 2002 06:13:39 - 1.14 @@ -143,10 +143,14 @@ sub map_arg { my($self, $arg) = @_; + +my $map_type = $self->map_type($arg->{type}); +die "unknown typemap: '$arg->{type}'" unless defined $map_type; + return { name=> $arg->{name}, default => $arg->{default}, - type=> $self->map_type($arg->{type}), + type=> $map_type, rtype => $arg->{type}, } }
cvs commit: modperl-2.0/xs/APR/PerlIO apr_perlio.c apr_perlio.h
stas02/03/05 21:30:27 Modified:xs/APR/PerlIO apr_perlio.c apr_perlio.h Log: - convert the int APR_PERLIO_HOOK hooks into enums: benefit from compile-time checks - now can get rid of default: cases using these hooks - rewrite the eof() switch to deploy the default case, which was empty and causing warnings under gcc3. <> Revision ChangesPath 1.11 +12 -26modperl-2.0/xs/APR/PerlIO/apr_perlio.c Index: apr_perlio.c === RCS file: /home/cvs/modperl-2.0/xs/APR/PerlIO/apr_perlio.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- apr_perlio.c 8 Jan 2002 01:09:19 - 1.10 +++ apr_perlio.c 6 Mar 2002 05:30:27 - 1.11 @@ -304,11 +304,10 @@ rc = apr_file_eof(st->file); switch (rc) { - case APR_SUCCESS: -return 0; case APR_EOF: return 1; default: +return 0; } return -1; @@ -357,8 +356,8 @@ /* * PerlIO <=> apr_file_t helper functions * */ -PerlIO *apr_perlio_apr_file_to_PerlIO(pTHX_ apr_file_t *file, - apr_pool_t *pool, int type) +PerlIO *apr_perlio_apr_file_to_PerlIO(pTHX_ apr_file_t *file, apr_pool_t *pool, + apr_perlio_hook_e type) { char *mode; const char *layers = ":APR"; @@ -374,8 +373,6 @@ case APR_PERLIO_HOOK_READ: mode = "r"; break; - default: -/* */ }; PerlIO_apply_layers(aTHX_ f, mode, layers); @@ -394,10 +391,7 @@ return NULL; } -/* - * type: APR_PERLIO_HOOK_READ | APR_PERLIO_HOOK_WRITE - */ -static SV *apr_perlio_PerlIO_to_glob(pTHX_ PerlIO *pio, int type) +static SV *apr_perlio_PerlIO_to_glob(pTHX_ PerlIO *pio, apr_perlio_hook_e type) { /* XXX: modperl_perl_gensym() cannot be used outside of httpd */ SV *retval = modperl_perl_gensym(aTHX_ "APR::PerlIO"); @@ -413,24 +407,24 @@ case APR_PERLIO_HOOK_READ: IoIFP(GvIOp(gv)) = pio; break; - default: -/* */ }; return sv_2mortal(retval); } -SV *apr_perlio_apr_file_to_glob(pTHX_ apr_file_t *file, -apr_pool_t *pool, int type) +SV *apr_perlio_apr_file_to_glob(pTHX_ apr_file_t *file, apr_pool_t *pool, +apr_perlio_hook_e type) { return apr_perlio_PerlIO_to_glob(aTHX_ - apr_perlio_apr_file_to_PerlIO(aTHX_ file, pool, type), + apr_perlio_apr_file_to_PerlIO(aTHX_ file, + pool, type), type); } #elif !defined(PERLIO_LAYERS) && !defined(WIN32) /* NOT PERLIO_LAYERS (5.6.1) */ -static FILE *apr_perlio_apr_file_to_FILE(pTHX_ apr_file_t *file, int type) +static FILE *apr_perlio_apr_file_to_FILE(pTHX_ apr_file_t *file, + apr_perlio_hook_e type) { FILE *retval; char *mode; @@ -445,8 +439,6 @@ case APR_PERLIO_HOOK_READ: mode = "r"; break; - default: -/* */ }; /* convert to the OS representation of file */ @@ -466,12 +458,8 @@ return retval; } -/* - * - * type: APR_PERLIO_HOOK_READ | APR_PERLIO_HOOK_WRITE - */ -SV *apr_perlio_apr_file_to_glob(pTHX_ apr_file_t *file, -apr_pool_t *pool, int type) +SV *apr_perlio_apr_file_to_glob(pTHX_ apr_file_t *file, apr_pool_t *pool, +apr_perlio_hook_e type) { /* XXX: modperl_perl_gensym() cannot be used outside of httpd */ SV *retval = modperl_perl_gensym(aTHX_ "APR::PerlIO"); @@ -487,8 +475,6 @@ case APR_PERLIO_HOOK_READ: IoIFP(GvIOp(gv)) = apr_perlio_apr_file_to_FILE(aTHX_ file, type); break; - default: -/* */ }; return sv_2mortal(retval); 1.2 +12 -8 modperl-2.0/xs/APR/PerlIO/apr_perlio.h Index: apr_perlio.h === RCS file: /home/cvs/modperl-2.0/xs/APR/PerlIO/apr_perlio.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- apr_perlio.h 17 Dec 2001 16:20:27 - 1.1 +++ apr_perlio.h 6 Mar 2002 05:30:27 - 1.2 @@ -14,8 +14,10 @@ #include "apr_optional.h" #endif -#define APR_PERLIO_HOOK_READ 0 -#define APR_PERLIO_HOOK_WRITE 1 +typedef enum { +APR_PERLIO_HOOK_READ, +APR_PERLIO_HOOK_WRIT
cvs commit: modperl-2.0 .cvsignore
stas02/03/05 21:24:57 Modified:t/apr.cvsignore ..cvsignore Log: -ignore files Submitted by: "Philippe M. Chiasson" <[EMAIL PROTECTED]> Reviewed by: stas Revision ChangesPath 1.4 +4 -1 modperl-2.0/t/apr/.cvsignore Index: .cvsignore === RCS file: /home/cvs/modperl-2.0/t/apr/.cvsignore,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- .cvsignore18 Dec 2001 01:56:47 - 1.3 +++ .cvsignore6 Mar 2002 05:24:57 - 1.4 @@ -1,8 +1,11 @@ base64.t constants.t +date.t lib.t netlib.t +perlio.t pool.t +string.t table.t +util.t uuid.t -perlio.t 1.5 +1 -0 modperl-2.0/.cvsignore Index: .cvsignore === RCS file: /home/cvs/modperl-2.0/.cvsignore,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- .cvsignore5 Mar 2001 04:06:54 - 1.4 +++ .cvsignore6 Mar 2002 05:24:57 - 1.5 @@ -4,3 +4,4 @@ pm_to_blib scraps diff.txt +smoke-report-*.txt
cvs commit: modperl-2.0 INSTALL
stas02/02/28 01:57:09 Modified:.INSTALL Log: - correct the path Revision ChangesPath 1.2 +1 -1 modperl-2.0/INSTALL Index: INSTALL === RCS file: /home/cvs/modperl-2.0/INSTALL,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- INSTALL 28 Feb 2002 09:50:27 - 1.1 +++ INSTALL 28 Feb 2002 09:57:09 - 1.2 @@ -1,3 +1,3 @@ -See docs/src/docs/2.0/user/install/install.pod +See docs/user/install/install.pod
cvs commit: modperl-2.0 INSTALL
stas02/02/28 01:50:27 Added: .INSTALL Log: add pointer for install docs Submitted by: Daniel R Risacher <[EMAIL PROTECTED]> Revision ChangesPath 1.1 modperl-2.0/INSTALL Index: INSTALL === See docs/src/docs/2.0/user/install/install.pod
cvs commit: modperl-site index.html
stas02/02/21 20:35:25 Modified:.index.html Log: - add a ref/desc of Bricolage Revision ChangesPath 1.99 +11 -0 modperl-site/index.html Index: index.html === RCS file: /home/cvs/modperl-site/index.html,v retrieving revision 1.98 retrieving revision 1.99 diff -u -r1.98 -r1.99 --- index.html29 Jan 2002 04:30:10 - 1.98 +++ index.html22 Feb 2002 04:35:25 - 1.99 @@ -1197,6 +1197,17 @@ + + http://bricolage.thepirtgroup.com/";>Bricolage + is a full-featured, open-source, enterprise-class + content management system. It offers a browser-based + interface for ease-of use, a full-fledged templating + system with complete programming language support + for flexibility, and many other features. It + operates in an Apache/mod_perl environment, and uses + the PostgreSQL RDBMS for its repository. + +
cvs commit: modperl-site/netcraft graph.jpg index.html input.data pseudo-graph.jpg
stas02/02/19 06:10:37 Modified:netcraft graph.jpg index.html input.data pseudo-graph.jpg Log: january 2002 stats Revision ChangesPath 1.16 +230 -217 modperl-site/netcraft/graph.jpg <> 1.45 +3 -2 modperl-site/netcraft/index.html Index: index.html === RCS file: /home/cvs/modperl-site/netcraft/index.html,v retrieving revision 1.44 retrieving revision 1.45 diff -u -r1.44 -r1.45 --- index.html2 Jan 2002 03:14:20 - 1.44 +++ index.html19 Feb 2002 14:10:36 - 1.45 @@ -13,10 +13,10 @@ SecuritySpace provides yet -http://www.securityspace.com/s_survey/data/man.200112/apachemods.html";> +http://www.securityspace.com/s_survey/data/man.200201/apachemods.html";> another report. Make sure to click on the menu at the left to pick the latest month, since the link hardcodes the month. They also -provide a http://www.securityspace.com/s_survey/data/man.200112/apachemods.html?mod=cGVybA==";>page similar to this one with statistics and a graph based +provide a http://www.securityspace.com/s_survey/data/man.200201/apachemods.html?mod=cGVybA==";>page similar to this one with statistics and a graph based on the data collected by http://www.securityspace.com/";>www.securityspace.com @@ -45,6 +45,7 @@ Surveyhostnamesunique ip addresses + January 2002 2819847341458 December 2001 2720503326545 November 2001 2651419322595 October 2001 2540267293633 1.29 +1 -0 modperl-site/netcraft/input.data Index: input.data === RCS file: /home/cvs/modperl-site/netcraft/input.data,v retrieving revision 1.28 retrieving revision 1.29 diff -u -r1.28 -r1.29 --- input.data2 Jan 2002 03:08:24 - 1.28 +++ input.data19 Feb 2002 14:10:36 - 1.29 @@ -1,3 +1,4 @@ +January 2002 2819847 341458 December 20012720503 326545 November 20012651419 322595 October 2001 2540267 293633 1.16 +46 -54modperl-site/netcraft/pseudo-graph.jpg <>
cvs commit: modperl-2.0/xs/maps apr_functions.map
stas02/01/30 18:41:27 Modified:t/response/TestAPR util.pm xs/maps apr_functions.map Log: - backoff my change from APR:: to APR::Util:: in the mapping of functions generate_random_bytes, password_validate, strerror Revision ChangesPath 1.3 +3 -3 modperl-2.0/t/response/TestAPR/util.pm Index: util.pm === RCS file: /home/cvs/modperl-2.0/t/response/TestAPR/util.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- util.pm 30 Jan 2002 07:01:16 - 1.2 +++ util.pm 31 Jan 2002 02:41:27 - 1.3 @@ -14,14 +14,14 @@ plan $r, tests => 3; my $blen = 10; -my $bytes = APR::Util::generate_random_bytes(10); +my $bytes = APR::generate_random_bytes(10); ok length($bytes) == $blen; -my $status = APR::Util::password_validate("one", "two"); +my $status = APR::password_validate("one", "two"); ok $status != 0; -my $str= APR::Util::strerror($status); +my $str= APR::strerror($status); t_debug "strerror=$str\n"; 1.34 +1 -1 modperl-2.0/xs/maps/apr_functions.map Index: apr_functions.map === RCS file: /home/cvs/modperl-2.0/xs/maps/apr_functions.map,v retrieving revision 1.33 retrieving revision 1.34 diff -u -r1.33 -r1.34 --- apr_functions.map 30 Jan 2002 06:57:31 - 1.33 +++ apr_functions.map 31 Jan 2002 02:41:27 - 1.34 @@ -407,7 +407,7 @@ apr_dso_sym apr_dso_unload -MODULE=APR::Util +MODULE=APR::Util PACKAGE=guess apr_filename_of_pathname apr_password_get apr_password_validate
cvs commit: modperl-2.0/t/response/TestAPR util.pm
stas02/01/29 23:01:17 Modified:t/response/TestAPR util.pm Log: - complete the APR::Lib to APR::Util move - adjust the function names to be APR::Util::... Revision ChangesPath 1.2 +4 -4 modperl-2.0/t/response/TestAPR/util.pm Index: util.pm === RCS file: /home/cvs/modperl-2.0/t/response/TestAPR/util.pm,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- util.pm 30 Jan 2002 05:21:52 - 1.1 +++ util.pm 30 Jan 2002 07:01:16 - 1.2 @@ -1,4 +1,4 @@ -package TestAPR::lib; +package TestAPR::util; use strict; use warnings FATAL => 'all'; @@ -14,14 +14,14 @@ plan $r, tests => 3; my $blen = 10; -my $bytes = APR::generate_random_bytes(10); +my $bytes = APR::Util::generate_random_bytes(10); ok length($bytes) == $blen; -my $status = APR::password_validate("one", "two"); +my $status = APR::Util::password_validate("one", "two"); ok $status != 0; -my $str= APR::strerror($status); +my $str= APR::Util::strerror($status); t_debug "strerror=$str\n";
cvs commit: modperl-2.0/xs/maps apr_functions.map
stas02/01/29 22:57:31 Modified:xs/maps apr_functions.map Log: - package guessing was wrong, was using APR::function instead of APR::Util::function. remove guessing. Revision ChangesPath 1.33 +1 -1 modperl-2.0/xs/maps/apr_functions.map Index: apr_functions.map === RCS file: /home/cvs/modperl-2.0/xs/maps/apr_functions.map,v retrieving revision 1.32 retrieving revision 1.33 diff -u -r1.32 -r1.33 --- apr_functions.map 30 Jan 2002 05:21:53 - 1.32 +++ apr_functions.map 30 Jan 2002 06:57:31 - 1.33 @@ -407,7 +407,7 @@ apr_dso_sym apr_dso_unload -MODULE=APR::Util PACKAGE=guess +MODULE=APR::Util apr_filename_of_pathname apr_password_get apr_password_validate
cvs commit: modperl-2.0/xs/maps apr_functions.map
stas02/01/29 21:21:53 Modified:t/protocol/TestProtocol echo_filter.pm xs/APR/APR apr-test xs/maps apr_functions.map Added: t/response/TestAPR util.pm xs/APR/Util APR__Util.h Removed: t/response/TestAPR lib.pm xs/APR/Lib APR__Lib.h Log: move APR::Lib => APR::Util Revision ChangesPath 1.4 +1 -1 modperl-2.0/t/protocol/TestProtocol/echo_filter.pm Index: echo_filter.pm === RCS file: /home/cvs/modperl-2.0/t/protocol/TestProtocol/echo_filter.pm,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- echo_filter.pm20 Jan 2002 18:37:05 - 1.3 +++ echo_filter.pm30 Jan 2002 05:21:52 - 1.4 @@ -6,7 +6,7 @@ use APR::Brigade (); use APR::Const -compile => qw(SUCCESS EOF); use Apache::Const -compile => qw(MODE_GETLINE); -use APR::Lib (); +use APR::Util (); sub handler { my Apache::Connection $c = shift; 1.1 modperl-2.0/t/response/TestAPR/util.pm Index: util.pm === package TestAPR::lib; use strict; use warnings FATAL => 'all'; use Apache::Test; use Apache::TestUtil; use APR::Util (); sub handler { my $r = shift; plan $r, tests => 3; my $blen = 10; my $bytes = APR::generate_random_bytes(10); ok length($bytes) == $blen; my $status = APR::password_validate("one", "two"); ok $status != 0; my $str= APR::strerror($status); t_debug "strerror=$str\n"; ok $str eq 'passwords do not match'; 0; } 1; 1.1 modperl-2.0/xs/APR/Util/APR__Util.h Index: APR__Util.h === static MP_INLINE void mpxs_apr_strerror(pTHX_ SV *sv, SV *arg) { apr_status_t statcode = mp_xs_sv2_status(arg); char *ptr; mpxs_sv_grow(sv, 128-1); ptr = apr_strerror(statcode, SvPVX(sv), SvLEN(sv)); mpxs_sv_cur_set(sv, strlen(ptr)); /*XXX*/ } static MP_INLINE void mpxs_apr_generate_random_bytes(pTHX_ SV *sv, SV *arg) { int len = (int)SvIV(arg); mpxs_sv_grow(sv, len); (void)apr_generate_random_bytes(SvPVX(sv), len); mpxs_sv_cur_set(sv, len); } static XS(MPXS_apr_strerror) { dXSARGS; mpxs_usage_items_1("status_code"); mpxs_set_targ(mpxs_apr_strerror, ST(0)); } static XS(MPXS_apr_generate_random_bytes) { dXSARGS; mpxs_usage_items_1("length"); mpxs_set_targ(mpxs_apr_generate_random_bytes, ST(0)); } 1.4 +1 -1 modperl-2.0/xs/APR/APR/apr-test Index: apr-test === RCS file: /home/cvs/modperl-2.0/xs/APR/APR/apr-test,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- apr-test 13 Sep 2001 02:39:08 - 1.3 +++ apr-test 30 Jan 2002 05:21:52 - 1.4 @@ -11,7 +11,7 @@ use APR::UUID (); use APR::Pool (); use APR::Lock (); -use APR::Lib (); +use APR::Util (); use APR::Base64 (); use APR::Signal (); 1.32 +1 -1 modperl-2.0/xs/maps/apr_functions.map Index: apr_functions.map === RCS file: /home/cvs/modperl-2.0/xs/maps/apr_functions.map,v retrieving revision 1.31 retrieving revision 1.32 diff -u -r1.31 -r1.32 --- apr_functions.map 29 Jan 2002 17:11:06 - 1.31 +++ apr_functions.map 30 Jan 2002 05:21:53 - 1.32 @@ -407,7 +407,7 @@ apr_dso_sym apr_dso_unload -MODULE=APR::Lib PACKAGE=guess +MODULE=APR::Util PACKAGE=guess apr_filename_of_pathname apr_password_get apr_password_validate
cvs commit: modperl-2.0/xs/APR/Util - New directory
stas02/01/29 21:16:56 modperl-2.0/xs/APR/Util - New directory
cvs commit: modperl-2.0/xs/Apache/Time - New directory
stas02/01/29 10:13:21 modperl-2.0/xs/Apache/Time - New directory
cvs commit: modperl-2.0/xs/APR/String APR__String.h
stas02/01/29 09:11:06 Modified:xs/maps apr_functions.map modperl_functions.map xs/APR/String APR__String.h Log: - use the mpxs_APR__String_strfsize and format_size as Perl API - adjust the map files Revision ChangesPath 1.31 +4 -2 modperl-2.0/xs/maps/apr_functions.map Index: apr_functions.map === RCS file: /home/cvs/modperl-2.0/xs/maps/apr_functions.map,v retrieving revision 1.30 retrieving revision 1.31 diff -u -r1.30 -r1.31 --- apr_functions.map 29 Jan 2002 07:47:25 - 1.30 +++ apr_functions.map 29 Jan 2002 17:11:06 - 1.31 @@ -247,7 +247,7 @@ apr_lstat apr_stat -!MODULE=APR::Strings +!MODULE=APR::String apr_collapse_spaces -apr_cpystrn apr_fnmatch @@ -260,11 +260,13 @@ apr_strnatcasecmp apr_strnatcmp -apr_tokenize_to_argv --apr_strfsize -apr_strtok -apr_itoa -apr_ltoa -apr_off_t_toa + +MODULE=APR::String + SV *:apr_strfsize | mpxs_APR__String_strfsize | size | format_size !MODULE=APR::ProcAttr apr_procattr_create 1.35 +0 -4 modperl-2.0/xs/maps/modperl_functions.map Index: modperl_functions.map === RCS file: /home/cvs/modperl-2.0/xs/maps/modperl_functions.map,v retrieving revision 1.34 retrieving revision 1.35 diff -u -r1.34 -r1.35 --- modperl_functions.map 29 Jan 2002 07:47:25 - 1.34 +++ modperl_functions.map 29 Jan 2002 17:11:06 - 1.35 @@ -98,7 +98,3 @@ MODULE=Apache::SubProcess # ap_subprocess_ won't work modperl_spawn_proc_prog | MPXS_ | ... | spawn_proc_prog - -MODULE=APR::String - mpxs_APR__String_format_size - 1.2 +1 -1 modperl-2.0/xs/APR/String/APR__String.h Index: APR__String.h === RCS file: /home/cvs/modperl-2.0/xs/APR/String/APR__String.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- APR__String.h 29 Jan 2002 16:24:34 - 1.1 +++ APR__String.h 29 Jan 2002 17:11:06 - 1.2 @@ -1,5 +1,5 @@ static MP_INLINE -SV *mpxs_APR__String_format_size(pTHX_ apr_off_t size) +SV *mpxs_APR__String_strfsize(pTHX_ apr_off_t size) { char buff[5];
cvs commit: modperl-2.0/xs/APR/String APR__String.h
stas02/01/29 08:24:34 Added: xs/APR/String APR__String.h Log: - the actual xs wrapper for format_size Revision ChangesPath 1.1 modperl-2.0/xs/APR/String/APR__String.h Index: APR__String.h === static MP_INLINE SV *mpxs_APR__String_format_size(pTHX_ apr_off_t size) { char buff[5]; apr_strfsize(size, buff); return newSVpvn(buff, 4); }
cvs commit: modperl-2.0/xs/APR/String - New directory
stas02/01/29 08:23:53 modperl-2.0/xs/APR/String - New directory
cvs commit: modperl-2.0/src/modules/perl modperl_util.c
stas02/01/29 01:50:39 Modified:src/modules/perl modperl_util.c Log: - forgot to add that if modperl_tls_get_request_rec fails (which can only succeed inside request with 'PerlOptions +GlobalRequest', we retun modperl_global_get_pconf() Revision ChangesPath 1.37 +6 -2 modperl-2.0/src/modules/perl/modperl_util.c Index: modperl_util.c === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_util.c,v retrieving revision 1.36 retrieving revision 1.37 diff -u -r1.36 -r1.37 --- modperl_util.c29 Jan 2002 05:54:20 - 1.36 +++ modperl_util.c29 Jan 2002 09:50:39 - 1.37 @@ -170,7 +170,11 @@ char *classname = NULL; IV ptr = 0; -/* get the pool from the current request if applicable */ +/* + * if inside request and 'PerlOptions +GlobalRequest' for this interp, + * get the pool from the current request + * else return the global pool + */ if (obj == &PL_sv_undef) { request_rec *r = NULL; (void)modperl_tls_get_request_rec(&r); @@ -179,7 +183,7 @@ return r->pool; } -return NULL; +return modperl_global_get_pconf(); } if ((SvROK(obj) && (SvTYPE(SvRV(obj)) == SVt_PVMG))) {
cvs commit: modperl-2.0/xs/maps apr_functions.map modperl_functions.map
stas02/01/28 23:47:25 Modified:xs/maps apr_functions.map modperl_functions.map Added: t/response/TestAPR string.pm Log: - implement APR::String::format_size as a wrapper to apr_strfsize Revision ChangesPath 1.1 modperl-2.0/t/response/TestAPR/string.pm Index: string.pm === package TestAPR::string; use strict; use warnings FATAL => 'all'; use Apache::Test; use Apache::TestUtil; use Apache::Const -compile => 'OK'; use APR::String (); my %size_string = ( '-1'=> " - ", 0 => " 0 ", 42 => " 42 ", 42_000 => " 41K", 42_000_000 => " 40M", #42_000_000_000 => "40G", ); sub handler { my $r = shift; plan $r, tests => scalar keys %size_string; t_debug("size_string"); while (my($k, $v) = each %size_string) { ok t_cmp($v, APR::String::format_size($k)); } Apache::OK; } 1; __END__ 1.30 +1 -1 modperl-2.0/xs/maps/apr_functions.map Index: apr_functions.map === RCS file: /home/cvs/modperl-2.0/xs/maps/apr_functions.map,v retrieving revision 1.29 retrieving revision 1.30 diff -u -r1.29 -r1.30 --- apr_functions.map 29 Jan 2002 05:32:39 - 1.29 +++ apr_functions.map 29 Jan 2002 07:47:25 - 1.30 @@ -260,7 +260,7 @@ apr_strnatcasecmp apr_strnatcmp -apr_tokenize_to_argv - apr_strfsize +-apr_strfsize -apr_strtok -apr_itoa -apr_ltoa 1.34 +4 -0 modperl-2.0/xs/maps/modperl_functions.map Index: modperl_functions.map === RCS file: /home/cvs/modperl-2.0/xs/maps/modperl_functions.map,v retrieving revision 1.33 retrieving revision 1.34 diff -u -r1.33 -r1.34 --- modperl_functions.map 21 Jan 2002 08:27:30 - 1.33 +++ modperl_functions.map 29 Jan 2002 07:47:25 - 1.34 @@ -98,3 +98,7 @@ MODULE=Apache::SubProcess # ap_subprocess_ won't work modperl_spawn_proc_prog | MPXS_ | ... | spawn_proc_prog + +MODULE=APR::String + mpxs_APR__String_format_size +
cvs commit: modperl-2.0/src/modules/perl modperl_util.c
stas02/01/28 21:54:20 Modified:src/modules/perl modperl_util.c Log: - if undef is passed, try to get the request object from the global storage, which stores the current request object if applicable Revision ChangesPath 1.36 +0 -4 modperl-2.0/src/modules/perl/modperl_util.c Index: modperl_util.c === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_util.c,v retrieving revision 1.35 retrieving revision 1.36 diff -u -r1.35 -r1.36 --- modperl_util.c29 Jan 2002 05:52:24 - 1.35 +++ modperl_util.c29 Jan 2002 05:54:20 - 1.36 @@ -87,10 +87,6 @@ SV *sv = Nullsv; MAGIC *mg; -if (in == &PL_sv_undef) { -return NULL; -} - if (SvROK(in)) { SV *rv = (SV*)SvRV(in);
cvs commit: modperl-2.0/src/modules/perl modperl_util.c
stas02/01/28 21:52:24 Modified:src/modules/perl modperl_util.c Log: if undef is passed try to get the pool from the current request Revision ChangesPath 1.35 +12 -0 modperl-2.0/src/modules/perl/modperl_util.c Index: modperl_util.c === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_util.c,v retrieving revision 1.34 retrieving revision 1.35 diff -u -r1.34 -r1.35 --- modperl_util.c29 Jan 2002 04:49:37 - 1.34 +++ modperl_util.c29 Jan 2002 05:52:24 - 1.35 @@ -174,6 +174,18 @@ char *classname = NULL; IV ptr = 0; +/* get the pool from the current request if applicable */ +if (obj == &PL_sv_undef) { +request_rec *r = NULL; +(void)modperl_tls_get_request_rec(&r); + +if (r) { +return r->pool; +} + +return NULL; +} + if ((SvROK(obj) && (SvTYPE(SvRV(obj)) == SVt_PVMG))) { ptr = SvObjIV(obj); classname = SvCLASS(obj);
cvs commit: modperl-2.0/todo api.txt
stas02/01/28 21:41:59 Modified:todo api.txt Log: - no need to implement the interface for apr_array_header as there is no use for it in mod_perl Revision ChangesPath 1.20 +0 -3 modperl-2.0/todo/api.txt Index: api.txt === RCS file: /home/cvs/modperl-2.0/todo/api.txt,v retrieving revision 1.19 retrieving revision 1.20 diff -u -r1.19 -r1.20 --- api.txt 23 Dec 2001 04:30:28 - 1.19 +++ api.txt 29 Jan 2002 05:41:59 - 1.20 @@ -102,9 +102,6 @@ Apache->unescape_url{_info}: not yet implemented. should be moved to Apache::Util -apr_array_header_t: -needs an interface, either methods and/or tied array interface - Apache::perl_hook: should have this or something check if PerlOptions allows the given handler/feature to be used.
cvs commit: modperl-2.0/t/response/TestAPR date.pm
stas02/01/28 21:32:39 Modified:src/modules/perl modperl_apache_includes.h xs/maps apr_functions.map Added: t/response/TestAPR date.pm Log: - building APR::Date with apr_date_parse_* functions - hiding the internal apr_date_checkmask - adding tests for APR::Date Revision ChangesPath 1.9 +1 -0 modperl-2.0/src/modules/perl/modperl_apache_includes.h Index: modperl_apache_includes.h === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_apache_includes.h,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- modperl_apache_includes.h 21 Oct 2001 02:25:15 - 1.8 +++ modperl_apache_includes.h 29 Jan 2002 05:32:39 - 1.9 @@ -46,6 +46,7 @@ #include "apr_lock.h" #include "apr_strings.h" #include "apr_uri.h" +#include "apr_date.h" #include "apr_buckets.h" #include "util_filter.h" 1.29 +2 -2 modperl-2.0/xs/maps/apr_functions.map Index: apr_functions.map === RCS file: /home/cvs/modperl-2.0/xs/maps/apr_functions.map,v retrieving revision 1.28 retrieving revision 1.29 diff -u -r1.28 -r1.29 --- apr_functions.map 21 Jan 2002 05:41:54 - 1.28 +++ apr_functions.map 29 Jan 2002 05:32:39 - 1.29 @@ -24,8 +24,8 @@ apr_explode_localtime apr_explode_time -!MODULE=APR::Date - apr_date_checkmask +MODULE=APR::Date +-apr_date_checkmask apr_date_parse_http apr_date_parse_rfc 1.1 modperl-2.0/t/response/TestAPR/date.pm Index: date.pm === package TestAPR::date; use strict; use warnings FATAL => 'all'; use Apache::Test; use Apache::TestUtil; use Apache::Const -compile => 'OK'; use APR::Date (); my @http_dates = ( 'Sun, 06 Nov 1994 08:49:37 GMT', # RFC 822, updated by RFC 1123 'Sunday, 06-Nov-94 08:49:37 GMT', # RFC 850, obsoleted by RFC 1036 'Sun Nov 6 08:49:37 1994', # ANSI C's asctime() format ); my @rfc_dates = ( 'Sun, 06 Nov 1994 08:49:37 GMT' , # RFC 822, updated by RFC 1123 'Sunday, 06-Nov-94 08:49:37 GMT', # RFC 850, obsoleted by RFC 1036 'Sun Nov 6 08:49:37 1994', # ANSI C's asctime() format 'Sun, 6 Nov 1994 08:49:37 GMT', # RFC 822, updated by RFC 1123 'Sun, 06 Nov 94 08:49:37 GMT',# RFC 822 'Sun, 6 Nov 94 08:49:37 GMT', # RFC 822 'Sun, 06 Nov 94 8:49:37 GMT', # Unknown [Elm 70.85] 'Sun, 6 Nov 94 8:49:37 GMT', # Unknown [Elm 70.85] 'Sun, 6 Nov 1994 08:49:37 GMT', # Unknown [Postfix] ); my @bogus_dates = ( 'Sun, 06 Nov 94 08:49 GMT', # Unknown [[EMAIL PROTECTED]] 'Sun, 6 Nov 94 08:49 GMT',# Unknown [[EMAIL PROTECTED]] ); my $date_msec = 784111777; my $bogus_date_msec = 784111740; sub handler { my $r = shift; plan $r, tests => @http_dates + @rfc_dates + @bogus_dates; # parse_http for my $date_str (@http_dates) { ok t_cmp($date_msec, APR::Date::parse_http($date_str), "parse_http: $date_str"); #t_debug "testing : parse_http: $date_str"; } # parse_rfc for my $date_str (@rfc_dates) { ok t_cmp($date_msec, APR::Date::parse_rfc($date_str), "parse_rfc: $date_str"); #t_debug "testing : parse_rfc: $date_str"; } # parse_rfc (bogus formats) for my $date_str (@bogus_dates) { ok t_cmp($bogus_date_msec, APR::Date::parse_rfc($date_str), "parse_rfc: $date_str"); #t_debug "testing : parse_rfc: $date_str"; } Apache::OK; } 1; __END__
cvs commit: modperl-site index.html
stas02/01/28 20:30:10 Modified:.index.html Log: - add the bOP app server Revision ChangesPath 1.98 +16 -0 modperl-site/index.html Index: index.html === RCS file: /home/cvs/modperl-site/index.html,v retrieving revision 1.97 retrieving revision 1.98 diff -u -r1.97 -r1.98 --- index.html21 Dec 2001 07:44:43 - 1.97 +++ index.html29 Jan 2002 04:30:10 - 1.98 @@ -1183,6 +1183,22 @@ + http://www.bivio.biz/hm/why-bOP";>The bivio + OLTP Platform (bOP) is a declarative, multi-layered Perl + application development framework. Adapters have been written for + Apache/mod_perl, sendmail, Oracle, and Postgres. The Model layer + generates SQL for CRUD, lists, and HTTP forms. Views are + content-independent hierarchies of widgets. Tasks control security, + execution order, and state transitions. Facades map qualified names + to URLs, strings, fonts, colors, icons, files, and views. bOP + provides a full-suite of services including dynamic tracing, + configuration, logging, class loading, type hierarchy, unit testing, + and acceptance testing. + + + + + http://perl.apache.org/embperl/";>Embperl is a system for building dynamic websites with Perl.
cvs commit: modperl-2.0/t/apache .cvsignore
stas02/01/25 00:17:58 Modified:t/apache .cvsignore Log: - ignore file adjst. Revision ChangesPath 1.4 +2 -0 modperl-2.0/t/apache/.cvsignore Index: .cvsignore === RCS file: /home/cvs/modperl-2.0/t/apache/.cvsignore,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- .cvsignore18 Dec 2001 01:56:47 - 1.3 +++ .cvsignore25 Jan 2002 08:17:58 - 1.4 @@ -1,5 +1,6 @@ cgihandler.t compat.t +compat2.t conftree.t constants.t post.t @@ -7,3 +8,4 @@ scanhdrs.t write.t subprocess.t +
cvs commit: modperl/Apache Apache.pm
stas02/01/24 06:53:35 Modified:Apache Apache.pm Log: - escape & chars Revision ChangesPath 1.70 +5 -5 modperl/Apache/Apache.pm Index: Apache.pm === RCS file: /home/cvs/modperl/Apache/Apache.pm,v retrieving revision 1.69 retrieving revision 1.70 diff -u -r1.69 -r1.70 --- Apache.pm 21 Jan 2002 14:32:34 - 1.69 +++ Apache.pm 24 Jan 2002 14:53:34 - 1.70 @@ -776,20 +776,20 @@ $list = $r->get_handlers( 'PerlHandler' ); -=item $r-Eset_handlers( $hook, [\&handler, ... ] ) +=item $r-Eset_handlers( $hook, [\Ehandler, ... ] ) Sets the list if handlers to be called for $hook. $hook is a string representing the phase to handle. The list of handlers is an anonymous array of code references to the handlers to install for this request -phase. The special list [ \&OK ] can be used to disable a particular -phase. +phase. The special list C<[ \&OK ]> can be used to disable a +particular phase. $r->set_handlers( PerlLogHandler => [ \&myhandler1, \&myhandler2 ] ); $r->set_handlers( PerlAuthenHandler => [ \&OK ] ); -=item $r-Epush_handlers( $hook, \&handler ) +=item $r-Epush_handlers( $hook, \Ehandler ) -Pushes a new handler to be called for $hook. $hook is a string +Pushes a new handler to be called for C<$hook>. C<$hook> is a string representing the phase to handle. The handler is a reference to a subroutine to install for this request phase. This handler will be called before any configured handlers.
cvs commit: modperl mod_perl_method_handlers.pod
stas02/01/22 08:29:33 Modified:.mod_perl_method_handlers.pod Log: - document subroutine attributes for method handlers Submitted by: Geoffrey Young <[EMAIL PROTECTED]> Reviewed by: stas Revision ChangesPath 1.10 +16 -1 modperl/mod_perl_method_handlers.pod Index: mod_perl_method_handlers.pod === RCS file: /home/cvs/modperl/mod_perl_method_handlers.pod,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- mod_perl_method_handlers.pod 2 Jan 2002 09:41:23 - 1.9 +++ mod_perl_method_handlers.pod 22 Jan 2002 16:29:33 - 1.10 @@ -53,7 +53,22 @@ In this case, the 'My' class inherits this method from 'BaseClass'. -To build in this feature, configure with: +In Perl 5.6.0 or later, you can use subroutine attributes in place +of subroutine prototypes: + + package My; + @ISA = qw(BaseClass); + + sub handler : method { + my($class, $r) = @_; + ...; + } + +see the L manpage for additional information on +subroutine attributes. + +To build in the ability to specify Perl*Handlers as method handlers, +configure mod_perl with: % perl Makefile.PL PERL_METHOD_HANDLERS=1 [PERL_FOO_HOOK=1,etc]
cvs commit: modperl/Apache Apache.pm
stas02/01/21 06:32:35 Modified:Apache Apache.pm Log: - document $r->location Submitted by: Issac Goldstand <[EMAIL PROTECTED]> Reviewed by: stas Revision ChangesPath 1.69 +6 -0 modperl/Apache/Apache.pm Index: Apache.pm === RCS file: /home/cvs/modperl/Apache/Apache.pm,v retrieving revision 1.68 retrieving revision 1.69 diff -u -r1.68 -r1.69 --- Apache.pm 14 Jan 2002 03:12:51 - 1.68 +++ Apache.pm 21 Jan 2002 14:32:34 - 1.69 @@ -390,6 +390,12 @@ filename> translation, optionally changing it with the first argument if you happen to be doing the translation. +=item $r-Elocation + +The $r-Elocation method will return the path of the +ELocationE section from which the current C is +being called. + =item $r-Epath_info( [$path_info] ) The $r-Epath_info method will return what is left in the path after the
cvs commit: modperl-2.0/todo missing_old_features.txt
stas02/01/21 00:40:54 Modified:todo missing_old_features.txt Log: - Apache::File has been ported Revision ChangesPath 1.17 +1 -1 modperl-2.0/todo/missing_old_features.txt Index: missing_old_features.txt === RCS file: /home/cvs/modperl-2.0/todo/missing_old_features.txt,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- missing_old_features.txt 14 Dec 2001 02:07:30 - 1.16 +++ missing_old_features.txt 21 Jan 2002 08:40:54 - 1.17 @@ -42,7 +42,7 @@ - Apache::ModuleConfig -- Apache::File, Apache::Util +- Apache::Util - see also: xs/maps/apache_functions.map
cvs commit: modperl-2.0/t/response/TestApache compat2.pm compat.pm
stas02/01/21 00:32:46 Modified:t/apache compat.t t/response/TestApache compat.pm Added: t/response/TestApache compat2.pm Log: - split compat.pm test into compat.pm (for client side validation) and compat2.pm (for sub-tests that can be completed on the server side). - 2 out of 3 todo tests now pass with recent patches to set_content_length, update_mtime, ap_set_last_modified Revision ChangesPath 1.10 +1 -37 modperl-2.0/t/apache/compat.t Index: compat.t === RCS file: /home/cvs/modperl-2.0/t/apache/compat.t,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- compat.t 20 Dec 2001 03:54:40 - 1.9 +++ compat.t 21 Jan 2002 08:32:46 - 1.10 @@ -6,7 +6,7 @@ use Apache::TestUtil; use Apache::TestRequest; -plan tests => 31, todo => [25, 28, 30]; +plan tests => 3; my $location = "/TestApache::compat"; @@ -41,48 +41,12 @@ ); } -# Apache->gensym -{ -my @data = (test => 'gensym'); -my $data = GET_BODY query(@data) || ''; -ok_nok($data); -} - -# header_in -t_header('in','get_scalar',q{scalar ctx: $r->header_in($key)}); -t_header('in','get_list', q{list ctx: $r->header_in($key)}); -t_header('in','set', q{$r->header_in($key => $val)}); -t_header('in','unset', q{$r->header_in($key => undef)}); - -# header_out -t_header('out','get_scalar',q{scalar ctx: $r->header_out($key)}); -t_header('out','get_list', q{list ctx: $r->header_out($key)}); -t_header('out','set', q{$r->header_out($key => $val)}); -t_header('out','unset', q{$r->header_out($key => undef)}); - -# Apache::File -{ -my @data = (test => 'Apache::File'); -my $data = GET_BODY query(@data) || ''; -ok_nok($data); -} - ### helper subs ### sub query { my(%args) = (@_ % 2) ? %{+shift} : @_; "$location?" . join '&', map { "$_=$args{$_}" } keys %args; } - -sub t_header { -my ($way, $what, $comment) = @_; -ok t_cmp( -"ok", -GET_BODY(query(test => 'header', way => $way, what => $what)), -$comment -); -} - # accepts multiline var where, the lines matching: # ^ok\n$ results in ok(1) 1.10 +3 -140modperl-2.0/t/response/TestApache/compat.pm Index: compat.pm === RCS file: /home/cvs/modperl-2.0/t/response/TestApache/compat.pm,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- compat.pm 20 Dec 2001 01:31:24 - 1.9 +++ compat.pm 21 Jan 2002 08:32:46 - 1.10 @@ -1,5 +1,8 @@ package TestApache::compat; +# these Apache::compat tests are all run on the server +# side and validated on the client side. See also TestApache::compat2. + use strict; use warnings FATAL => 'all'; @@ -33,146 +36,6 @@ if ($data{test} eq 'content' || $data{test} eq 'args') { $r->print("test $data{test}"); -} -elsif ($data{test} eq 'gensym') { -debug "Apache->gensym"; -my $fh = Apache->gensym; -ok ref $fh eq 'GLOB'; -} -elsif ($data{test} eq 'header') { -my $way = $data{way}; -my $sub = "header_$way"; -my $sub_good = "headers_$way"; -if ($data{what} eq 'get_scalar') { -# get in scalar ctx -my $key; -if ($way eq 'in') { -$key = "user-agent"; # should exist with lwp -} -else { -# outgoing headers aren't set yet, so we set one -$key = "X-barabara"; -$r->$sub_good->set($key, $key x 2); -} -my $exp = $r->$sub_good->get($key); -my $got = $r->$sub($key); -$r->print(t_is_equal($exp, $got) ? 'ok' : 'nok'); -} -elsif ($data{what} eq 'get_list') { -# get in list ctx -my $key = $data{test}; -my @exp = qw(foo bar); -$r->$sub_good->add($key => $_) for @exp; -my @got = $r->$sub($key); -$r->print(t_is_equal(\@exp, \@got) ? 'ok' : 'nok'); -} -
cvs commit: modperl-2.0/xs/maps apache_functions.map modperl_functions.map
stas02/01/21 00:27:30 Modified:xs/Apache/Response Apache__Response.h xs/maps apache_functions.map modperl_functions.map Log: - write a wrapper for $r->set_last_modified() to be the same as in 1.x - specify default values for $r->set_content_length and $r->update_mtime as in 1.x Revision ChangesPath 1.6 +9 -0 modperl-2.0/xs/Apache/Response/Apache__Response.h Index: Apache__Response.h === RCS file: /home/cvs/modperl-2.0/xs/Apache/Response/Apache__Response.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- Apache__Response.h6 Jan 2002 22:23:24 - 1.5 +++ Apache__Response.h21 Jan 2002 08:27:30 - 1.6 @@ -25,3 +25,12 @@ rcfg->wbucket->header_parse = 0; /* turn off PerlOptions +ParseHeaders */ } + +static MP_INLINE void +mpxs_Apache__RequestRec_set_last_modified(request_rec *r, apr_time_t mtime) +{ +if (mtime) { +ap_update_mtime(r, mtime); +} +ap_set_last_modified(r); +} 1.42 +3 -3 modperl-2.0/xs/maps/apache_functions.map Index: apache_functions.map === RCS file: /home/cvs/modperl-2.0/xs/maps/apache_functions.map,v retrieving revision 1.41 retrieving revision 1.42 diff -u -r1.41 -r1.42 --- apache_functions.map 20 Jan 2002 18:37:05 - 1.41 +++ apache_functions.map 21 Jan 2002 08:27:30 - 1.42 @@ -100,16 +100,16 @@ MODULE=Apache::Response PACKAGE=guess ap_make_etag | | r, force_weak=0 - ap_set_content_length + ap_set_content_length | | r, length=r->finfo.csize ap_set_etag ap_meets_conditions ap_rationalize_mtime - ap_update_mtime + ap_update_mtime | | r, dependency_mtime=0 ap_send_error_response ~ap_send_fd ap_send_mmap | | r, mm, offset, length ap_set_keepalive - ap_set_last_modified +-ap_set_last_modified ap_custom_response MODULE=Apache::Access PACKAGE=Apache::RequestRec 1.33 +2 -0 modperl-2.0/xs/maps/modperl_functions.map Index: modperl_functions.map === RCS file: /home/cvs/modperl-2.0/xs/maps/modperl_functions.map,v retrieving revision 1.32 retrieving revision 1.33 diff -u -r1.32 -r1.33 --- modperl_functions.map 8 Jan 2002 22:48:38 - 1.32 +++ modperl_functions.map 21 Jan 2002 08:27:30 - 1.33 @@ -43,6 +43,8 @@ MODULE=Apache::Response PACKAGE=Apache::RequestRec DEFINE_send_cgi_header | | request_rec *:r, SV *:buffer mpxs_Apache__RequestRec_send_http_header | | r, type=NULL + mpxs_Apache__RequestRec_set_last_modified | | r, mtime=0 + MODULE=Apache::ServerUtil PACKAGE=guess mpxs_Apache__Server_push_handlers
cvs commit: modperl-2.0/xs/maps apr_functions.map
stas02/01/20 21:41:54 Modified:xs/maps apr_functions.map Log: - supply the default for the mech member mech=APR_LOCK_DEFAULT in apr_lock_create Revision ChangesPath 1.28 +1 -1 modperl-2.0/xs/maps/apr_functions.map Index: apr_functions.map === RCS file: /home/cvs/modperl-2.0/xs/maps/apr_functions.map,v retrieving revision 1.27 retrieving revision 1.28 diff -u -r1.27 -r1.28 --- apr_functions.map 31 Dec 2001 12:12:54 - 1.27 +++ apr_functions.map 21 Jan 2002 05:41:54 - 1.28 @@ -164,7 +164,7 @@ MODULE=APR::Lock !apr_lock_child_init apr_lock_t *:apr_lock_create | mpxs_ | \ - SV *:CLASS, pool, type=0, mech, scope=1, fname="lock.file" | new + SV *:CLASS, pool, type=0, mech=APR_LOCK_DEFAULT, scope=1, fname="lock.file" | new -apr_lock_destroy apr_lock_DESTROY | | lock apr_lock_data_get
cvs commit: modperl-2.0/t/response/TestDirective perlmodule.pm perlrequire.pm
stas02/01/17 22:57:32 Modified:t/response/TestDirective perlmodule.pm perlrequire.pm Log: - wrap long lines (> 80) Revision ChangesPath 1.2 +2 -1 modperl-2.0/t/response/TestDirective/perlmodule.pm Index: perlmodule.pm === RCS file: /home/cvs/modperl-2.0/t/response/TestDirective/perlmodule.pm,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- perlmodule.pm 18 Jan 2002 06:52:01 - 1.1 +++ perlmodule.pm 18 Jan 2002 06:57:32 - 1.2 @@ -32,7 +32,8 @@ \$ApacheTest::PerlModuleTest::MAGIC = '$magic'; 1; EOF -my $file = catfile $target_dir, 'perlmodule-vh', 'ApacheTest', 'PerlModuleTest.pm'; +my $file = catfile $target_dir, +'perlmodule-vh', 'ApacheTest', 'PerlModuleTest.pm'; $self->writefile($file, $content, 1); } 1.5 +3 -1 modperl-2.0/t/response/TestDirective/perlrequire.pm Index: perlrequire.pm === RCS file: /home/cvs/modperl-2.0/t/response/TestDirective/perlrequire.pm,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- perlrequire.pm18 Jan 2002 06:53:46 - 1.4 +++ perlrequire.pm18 Jan 2002 06:57:32 - 1.5 @@ -33,6 +33,7 @@ my $vars = $self->{vars}; my $target_dir = catfile $vars->{documentroot}, 'testdirective'; + # create two different PerlRequireTest.pm packages to be loaded by # vh and main interpreters, on the fly before the tests start while (my($test, $magic) = each %require_tests) { @@ -41,7 +42,8 @@ \$ApacheTest::PerlRequireTest::MAGIC = '$magic'; 1; EOF -my $file = catfile $target_dir, $test, 'ApacheTest', 'PerlRequireTest.pm'; +my $file = catfile $target_dir, +$test, 'ApacheTest', 'PerlRequireTest.pm'; $self->writefile($file, $content, 1); } }
cvs commit: modperl-2.0/t/response/TestDirective perlrequire.pm
stas02/01/17 22:53:46 Modified:t/response/TestDirective perlrequire.pm Log: - use a safer namespace for the autogenerated module, s/My::/ApacheTest::/ Revision ChangesPath 1.4 +12 -7 modperl-2.0/t/response/TestDirective/perlrequire.pm Index: perlrequire.pm === RCS file: /home/cvs/modperl-2.0/t/response/TestDirective/perlrequire.pm,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- perlrequire.pm22 Sep 2001 09:33:31 - 1.3 +++ perlrequire.pm18 Jan 2002 06:53:46 - 1.4 @@ -1,5 +1,11 @@ package TestDirective::perlrequire; +# Test whether vhost with 'PerlOptions +Parent', which doesn't inherit +# from the base, has its own INC and therefore can have a modules with +# the same namespace as the base, but different content. +# +# Also see the parallel TestDirective::perlmodule handler + use strict; use warnings FATAL => 'all'; @@ -11,7 +17,7 @@ my $r = shift; $r->content_type('text/plain'); -$r->puts($My::PerlRequireTest::MAGIC || ''); +$r->puts($ApacheTest::PerlRequireTest::MAGIC || ''); Apache::OK; } @@ -27,16 +33,15 @@ my $vars = $self->{vars}; my $target_dir = catfile $vars->{documentroot}, 'testdirective'; - # create two different PerlRequireTest.pm packages to be loaded by # vh and main interpreters, on the fly before the tests start while (my($test, $magic) = each %require_tests) { my $content = <writefile($file, $content, 1); } } @@ -45,7 +50,7 @@ __END__ PerlSwitches -Mlib=@documentroot@/testdirective/main -PerlRequire "PerlRequireTest.pm" +PerlRequire "ApacheTest/PerlRequireTest.pm" @@ -60,7 +65,7 @@ PerlRequire "conf/modperl_startup.pl" PerlSwitches -Mlib=@documentroot@/testdirective/vh -PerlRequire "PerlRequireTest.pm" +PerlRequire "ApacheTest/PerlRequireTest.pm" SetHandler modperl
cvs commit: modperl-2.0/t/response/TestDirective perlmodule.pm
stas02/01/17 22:52:01 Added: t/directive perlmodule.t t/response/TestDirective perlmodule.pm Log: - add a test to test handling of PerlModule/Require directives for vhosts which inherit the interpretor from the parent. this time use the PerlModule directive for testing. Revision ChangesPath 1.1 modperl-2.0/t/directive/perlmodule.t Index: perlmodule.t === # this test tests PerlRequire configuration directive use strict; use warnings FATAL => 'all'; use Apache::Test; use Apache::TestUtil; use Apache::TestRequest; my $module = 'TestDirective::perlmodule'; plan tests => 1; Apache::TestRequest::module($module); my $config = Apache::Test::config(); my $hostport = Apache::TestRequest::hostport($config); t_debug("connecting to $hostport"); ok t_cmp($module, GET_BODY("/TestDirective::perlmodule"), "testing PerlModule in $module"); 1.1 modperl-2.0/t/response/TestDirective/perlmodule.pm Index: perlmodule.pm === package TestDirective::perlmodule; # This test is similar to TestDirective::perlrequire. Here we test # whether vhost inheriting the parent perl from the base can handle # PerlModule directives. use strict; use warnings FATAL => 'all'; use Apache::Test (); use Apache::Const -compile => 'OK'; use File::Spec::Functions qw(catfile); sub handler { my $r = shift; $r->content_type('text/plain'); $r->puts($ApacheTest::PerlModuleTest::MAGIC || ''); Apache::OK; } sub APACHE_TEST_CONFIGURE { my ($class, $self) = @_; my $vars = $self->{vars}; my $target_dir = catfile $vars->{documentroot}, 'testdirective'; my $magic = __PACKAGE__; my $content = <writefile($file, $content, 1); } 1; __END__ PerlSwitches -Mlib=@documentroot@/testdirective/perlmodule-vh PerlModule ApacheTest::PerlModuleTest SetHandler modperl PerlResponseHandler TestDirective::perlmodule
cvs commit: modperl-2.0/src/modules/perl mod_perl.c
stas02/01/17 22:50:10 Modified:src/modules/perl mod_perl.c Log: - modperl_startup() already handles PerlModule/Require directives, so handle these separately inly if modperl_startup() wasn't called. which is the case for vhosts which inherit the perl interpretor from the base. Revision ChangesPath 1.105 +8 -7 modperl-2.0/src/modules/perl/mod_perl.c Index: mod_perl.c === RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v retrieving revision 1.104 retrieving revision 1.105 diff -u -r1.104 -r1.105 --- mod_perl.c9 Jan 2002 00:31:39 - 1.104 +++ mod_perl.c18 Jan 2002 06:50:10 - 1.105 @@ -264,14 +264,15 @@ "created parent interpreter for VirtualHost %s\n", modperl_server_desc(s, p)); } - -if (!modperl_config_apply_PerlModule(s, scfg, perl, p)) { -exit(1); -} -if (!modperl_config_apply_PerlRequire(s, scfg, perl, p)) { -exit(1); +else { +if (!modperl_config_apply_PerlModule(s, scfg, perl, p)) { +exit(1); +} +if (!modperl_config_apply_PerlRequire(s, scfg, perl, p)) { +exit(1); +} } - + #ifdef USE_ITHREADS if (!MpSrvENABLE(scfg)) {
cvs commit: modperl/Apache Apache.pm
stas02/01/13 19:12:51 Modified:Apache Apache.pm Log: in get_basic_auth_pw doc use the constants as return codes rather than numbers. plus, return value is not always -1 in case of unprotected service. Submitted by: Geoffrey Young <[EMAIL PROTECTED]> Reviewed by: stas Revision ChangesPath 1.68 +3 -2 modperl/Apache/Apache.pm Index: Apache.pm === RCS file: /home/cvs/modperl/Apache/Apache.pm,v retrieving revision 1.67 retrieving revision 1.68 diff -u -r1.67 -r1.68 --- Apache.pm 2 Jan 2002 09:41:23 - 1.67 +++ Apache.pm 14 Jan 2002 03:12:51 - 1.68 @@ -826,8 +826,9 @@ =item $r-Eget_basic_auth_pw -If the current request is protected by Basic authentication, -this method will return 0, otherwise -1. +If the current request is protected by Basic authentication, this +method will return OK. Otherwise, it will return a value that +ought to be propagated back to the client (typically AUTH_REQUIRED). The second return value will be the decoded password sent by the client. ($ret, $sent_pw) = $r->get_basic_auth_pw;
cvs commit: modperl-site win32_binaries.html win32_binaries.pod win32_compile.html win32_compile.pod win32_multithread.html win32_multithread.pod
stas02/01/10 14:30:37 Modified:.win32_binaries.html win32_binaries.pod win32_compile.html win32_compile.pod win32_multithread.html win32_multithread.pod Log: AddModule mod_perl.c comments Submitted by: Randy Kobes <[EMAIL PROTECTED]> Revision ChangesPath 1.2 +21 -2 modperl-site/win32_binaries.html Index: win32_binaries.html === RCS file: /home/cvs/modperl-site/win32_binaries.html,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- win32_binaries.html 21 Dec 2001 07:44:43 - 1.1 +++ win32_binaries.html 10 Jan 2002 22:30:37 - 1.2 @@ -44,13 +44,23 @@ http://www.indigostar.com/";>http://www.indigostar.com/ - ftp://theoryx5.uwinnipeg.ca/pub/other/perl-win32-bin-x.x.exe";>ftp://theoryx5.uwinnipeg.ca/pub/other/perl-win32-bin-x.x.exe + ftp://theoryx5.uwinnipeg.ca/pub/other/";> +ftp://theoryx5.uwinnipeg.ca/pub/other/perl-win32-bin-x.x.exe As well as including a number of non-core modules, both of these packages contain mod_perl. See the documentation on the web sites and that included with the packages for installation instructions. Both of these also include an ActiveState-compatible ppm (Perl Package Manager) utility for adding and upgrading modules. +For the adventuresome who want a taste of things to come, a +mod_perl-2.0/Apache-2.0 binary distribution based on cvs +sources is available from +ftp://theoryx5.uwinnipeg.ca/pub/other/Apache2.tar.gz";> +ftp://theoryx5.uwinnipeg.ca/pub/other/Apache2.tar.gz. +See the accompanying Apache2.readme file in this directory for more +details. Be aware though that, being a pre-release version, +bugs are most likely present. + PPM Packages For users of ActivePerl, available from @@ -107,7 +117,16 @@ LoadModule perl_module modules/mod_perl.so Be sure that the path to your Perl binary (eg, C:\Perl\bin) is in -your PATH environment variable. +your PATH environment variable. If you have a +ClearModuleList +directive enabled in httpd.conf, you may also need to add + + AddModule mod_perl.c +See the descriptions of the ClearModuleList and +AddModule +directives in the Apache documents for more details, especially +concerning the relative order of these and the +LoadModule directive. Registry scripts Using Apache::Registry to speed up cgi scripts may be done as 1.2 +16 -1 modperl-site/win32_binaries.pod Index: win32_binaries.pod === RCS file: /home/cvs/modperl-site/win32_binaries.pod,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- win32_binaries.pod21 Dec 2001 07:44:43 - 1.1 +++ win32_binaries.pod10 Jan 2002 22:30:37 - 1.2 @@ -23,6 +23,14 @@ these also include an ActiveState-compatible C (Perl Package Manager) utility for adding and upgrading modules. +For the adventuresome who want a taste of things to come, a +mod_perl-2.0/Apache-2.0 binary distribution based on cvs +sources is available from +ftp://theoryx5.uwinnipeg.ca/pub/other/Apache2.tar.gz. +See the accompanying F file in this directory for more +details. Be aware though that, being a pre-release version, +bugs are most likely present. + =head1 PPM Packages For users of ActivePerl, available from @@ -87,7 +95,14 @@ LoadModule perl_module modules/mod_perl.so Be sure that the path to your Perl binary (eg, F) is in -your C environment variable. +your C environment variable. If you have a C +directive enabled in F, you may also need to add + + AddModule mod_perl.c + +See the descriptions of the C and C +directives in the Apache documents for more details, especially +concerning the relative order of these and the C directive. =head2 Registry scripts 1.2 +10 -1 modperl-site/win32_compile.html Index: win32_compile.html === RCS file: /home/cvs/modperl-site/win32_compile.html,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- win32_compile.html21 Dec 2001 07:44:43 - 1.1 +++ win32_compile.html10 Jan 2002 22:30:37 - 1.2 @@ -162,7 +162,16 @@ LoadModule perl_module modules/mod_perl.so Be sure that the path to your Perl binary (eg, C:\Perl\bin) -is in your PATH environment variable. +is in your PATH environment variable. If you have a +ClearModuleList +directive enabled in httpd.conf, you may also need to add + + AddModule mod_perl.c +See the descriptions of the ClearModuleList and +AddModule +directives in the Apache
cvs commit: modperl-2.0/t/response/TestAPR perlio.pm
stas02/01/04 01:30:45 Modified:t/response/TestAPR perlio.pm Log: + extend PerlIO tests + cleanups Revision ChangesPath 1.6 +92 -28modperl-2.0/t/response/TestAPR/perlio.pm Index: perlio.pm === RCS file: /home/cvs/modperl-2.0/t/response/TestAPR/perlio.pm,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- perlio.pm 18 Dec 2001 06:02:29 - 1.5 +++ perlio.pm 4 Jan 2002 09:30:45 - 1.6 @@ -23,74 +23,116 @@ return Apache::OK; } -plan $r, tests => 9, have_perl 'iolayers'; +plan $r, tests => 14, have_perl 'iolayers'; my $vars = Apache::Test::config()->{vars}; my $dir = catfile $vars->{documentroot}, "perlio"; t_mkdir($dir); +my $sep = "-- sep --\n"; +my @lines = ("This is a test: $$\n", "test line --sep two\n"); +my $expected = $lines[0]; +my $expected_all = join $sep, @lines; + # write file my $file = catfile $dir, "test"; -t_debug "open file $file"; +t_debug "open file $file for writing"; my $foo = "bar"; open my $fh, ">:APR", $file, $r or die "Cannot open $file for writing: $!"; ok ref($fh) eq 'GLOB'; -my $expected = "This is a test: $$"; -t_debug "write to a file: $expected"; -print $fh $expected; +t_debug "write to a file:\n$expected"; +print $fh $expected_all; close $fh; -# open() other tests +# open() failure test { # non-existant file my $file = "/this/file/does/not/exist"; -t_write_file("/tmp/testing", "some stuff"); if (open my $fh, "<:APR", $file, $r) { t_debug "must not be able to open $file!"; ok 0; close $fh; } else { -t_debug "good! cannot open/doesn't exist: $!"; -ok 1; +ok t_cmp('No such file or directory', + "$!", + "expected failure"); } } -# read() test -{ -open my $fh, "<:APR", $file, $r -or die "Cannot open $file for reading: $!"; -ok ref($fh) eq 'GLOB'; - -my $received = <$fh>; -close $fh; - -ok t_cmp($expected, - $received, - "read/write file"); -} - # seek/tell() tests { open my $fh, "<:APR", $file, $r or die "Cannot open $file for reading: $!"; -my $pos = 3; -seek $fh, $pos, Fcntl::SEEK_SET(); +# read the whole file so we can test the buffer flushed +# correctly on seek. +my $dummy = join '', <$fh>; +# Fcntl::SEEK_SET() +my $pos = 3; # rewinds after reading 6 chars above +seek $fh, $pos, Fcntl::SEEK_SET(); my $got = tell($fh); ok t_cmp($pos, $got, - "seek/tell the file"); + "seek/tell the file Fcntl::SEEK_SET"); + +# Fcntl::SEEK_CUR() +my $step = 10; +$pos = tell($fh) + $step; +seek $fh, $step, Fcntl::SEEK_CUR(); +$got = tell($fh); +ok t_cmp($pos, + $got, + "seek/tell the file Fcntl::SEEK_CUR"); + +# Fcntl::SEEK_END() +$pos = -s $file; +seek $fh, 0, Fcntl::SEEK_END(); +$got = tell($fh); +ok t_cmp($pos, + $got, + "seek/tell the file Fcntl::SEEK_END"); -# XXX: test Fcntl::SEEK_CUR() Fcntl::SEEK_END() close $fh; +} + +# read() tests +{ +open my $fh, "<:APR", $file, $r +or die "Cannot open $file for reading: $!"; +# basic open test +ok ref($fh) eq 'GLOB'; + +# basic single line read +ok t_cmp($expected, + scalar(<$fh>), + "single line read"); + +# slurp mode +seek $fh, 0, Fcntl::SEEK_SET(); # rewind to the start +local $/; +ok t_cmp($expected_all, + scalar(<$fh>), + "slurp file"); + +# test ungetc (a long sep requires read ahead) +seek $fh, 0, Fcntl::SEEK_SET(); # rewind to the start +
cvs commit: modperl-2.0/xs/APR/PerlIO apr_perlio.c
stas02/01/04 01:29:50 Modified:xs/APR/PerlIO apr_perlio.c Log: - now APR PerlIO read is buffered by PerlIOBuf layer. Attention: this requires at least bleadperl patch 13978, 14042 seems to be fine too for me. Revision ChangesPath 1.8 +67 -42modperl-2.0/xs/APR/PerlIO/apr_perlio.c Index: apr_perlio.c === RCS file: /home/cvs/modperl-2.0/xs/APR/PerlIO/apr_perlio.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- apr_perlio.c 20 Dec 2001 03:20:33 - 1.7 +++ apr_perlio.c 4 Jan 2002 09:29:50 - 1.8 @@ -4,7 +4,7 @@ #include "apr_perlio.h" /* XXX: prerequisites to have things working - * pTHX_: perl 5.7.2 patch 13809 is required + * PerlIO_flush patch : perl 5.7.2 patch 13978 is required * dup() : apr cvs date: 2001/12/06 13:43:45 * * XXX: it's not enough to check for PERLIO_LAYERS, some functionality @@ -119,34 +119,16 @@ return NULL; } -/* currrently read is very not-optimized, since in many cases the read - * process happens a char by char. Need to find a way to snoop on APR - * read buffer from PerlIO, or implement our own buffering layer here - */ -static SSize_t PerlIOAPR_read(pTHX_ PerlIO *f, void *vbuf, Size_t count) -{ -PerlIOAPR *st = PerlIOSelf(f, PerlIOAPR); -apr_status_t rc; - -/* fprintf(stderr, "in read: count %d, %s\n", - (int)count, (char*) vbuf); */ -rc = apr_file_read(st->file, vbuf, &count); -/* fprintf(stderr, "out read: count %d, %s\n", - (int)count, (char*) vbuf); */ -if (rc == APR_SUCCESS) { -return (SSize_t) count; -} - -return (SSize_t) -1; -} - static SSize_t PerlIOAPR_write(pTHX_ PerlIO *f, const void *vbuf, Size_t count) { PerlIOAPR *st = PerlIOSelf(f, PerlIOAPR); apr_status_t rc; + +#if 0 + Perl_warn(aTHX_ "in write: count %d, %s\n", + (int)count, (char*) vbuf); +#endif -/* fprintf(stderr, "in write: count %d, %s\n", - (int)count, (char*) vbuf); */ rc = apr_file_write(st->file, vbuf, &count); if (rc == APR_SUCCESS) { return (SSize_t) count; @@ -160,13 +142,14 @@ PerlIOAPR *st = PerlIOSelf(f, PerlIOAPR); apr_seek_where_t where; apr_status_t rc; +IV code; -/* XXX: must flush before seek? */ -rc = apr_file_flush(st->file); -if (rc != APR_SUCCESS) { -return -1; +/* Flush the fill buffer */ +code = PerlIOBuf_flush(aTHX_ f); +if (code != 0) { +return code; } - + switch(whence) { case 0: where = APR_SET; @@ -209,7 +192,7 @@ const char *new_path; apr_file_name_get(&new_path, st->file); -/* fprintf(stderr, "closing file %s\n", new_path); */ +/* Perl_warn(aTHX_ "closing file %s\n", new_path); */ rc = apr_file_flush(st->file); if (rc != APR_SUCCESS) { @@ -239,7 +222,46 @@ static IV PerlIOAPR_fill(pTHX_ PerlIO *f) { -return -1; +PerlIOAPR *st = PerlIOSelf(f, PerlIOAPR); +apr_status_t rc; +SSize_t avail; +Size_t count = st->base.bufsiz; + +if (!st->base.buf) { +PerlIO_get_base(f); /* allocate via vtable */ +} + +#if 0 + Perl_warn(aTHX_ "ask to fill %d chars\n", count); +#endif + +rc = apr_file_read(st->file, st->base.ptr, &count); +if (rc != APR_SUCCESS) { +/* XXX */ +} + +#if 0 + Perl_warn(aTHX_ "got to fill %d chars\n", count); +#endif + +avail = count; /* apr_file_read() sets how many chars were read in count */ +if (avail <= 0) { +if (avail == 0) { +PerlIOBase(f)->flags |= PERLIO_F_EOF; +} +else { +PerlIOBase(f)->flags |= PERLIO_F_ERROR; +} + +return -1; +} +st->base.end = st->base.buf + avail; + +/* indicate that the buffer this layer currently holds unconsumed + data read from layer below. */ +PerlIOBase(f)->flags |= PERLIO_F_RDBUF; + +return 0; } static IV PerlIOAPR_eof(pTHX_ PerlIO *f) @@ -262,14 +284,14 @@ static PerlIO_funcs PerlIO_APR = { "APR", sizeof(PerlIOAPR), -PERLIO_K_BUFFERED | PERLIO_K_MULTIARG, /* XXX: document the flag in perliol.pod */ +PERLIO_K_BUFFERED | PERLIO_K_FASTGETS | PERLIO_K_MULTIARG, PerlIOBase_pushed, PerlIOAPR_popped, PerlIOAPR_open, NULL, /* no getarg needed */ PerlIOAPR_fileno, PerlIOAPR_dup, -PerlIOAPR_read, +PerlIOBuf_read,
cvs commit: modperl/Apache Apache.pm
stas02/01/02 01:41:23 Modified:.cgi_to_mod_perl.pod mod_perl_method_handlers.pod mod_perl.pod mod_perl_traps.pod Apache Apache.pm Log: - pod escape [><] chars Revision ChangesPath 1.8 +2 -2 modperl/cgi_to_mod_perl.pod Index: cgi_to_mod_perl.pod === RCS file: /home/cvs/modperl/cgi_to_mod_perl.pod,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- cgi_to_mod_perl.pod 3 Mar 2000 20:41:59 - 1.7 +++ cgi_to_mod_perl.pod 2 Jan 2002 09:41:23 - 1.8 @@ -58,7 +58,7 @@ If you are using Perl 5.004 most CGI scripts can run under mod_perl untouched. If you're using 5.003, Perl's built-in C and C functions do not work as they do under CGI. If you're -using CGI.pm, use C<$query->print> instead of plain 'ol C. +using CGI.pm, use C<$query-Eprint> instead of plain 'ol C. =item HEADERS @@ -73,7 +73,7 @@ print "Content-type: text/html\n\n"; -If you're using CGI.pm and 'print $q->header' you do +If you're using CGI.pm and 'print $q-Eheader' you do _not_ need C. =item NPH SCRIPTS 1.9 +2 -2 modperl/mod_perl_method_handlers.pod Index: mod_perl_method_handlers.pod === RCS file: /home/cvs/modperl/mod_perl_method_handlers.pod,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- mod_perl_method_handlers.pod 3 Mar 2000 20:41:59 - 1.8 +++ mod_perl_method_handlers.pod 2 Jan 2002 09:41:23 - 1.9 @@ -169,8 +169,8 @@ =head1 AUTHOR -This document is written by Ask Bjoern Hansen <[EMAIL PROTECTED]> or -<[EMAIL PROTECTED]>. Corrections and suggestions are most +This document is written by Ask Bjoern Hansen E[EMAIL PROTECTED] or +E[EMAIL PROTECTED]. Corrections and suggestions are most welcome. In particular would more examples be appreciated, most of my own code is way too integrated with our system, which isn't suitable for public release. 1.22 +20 -20modperl/mod_perl.pod Index: mod_perl.pod === RCS file: /home/cvs/modperl/mod_perl.pod,v retrieving revision 1.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- mod_perl.pod 25 Nov 2000 15:39:22 - 1.21 +++ mod_perl.pod 2 Jan 2002 09:41:23 - 1.22 @@ -36,8 +36,8 @@ =head1 FAQ -The mod_perl FAQ is maintained by Frank Cringle <[EMAIL PROTECTED]>: -http://perl.apache.org/faq/ +The mod_perl FAQ is maintained by Frank Cringle +E[EMAIL PROTECTED]: http://perl.apache.org/faq/ =head1 Apache/Perl API @@ -69,7 +69,7 @@ See eg/startup.pl for an example to start with. -In an httpd.conf or .htaccess you need: +In an httpd.conf ELocation /fooE or .htaccess you need: PerlHandler sub_routine_name @@ -467,10 +467,10 @@ PerlTransHandler OneTrans TwoTrans RedTrans BlueTrans -With the method, Apache->push_handlers, callbacks can be added to +With the method, Apache-Epush_handlers, callbacks can be added to the stack by scripts at runtime by mod_perl scripts. -Apache->push_handlers takes the callback hook name as it's first +Apache-Epush_handlers takes the callback hook name as it's first argument and a subroutine name or reference as it's second. e.g.: Apache->push_handlers("PerlLogHandler", \&first_one); @@ -493,7 +493,7 @@ CGI.pm maintains a global object for it's plain function interface. Since the object is global, it does not go out of scope, DESTROY is -never called. CGI->new can call: +never called. CGI-Enew can call: Apache->push_handlers("PerlCleanupHandler", \&CGI::_reset_globals); @@ -526,8 +526,8 @@ PerlHandler Apache::MsqlProxy PerlHandler is never actually invoked unless translate() sees the -request is a proxy request ($r->proxyreq), if it is a proxy request, -translate() set $r->handler("perl-script"), only then will PerlHandler +request is a proxy request ($r-Eproxyreq), if it is a proxy request, +translate() set $r-Ehandler("perl-script"), only then will PerlHandler handle the request. Now, users do not have to specify 'PerlHandler Apache::MsqlProxy', the translate() function can set it with push_handlers(). @@ -601,7 +601,7 @@ % perl Makefile.PL PERL_STACKED_HANDLERS=1 [PERL_FOO_HOOK=1,etc] -Another method 'Apache->can_stack_handlers' will return TRUE if +Another method 'Apache-Ecan_sta
cvs commit: modperl-site/faq mod_perl_api.pod mod_perl_faq.pod
stas02/01/02 01:39:31 Modified:.perl_myth.pod faq mod_perl_api.pod mod_perl_faq.pod Log: - escape [><] chars Revision ChangesPath 1.6 +18 -16modperl-site/perl_myth.pod Index: perl_myth.pod === RCS file: /home/cvs/modperl-site/perl_myth.pod,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- perl_myth.pod 22 Aug 2001 02:26:19 - 1.5 +++ perl_myth.pod 2 Jan 2002 09:39:31 - 1.6 @@ -34,10 +34,12 @@ is then kept into memory and used each time the program is run. In this way there is no extra overhead when hitting a mod_perl page. -=over 4 +=back =head3 Interpreted vs. Compiled (More Gory Details) +=over 4 + =item R: Compiled code always has the potential to be faster than interpreted @@ -63,8 +65,6 @@ =back -=back - =head2 Perl is overly memory intensive making it unscalable =over 4 @@ -90,10 +90,12 @@ some platforms (I believe ELF is one such format) are able to share entire executable TEXT segments between unrelated processes. -=over 4 +=back =head3 More Tuning Advice: +=over 4 + =item * B( http://perl.apache.org/tuning/ ) @@ -104,8 +106,6 @@ =back -=back - =head2 Not enough support, or tools to develop with Perl. (Myth) =over 4 @@ -240,43 +240,45 @@ =item * -Stas Bekman <[EMAIL PROTECTED]> +Stas Bekman E[EMAIL PROTECTED] =item * -Thornton Prime <[EMAIL PROTECTED]> +Thornton Prime E[EMAIL PROTECTED] =item * -Chip Turner <[EMAIL PROTECTED]> +Chip Turner E[EMAIL PROTECTED] =item * -Clinton <[EMAIL PROTECTED]> +Clinton E[EMAIL PROTECTED] =item * -Joshua Chamas <[EMAIL PROTECTED]> +Joshua Chamas E[EMAIL PROTECTED] =item * -John Edstrom <[EMAIL PROTECTED]> +John Edstrom E[EMAIL PROTECTED] =item * -Rasmus Lerdorf <[EMAIL PROTECTED]> +Rasmus Lerdorf E[EMAIL PROTECTED] =item * -Nedim Cholich <[EMAIL PROTECTED]> +Nedim Cholich E[EMAIL PROTECTED] =item * -Mike Perry < http://www.icorp.net/icorp/feedback.htm > +Mike Perry E http://www.icorp.net/icorp/feedback.htm E =item * -Finally, I'd like to thank Robert Santos <[EMAIL PROTECTED]>, CyberNation's lead Business Development guy for inspiring this document. +Finally, I'd like to thank Robert Santos E[EMAIL PROTECTED], +CyberNation's lead Business Development guy for inspiring this +document. =back 1.6 +7 -9 modperl-site/faq/mod_perl_api.pod Index: mod_perl_api.pod === RCS file: /home/cvs/modperl-site/faq/mod_perl_api.pod,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- mod_perl_api.pod 18 Jul 2001 02:29:28 - 1.5 +++ mod_perl_api.pod 2 Jan 2002 09:39:31 - 1.6 @@ -1,10 +1,6 @@ =head1 NAME -<<<<<<< mod_perl_api.pod -Mod_perl_api - accessing the Apache API via mod_perl ($Date: 2001/07/18 02:29:28 $) -=== -Mod_perl_api - accessing the Apache API via mod_perl ($Date: 2001/07/18 02:29:28 $) ->>>>>>> 1.2 +Mod_perl_api - accessing the Apache API via mod_perl =head1 DESCRIPTION @@ -33,7 +29,7 @@ If this directive is put in access.conf outside of any restrictive context, your handler will be called during the given phase of each request processed by the server. You can make it more selective by -restricting it to a directory (-hierarchy) in a +restricting it to a directory (-hierarchy) in a EDirectory ...E section of access.conf or by putting it in a .htaccess file. Here is an example of the directives needed to call a handler during @@ -109,9 +105,9 @@ Ralf Engelschall writes: When you compiled one httpd with and the other without mod_perl, then -you can simply use ... to surround the -stuff for the httpd compiled with mod_perl. The other then ignores -these lines. Example: +you can simply use EIfModule mod_perl.cE...E/IfModuleE +to surround the stuff for the httpd compiled with mod_perl. The other +then ignores these lines. Example: ...stuff for httpd w/ mod_perl... @@ -119,3 +115,5 @@ ...stuff for httpd w/o mod_perl... + +=cut 1.11 +2 -2 modperl-site/faq/mod_perl_faq.pod Index: mod_perl_faq.pod === RCS file: /home/cvs/modperl-site/faq/mod_perl_faq.pod,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- mod_perl_faq.pod 16 Oct 2001 16:08:34 - 1.1
cvs commit: modperl-site/netcraft index.html
stas02/01/01 19:14:20 Modified:netcraft index.html Log: removing the embed image to securityspace graph, it doesn't get loaded from remote server :( Revision ChangesPath 1.44 +1 -3 modperl-site/netcraft/index.html Index: index.html === RCS file: /home/cvs/modperl-site/netcraft/index.html,v retrieving revision 1.43 retrieving revision 1.44 diff -u -r1.43 -r1.44 --- index.html2 Jan 2002 03:08:24 - 1.43 +++ index.html2 Jan 2002 03:14:20 - 1.44 @@ -19,9 +19,7 @@ provide a http://www.securityspace.com/s_survey/data/man.200112/apachemods.html?mod=cGVybA==";>page similar to this one with statistics and a graph based on the data collected by http://www.securityspace.com/";>www.securityspace.com -http://www.securityspace.com/s_survey/modgraph.php?month=200112&mod=cGVybA=="; -ALT="mod_perl growth data"> +
cvs commit: modperl-site/netcraft graph.jpg index.html input.data pseudo-graph.jpg
stas02/01/01 19:08:24 Modified:netcraft graph.jpg index.html input.data pseudo-graph.jpg Log: - Nov-Dec 2001 stats - embed the stats graph from securityspace.com Revision ChangesPath 1.15 +210 -194 modperl-site/netcraft/graph.jpg <> 1.43 +7 -3 modperl-site/netcraft/index.html Index: index.html === RCS file: /home/cvs/modperl-site/netcraft/index.html,v retrieving revision 1.42 retrieving revision 1.43 diff -u -r1.42 -r1.43 --- index.html1 Nov 2001 05:14:49 - 1.42 +++ index.html2 Jan 2002 03:08:24 - 1.43 @@ -13,13 +13,15 @@ SecuritySpace provides yet -http://www.securityspace.com/s_survey/data/man.200110/apachemods.html";> +http://www.securityspace.com/s_survey/data/man.200112/apachemods.html";> another report. Make sure to click on the menu at the left to pick the latest month, since the link hardcodes the month. They also -provide a http://www.securityspace.com/s_survey/data/man.200110/apachemods.html?mod=cGVybA==";>page similar to this one with statistics and a graph based +provide a http://www.securityspace.com/s_survey/data/man.200112/apachemods.html?mod=cGVybA==";>page similar to this one with statistics and a graph based on the data collected by http://www.securityspace.com/";>www.securityspace.com - +http://www.securityspace.com/s_survey/modgraph.php?month=200112&mod=cGVybA=="; +ALT="mod_perl growth data"> @@ -45,6 +47,8 @@ Surveyhostnamesunique ip addresses + December 2001 2720503326545 + November 2001 2651419322595 October 2001 2540267293633 September 2001 2899420281192 August 20012823060283180 1.28 +2 -0 modperl-site/netcraft/input.data Index: input.data === RCS file: /home/cvs/modperl-site/netcraft/input.data,v retrieving revision 1.27 retrieving revision 1.28 diff -u -r1.27 -r1.28 --- input.data1 Nov 2001 05:14:49 - 1.27 +++ input.data2 Jan 2002 03:08:24 - 1.28 @@ -1,3 +1,5 @@ +December 20012720503 326545 +November 20012651419 322595 October 2001 2540267 293633 September 2001 2899420 281192 August 2001 2823060 283180 1.15 +56 -59modperl-site/netcraft/pseudo-graph.jpg <>
cvs commit: modperl-2.0/t/protocol echo.t echo_filter.t eliza.t
stas02/01/01 02:44:30 Modified:t/protocol echo.t echo_filter.t eliza.t Log: debug prints start with # Revision ChangesPath 1.3 +2 -3 modperl-2.0/t/protocol/echo.t Index: echo.t === RCS file: /home/cvs/modperl-2.0/t/protocol/echo.t,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- echo.t17 Jun 2001 12:24:41 - 1.2 +++ echo.t1 Jan 2002 10:44:29 - 1.3 @@ -2,6 +2,7 @@ use warnings FATAL => 'all'; use Test; +use Apache::TestUtil; use Apache::TestRequest (); my @test_strings = qw(hello world); @@ -13,9 +14,7 @@ ok $socket; for (@test_strings) { -print "SEND ='$_'\n"; print $socket "$_\n"; chomp(my $reply = <$socket>); -print "REPLY='$reply'\n"; -ok $reply eq $_; +ok t_cmp($_, $reply); } 1.2 +2 -3 modperl-2.0/t/protocol/echo_filter.t Index: echo_filter.t === RCS file: /home/cvs/modperl-2.0/t/protocol/echo_filter.t,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- echo_filter.t 15 Jul 2001 22:39:36 - 1.1 +++ echo_filter.t 1 Jan 2002 10:44:29 - 1.2 @@ -2,6 +2,7 @@ use warnings FATAL => 'all'; use Test; +use Apache::TestUtil; use Apache::TestRequest (); my @test_strings = qw(hello world); @@ -13,9 +14,7 @@ ok $socket; for (@test_strings) { -print "SEND ='$_'\n"; print $socket "$_\n"; chomp(my $reply = <$socket>); -print "REPLY='$reply'\n"; -ok $reply eq $_; +ok t_cmp($_, $reply); } 1.3 +3 -2 modperl-2.0/t/protocol/eliza.t Index: eliza.t === RCS file: /home/cvs/modperl-2.0/t/protocol/eliza.t,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- eliza.t 18 Sep 2001 15:20:11 - 1.2 +++ eliza.t 1 Jan 2002 10:44:30 - 1.3 @@ -2,6 +2,7 @@ use warnings FATAL => 'all'; use Apache::Test; +use Apache::TestUtil; use Apache::TestRequest (); my @test_strings = ('Hello Eliza', @@ -17,9 +18,9 @@ ok $socket; for (@test_strings) { -print "SEND ='$_'\n"; print $socket "$_\n"; chomp(my $reply = <$socket>); -print "REPLY='$reply'\n"; +t_debug "send: $_"; +t_debug "recv: $reply"; ok $reply; }
cvs commit: modperl-2.0/t/modules cgiupload.t
stas02/01/01 02:38:19 Modified:t/modules cgiupload.t Log: debug prints start with # Revision ChangesPath 1.4 +2 -1 modperl-2.0/t/modules/cgiupload.t Index: cgiupload.t === RCS file: /home/cvs/modperl-2.0/t/modules/cgiupload.t,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- cgiupload.t 17 Sep 2001 13:27:14 - 1.3 +++ cgiupload.t 1 Jan 2002 10:38:19 - 1.4 @@ -2,6 +2,7 @@ use warnings FATAL => 'all'; use Apache::Test; +use Apache::TestUtil; use Apache::TestRequest; plan tests => 2, \&have_lwp; @@ -24,6 +25,6 @@ my $str = UPLOAD_BODY $location, filename => $filename; my $body_len = length $str; my $file_len = -s $filename; -print "body_len=$body_len, file_len=$file_len\n"; +t_debug "body_len=$body_len, file_len=$file_len"; ok $body_len == $file_len; }
cvs commit: modperl-2.0/t/response/TestModperl dir_config.pm print.pm
stas02/01/01 02:36:05 Modified:t/response/TestModperl dir_config.pm print.pm Log: - cleanups Revision ChangesPath 1.2 +1 -1 modperl-2.0/t/response/TestModperl/dir_config.pm Index: dir_config.pm === RCS file: /home/cvs/modperl-2.0/t/response/TestModperl/dir_config.pm,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- dir_config.pm 13 Nov 2001 18:35:08 - 1.1 +++ dir_config.pm 1 Jan 2002 10:36:05 - 1.2 @@ -110,7 +110,7 @@ my @expected = qw(1_SetValue 2_AddValue 3_AddValue); ok t_cmp(\@expected, \@received, - "testing PerlAddVar ITERATE2 in $s"); + "testing PerlAddVar ITERATE2 in \$s"); } { 1.3 +1 -1 modperl-2.0/t/response/TestModperl/print.pm Index: print.pm === RCS file: /home/cvs/modperl-2.0/t/response/TestModperl/print.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- print.pm 20 Dec 2001 18:12:15 - 1.2 +++ print.pm 1 Jan 2002 10:36:05 - 1.3 @@ -16,7 +16,7 @@ ok 2; -printf "ok %d", 3; +printf "ok %d\n", 3; Apache::OK; }
cvs commit: modperl-2.0/t/response/TestAPR lib.pm
stas02/01/01 02:24:21 Modified:t/response/TestAPR lib.pm Log: debug prints start with # Revision ChangesPath 1.2 +2 -1 modperl-2.0/t/response/TestAPR/lib.pm Index: lib.pm === RCS file: /home/cvs/modperl-2.0/t/response/TestAPR/lib.pm,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- lib.pm2 Apr 2001 09:04:28 - 1.1 +++ lib.pm1 Jan 2002 10:24:21 - 1.2 @@ -4,6 +4,7 @@ use warnings FATAL => 'all'; use Apache::Test; +use Apache::TestUtil; use APR::Lib (); @@ -22,7 +23,7 @@ my $str= APR::strerror($status); -print "strerror=$str\n"; +t_debug "strerror=$str\n"; ok $str eq 'passwords do not match';
cvs commit: modperl-2.0/t/response/TestAPI request_rec.pm
stas02/01/01 02:21:39 Modified:t/response/TestAPI request_rec.pm Log: start non-harness-control prints with # Revision ChangesPath 1.14 +2 -2 modperl-2.0/t/response/TestAPI/request_rec.pm Index: request_rec.pm === RCS file: /home/cvs/modperl-2.0/t/response/TestAPI/request_rec.pm,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- request_rec.pm13 Nov 2001 18:40:01 - 1.13 +++ request_rec.pm1 Jan 2002 10:21:38 - 1.14 @@ -98,10 +98,10 @@ { local $| = 0; -ok 9 == $r->print("buffered\n"); +ok 11 == $r->print("# buffered\n"); ok 0 == $r->print(); local $| = 1; -ok 13 == $r->print('n','o','t',' ','b','u','f','f','e','r','e','d',"\n"); +ok 15 == $r->print('#',' ','n','o','t',' ','b','u','f','f','e','r','e','d',"\n"); } #no_local_copy
cvs commit: modperl-2.0/t/apache post.t
stas02/01/01 02:07:55 Modified:t/apache post.t Log: - test cleanup Revision ChangesPath 1.4 +4 -7 modperl-2.0/t/apache/post.t Index: post.t === RCS file: /home/cvs/modperl-2.0/t/apache/post.t,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- post.t20 Dec 2001 03:54:40 - 1.3 +++ post.t1 Jan 2002 10:07:55 - 1.4 @@ -2,6 +2,7 @@ use warnings FATAL => 'all'; use Apache::Test; +use Apache::TestUtil; use Apache::TestRequest; plan tests => 2; @@ -19,10 +20,6 @@ my $data = join '&', map { "$_=$data{$_}" } keys %data; $str = POST_BODY $location, content => $data; - -my $expect = join(':', length($data), $data); -ok $str eq $expect; - -print "EXPECT: $expect\n"; -print "STR: $str\n"; - +ok t_cmp(join(':', length($data), $data), +$str, +"POST");
cvs commit: modperl-2.0/xs/tables/current/ModPerl FunctionTable.pm
stas01/12/31 04:16:37 Modified:xs/tables/current/Apache ConstantsTable.pm FunctionTable.pm StructureTable.pm xs/tables/current/ModPerl FunctionTable.pm Log: sync to the latest httpd/apr Revision ChangesPath 1.20 +10 -1 modperl-2.0/xs/tables/current/Apache/ConstantsTable.pm Index: ConstantsTable.pm === RCS file: /home/cvs/modperl-2.0/xs/tables/current/Apache/ConstantsTable.pm,v retrieving revision 1.19 retrieving revision 1.20 diff -u -r1.19 -r1.20 --- ConstantsTable.pm 15 Dec 2001 23:51:43 - 1.19 +++ ConstantsTable.pm 31 Dec 2001 12:16:37 - 1.20 @@ -2,7 +2,7 @@ # !! # ! WARNING: generated by Apache::ParseSource/0.02 -# ! Sat Dec 15 15:39:22 2001 +# ! Mon Dec 31 20:02:32 2001 # ! do NOT edit, any changes will be lost ! # !! @@ -221,6 +221,13 @@ 'APR_POLLHUP', 'APR_POLLNVAL' ], +'lockmech' => [ + 'APR_LOCK_FCNTL', + 'APR_LOCK_FLOCK', + 'APR_LOCK_SYSVSEM', + 'APR_LOCK_PROC_PTHREAD', + 'APR_LOCK_DEFAULT' +], 'limit' => [ 'APR_LIMIT_CPU', 'APR_LIMIT_MEM', @@ -347,6 +354,8 @@ 'APR_ENETUNREACH', 'APR_EFTYPE', 'APR_EPIPE', + 'APR_EXDEV', + 'APR_ENOTEMPTY', 'APR_END' ], 'common' => [ 1.29 +508 -60 modperl-2.0/xs/tables/current/Apache/FunctionTable.pm Index: FunctionTable.pm === RCS file: /home/cvs/modperl-2.0/xs/tables/current/Apache/FunctionTable.pm,v retrieving revision 1.28 retrieving revision 1.29 diff -u -r1.28 -r1.29 --- FunctionTable.pm 15 Dec 2001 23:51:43 - 1.28 +++ FunctionTable.pm 31 Dec 2001 12:16:37 - 1.29 @@ -2,7 +2,7 @@ # !! # ! WARNING: generated by Apache::ParseSource/0.02 -# ! Sat Dec 15 15:39:32 2001 +# ! Mon Dec 31 19:58:28 2001 # ! do NOT edit, any changes will be lost ! # !! @@ -347,6 +347,11 @@ }, { 'return_type' => 'int', +'name' => 'ap_calc_scoreboard_size', +'args' => [] + }, + { +'return_type' => 'int', 'name' => 'ap_cfg_closefile', 'args' => [ { @@ -555,6 +560,28 @@ }, { 'return_type' => 'void', +'name' => 'ap_create_sb_handle', +'args' => [ + { +'type' => 'void **', +'name' => 'new_handle' + }, + { +'type' => 'apr_pool_t *', +'name' => 'p' + }, + { +'type' => 'int', +'name' => 'child_num' + }, + { +'type' => 'int', +'name' => 'thread_num' + } +] + }, + { +'return_type' => 'void', 'name' => 'ap_create_scoreboard', 'args' => [ { @@ -2197,12 +2224,8 @@ 'name' => 'ap_increment_counts', 'args' => [ { -'type' => 'int', -'name' => 'child_num' - }, - { -'type' => 'int', -'name' => 'thread_num' +'type' => 'void *', +'name' => 'sbh' }, { 'type' => 'request_rec *', @@ -2236,6 +2259,11 @@ }, { 'return_type' => 'void', +'name' => 'ap_init_scoreboard', +'args' => [] + }, + { +'return_type' => 'void', 'name' => 'ap_init_vhost_config', 'args' => [ { @@ -3866,6 +3894,10 @@ { 'type' => 'int', 'name' => 'conn_id' + }, + { +'type' => 'void *', +'
cvs commit: modperl-2.0/xs/APR/Lock APR__Lock.h
stas01/12/31 04:12:54 Modified:xs/maps apr_functions.map xs/APR/Lock APR__Lock.h Log: apr sources adjustment: new argument 'mech' added to apr_lock_create Revision ChangesPath 1.27 +1 -1 modperl-2.0/xs/maps/apr_functions.map Index: apr_functions.map === RCS file: /home/cvs/modperl-2.0/xs/maps/apr_functions.map,v retrieving revision 1.26 retrieving revision 1.27 diff -u -r1.26 -r1.27 --- apr_functions.map 15 Dec 2001 23:51:13 - 1.26 +++ apr_functions.map 31 Dec 2001 12:12:54 - 1.27 @@ -164,7 +164,7 @@ MODULE=APR::Lock !apr_lock_child_init apr_lock_t *:apr_lock_create | mpxs_ | \ - SV *:CLASS, pool, type=0, scope=1, fname="lock.file" | new + SV *:CLASS, pool, type=0, mech, scope=1, fname="lock.file" | new -apr_lock_destroy apr_lock_DESTROY | | lock apr_lock_data_get 1.2 +2 -1 modperl-2.0/xs/APR/Lock/APR__Lock.h Index: APR__Lock.h === RCS file: /home/cvs/modperl-2.0/xs/APR/Lock/APR__Lock.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- APR__Lock.h 5 Mar 2001 03:53:28 - 1.1 +++ APR__Lock.h 31 Dec 2001 12:12:54 - 1.2 @@ -3,10 +3,11 @@ static MP_INLINE apr_lock_t *mpxs_apr_lock_create(pTHX_ SV *CLASS, apr_pool_t *p, apr_locktype_e type, + apr_lockmech_e mech, apr_lockscope_e scope, const char *fname) { apr_lock_t *retval=NULL; -(void)apr_lock_create(&retval, type, scope, fname, p); +(void)apr_lock_create(&retval, type, mech, scope, fname, p); return retval; }
cvs commit: modperl-2.0/xs/maps apr_types.map
stas01/12/31 04:11:48 Modified:lib/Apache ParseSource.pm xs/maps apr_types.map Log: apr sources adjustment: new enum apr_lockmech_e Revision ChangesPath 1.33 +1 -1 modperl-2.0/lib/Apache/ParseSource.pm Index: ParseSource.pm === RCS file: /home/cvs/modperl-2.0/lib/Apache/ParseSource.pm,v retrieving revision 1.32 retrieving revision 1.33 diff -u -r1.32 -r1.33 --- ParseSource.pm7 Nov 2001 03:14:54 - 1.32 +++ ParseSource.pm31 Dec 2001 12:11:48 - 1.33 @@ -174,7 +174,7 @@ my %enums_wanted = ( Apache => { map { $_, 1 } qw(cmd_how input_mode filter_type) }, -APR => { map { $_, 1 } qw(apr_shutdown_how apr_read_type) }, +APR => { map { $_, 1 } qw(apr_shutdown_how apr_read_type apr_lockmech) }, ); my $defines_unwanted = join '|', qw{ 1.11 +1 -0 modperl-2.0/xs/maps/apr_types.map Index: apr_types.map === RCS file: /home/cvs/modperl-2.0/xs/maps/apr_types.map,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- apr_types.map 17 Sep 2001 00:38:07 - 1.10 +++ apr_types.map 31 Dec 2001 12:11:48 - 1.11 @@ -93,6 +93,7 @@ apr_os_lock_t| NOTIMPL struct apr_lock_t| APR::Lock apr_locktype_e | IV +apr_lockmech_e | IV apr_lockscope_e | IV apr_readerwriter_e | IV apr_lockmech_e_np| IV
cvs commit: modperl-2.0/t .cvsignore SMOKE.PL TEST.PL
stas01/12/31 00:45:13 Modified:.Makefile.PL t.cvsignore Removed: buildbugreport.pl tSMOKE.PL TEST.PL Log: - start using the generate_script functions for auto-generating TEST, REPORT and SMOKE utils Revision ChangesPath 1.58 +11 -8 modperl-2.0/Makefile.PL Index: Makefile.PL === RCS file: /home/cvs/modperl-2.0/Makefile.PL,v retrieving revision 1.57 retrieving revision 1.58 diff -u -r1.57 -r1.58 --- Makefile.PL 25 Dec 2001 12:46:10 - 1.57 +++ Makefile.PL 31 Dec 2001 08:45:13 - 1.58 @@ -3,16 +3,19 @@ use warnings FATAL => 'all'; use lib qw(lib Apache-Test/lib); -use Config; -use Apache::Build (); -use ModPerl::Code (); -use ModPerl::MM (); +use Config; use File::Spec::Functions; use DirHandle (); +use Apache::Build (); +use Apache::TestReportPerl (); +use Apache::TestSmokePerl (); +use Apache::TestRunPerl (); use Apache::TestTrace; use Apache::TestMM qw(test); +use ModPerl::Code (); +use ModPerl::MM (); our $VERSION; @@ -34,7 +37,6 @@ my @remote_makefile_dirs = Apache::Build::is_win32() ? () : qw(docs/api/mod_perl-2.0); -my @scripts = qw(t/TEST t/SMOKE); configure(); ModPerl::MM::WriteMakefile( @@ -103,8 +105,9 @@ #ModPerl::MM will use Apache::BuildConfig in subdir/Makefile.PL's $build->save; -for (@scripts) { -Apache::TestMM::generate_script($_); +for my $util (qw(Report Smoke Run)) { +my $class = "Apache::Test${util}Perl"; +$class->generate_script; } my $tables_dir = tables_dir($httpd_version); @@ -167,7 +170,7 @@ sub clean_files { my $path = $code->path; -return [@{ $build->clean_files }, @scripts, +return [@{ $build->clean_files }, , , map { "$path/$_"} @{ $code->clean_files }]; } 1.4 +1 -0 modperl-2.0/t/.cvsignore Index: .cvsignore === RCS file: /home/cvs/modperl-2.0/t/.cvsignore,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- .cvsignore10 Dec 2001 07:44:53 - 1.3 +++ .cvsignore31 Dec 2001 08:45:13 - 1.4 @@ -1,5 +1,6 @@ TEST SMOKE +REPORT .gdb-test-start htdocs logs
cvs commit: modperl-2.0/pod .cvsignore modperl_2.0.pod modperl_design.pod
stas01/12/27 04:02:47 Added: src/docs/2.0/user/overview overview.pod src/docs/2.0/user/design design.pod Removed: pod .cvsignore modperl_2.0.pod modperl_design.pod Log: - move docs from ./pod to docs/user// - ./pod dir is a goner, all docs are now in the modperl-docs rep Revision ChangesPath 1.1 modperl-docs/src/docs/2.0/user/overview/overview.pod Index: overview.pod === =head1 NAME Overview of mod_perl 2.0 =head1 Introduction mod_perl was introduced in early 1996, both Perl and Apache have changed a great deal since that time. mod_perl has adjusted to both along the way over the past 4 and a half years or so using the same code base. Over this course of time, the mod_perl sources have become more and more difficult to maintain, in large part to provide compatibility between the many different flavors of Apache and Perl. And, compatibility across these versions and flavors is a more diffcult goal for mod_perl to reach that a typical Apache or Perl module, since mod_perl reaches a bit deeper into the corners of Apache and Perl internals than most. Discussions of the idea to rewrite mod_perl as version 2.0 started in 1998, but never made it much further than an idea. When Apache 2.0 development was underway it became clear that a rewrite of mod_perl would be required to adjust to the new Apache architechure and API. Of the many changes happening in Apache 2.0, the one which has the most impact on mod_perl is the introduction of threads to the overall design. Threads have been a part of Apache on the win32 side since the Apache port was introduced. The mod_perl port to win32 happened in verison 1.00b1, released in June of 1997. This port enabled mod_perl to compile and run in a threaded windows environment, with one major caveat: only one concurrent mod_perl request could be handled at any given time. This was due to the fact that Perl did not introduce thread safe interpreters until version 5.6.0, released in March of 2000. Contrary to popular belief, the "thread support" implemented in Perl 5.005 (released July 1998), did not make Perl thread safe internally. Well before that version, Perl had the notion of "Multiplicity", which allowed multiple interpreter instances in the same process. However, these instances were not thread safe, that is, concurrent callbacks into multiple interpreters were not supported. It just so happens that the release of Perl 5.6.0 was nearly at the same time as the first alpha version of Apache 2.0. The development of mod_perl 2.0 was underway before those releases, but as both Perl 5.6.x and Apache 2.0 are reaching stability, mod_perl-2.0 becomes more of a reality. In addition to the adjustments for threads and Apache 2.0 API changes, this rewrite of mod_perl is an opportunity to clean up the source tree. This includes both removing the old backward compatibility bandaids and building a smarter, stronger and faster implementation based on lessons learned over the 4.5 years since mod_perl was introduced. This paper and talk assume basic knowlege of mod_perl 1.xx features and will focus only the differences mod_perl-2.00 will bring. Note 1: The Apache and mod_perl APIs mentioned in this paper are both in an "alpha" state and subject to change. Note 2: Some of the mod_perl APIs mentioned in this paper do not even exist and are subject to be implemented, in which case you would be redirected to "Note 1". =head1 Apache 2.0 Summary Note: This section will give you a brief overview of the changes in Apache 2.0, just enough to understand where mod_perl will fit in. For more details on Apache 2.0 consult the papers by Ryan Bloom. =head2 MPMs - Multi-Processing Model Modules In Apache 1.3.x concurrent requests were handled by multiple processes, and the logic to manage these processes lived in one place, I, 7200 some odd lines of code. If Apache 1.3.x is compiled on a Win32 system large parts of this source file are redefined to handle requests using threads. Now suppose you want to change the way Apache 1.3.x processes requests, say, into a DCE RPC listener. This is possible only by slicing and dicing I into more pieces or by redefining the I function, with a C<-DSTANDALONE_MAIN=your_function> compile time flag. Neither of which is a clean, modular mechanism. Apache-2.0 solves this problem by intoducing I, better known as I. The task of managing incoming requests is left to the MPMs, shrinking I to less than 500 lines of code. Several MPMs are included with Apache 2.0 in the I directory: =over 4 =item prefork The I module emulates 1.3.x's preforking model, where each re
cvs commit: modperl-2.0/pod modperl_dev.pod
stas01/12/27 03:50:22 Removed: pod modperl_dev.pod Log: - modperl_dev has been split into a few documents: -> user/config/config.pod -> user/install/install.pod and ceased to exist
cvs commit: modperl-2.0/pod modperl_dev.pod
stas01/12/27 03:10:04 Modified:pod modperl_dev.pod Log: 'make test' features now all live in the writing_tests document Revision ChangesPath 1.49 +2 -98 modperl-2.0/pod/modperl_dev.pod Index: modperl_dev.pod === RCS file: /home/cvs/modperl-2.0/pod/modperl_dev.pod,v retrieving revision 1.48 retrieving revision 1.49 diff -u -r1.48 -r1.49 --- modperl_dev.pod 2001/12/27 09:23:14 1.48 +++ modperl_dev.pod 2001/12/27 11:10:04 1.49 @@ -206,104 +206,8 @@ =head1 'make test' Features -=head2 What Test Options are Available - -Run: - - % ./t/TEST -help - -to get the list of options you can use during testing - -=head2 'make test' Debug - -mod_perl-2.0 provides built in 'make test' debug facility. So in case -you get a core dump during make test, or just for fun, run in one shell: - - % ./t/TEST -debug - -in another shell: - - % ./t/TEST -run - -then the I<-debug> shell will have a (gdb) prompt, type 'where' for -stacktrace. - -You can change the default debugger by supplying the name of the -debugger as an argument to I<-debug>. E.g. to run the server under -C: - - % ./t/TEST -debug=ddd - -=head2 Advanced Debugging - -If you debug mod_perl internals you can set the breakpoints using the -I<-breakpoint> option, which can be repeated as many times as -needed. When you set at least one breakpoint, the server will start -running till it meets the I breakpoint. At this -point we can set the breakpoint for the mod_perl code, something we -cannot do earlier if mod_perl was built as DSO. For example: - - % ./t/TEST -debug -breakpoint=modperl_cmd_switches \ - -breakpoint=modperl_cmd_options - -will set the I and I -breakpoints and run the debugger. - -If you want to tell the debugger to jump to the start of the mod_perl -code you may run: - - % ./t/TEST -debug -breakpoint=modperl_hook_init - -In fact I<-breakpoint> automatically turns on the debug mode, so you -can run: - - % ./t/TEST -breakpoint=modperl_hook_init - - -=head2 Running Individual Tests - -Run a single test: - - % ./t/TEST protocol/echo.t - -The server will be stopped if it was already running and a new one -will be started before running the I test. At the -end of the test the server will be shut down. - -You can run groups of tests at once. - - % ./t/TEST modules protocol/echo.t - -will run all the tests in I directory, followed by -I test. - -=head2 Repeating the Tests - -By default when you run the test without I<-run-tests> option, the -server will be started before the testing and stopped at the end. If -during a debugging process you need to re-run tests without a need to -restart the server, you can start the server once: - - % ./t/TEST modules -start-httpd - -and then run the test(s) with I<-run-tests> option many times: - - % ./t/TEST -run-tests protocol/echo - -without waiting for the server to restart. - -When you are done with tests shutdown the server: - - % ./t/TEST modules -stop-httpd - -=head2 Verbose Testing - -By default print() statements in the test script are filtered out by -C. if you want the test to print what it does (if you -decide to debug some test) use C<-verbose> option: - - % t/TEST -verbose protocol/echo.t - +L<../writing_tests/writing_tests.pod> document covers the C +suite. =head1 mod_perl configuration directives
cvs commit: modperl-2.0/pod modperl_dev.pod
stas01/12/27 01:23:14 Modified:pod modperl_dev.pod Log: - the help section has moved to its own document at docs/devel/help/help.pod Revision ChangesPath 1.48 +0 -146modperl-2.0/pod/modperl_dev.pod Index: modperl_dev.pod === RCS file: /home/cvs/modperl-2.0/pod/modperl_dev.pod,v retrieving revision 1.47 retrieving revision 1.48 diff -u -r1.47 -r1.48 --- modperl_dev.pod 2001/12/24 19:28:41 1.47 +++ modperl_dev.pod 2001/12/27 09:23:14 1.48 @@ -203,152 +203,6 @@ % perl build/source_scan.pl apxs $apache_prefix/bin/apxs -=head1 Support - -The following mailing lists can be of a major interest to the mod_perl -2.0 developers: - -=head2 mod_perl 2.0 Development - -=over - -=item discussion/problems report: - -mailing list subscription: mailto:[EMAIL PROTECTED] - -archive: http://marc.theaimsgroup.com/?l=apache-modperl-dev&r=1&w=2#apache-modperl-dev - -reporting: Be sure to include the output of: - - % perl build/config.pl - -which generates the output from: - -=over 4 - -=item perl -V - -=item httpd -V - -=item Makefile.PL options - -=back - -You can also use I. - -If you get segmentation faults see the I<'make test' Debug> section. - -=item cvs commits: - -mailing list subscription: mailto:[EMAIL PROTECTED] - -archive: http://marc.theaimsgroup.com/?l=apache-modperl-cvs&r=1&w=2#apache-modperl-cvs - - -=back - - -=head2 Apache-Test - -The C project, originally developed as a part of mod_perl -2.0, is now a part of the Apache C project. You get this -repository automatically when checking out the mod_perl-2.0 cvs -repository. - -To retrieve the whole httpd-test project, run: - - cvs co httpd-test - -=over - -=item discussion/problems report: - -mailing list subscription: mailto:[EMAIL PROTECTED] - -archive: ??? - -=item cvs commits - -mailing list subscription: mailto:[EMAIL PROTECTED] - -archive: ??? - -=back - - -=head2 Apache 2.0 - -=over - -=item discussion/problems report: - -mailing list subscription: mailto:[EMAIL PROTECTED] - -archive: http://marc.theaimsgroup.com/?l=apache-new-httpd&r=1&w= - -=item cvs commits - -mailing list subscription: mailto:[EMAIL PROTECTED] - -archive: http://marc.theaimsgroup.com/?l=apache-cvs&r=1&w=2 - -=back - - -=head2 Apache Portable Runtime (APR) - -The Apache Portable Run-time libraries have been designed to provide a -common interface to low level routines across any platform. mod_perl -comes with a partial Perl APR API. - -=over - -=item discussion/problems report: - -mailing list subscription: mailto:[EMAIL PROTECTED] - -archive: http://marc.theaimsgroup.com/?l=apr-dev&r=1&w=2 - -=item cvs commits - -mailing list subscription: mailto:[EMAIL PROTECTED] - -archive: http://marc.theaimsgroup.com/?l=apr-cvs&r=1&w=2 - -=back - - - -=head2 Perl 5 - -Currently mod_perl 2.0 requires perl 5.6.x and higher. If you have -problems with Perl perl5-porters mailing list should be used. For -other lists see http://lists.perl.org/. - -=over - -=item discussion/problems report: - -mailing list subscription: mailto:[EMAIL PROTECTED] - -archive: http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/ -and http:[EMAIL PROTECTED]/ - -news gateway: news://news.perl.com/perl.porters-gw/ - -=item perforce - -Perl uses perforce for its source revision control, see -I manpage coming with Perl for more -information. - -mailing list subscription: [EMAIL PROTECTED] - -archive: http:[EMAIL PROTECTED]/ - -=back - - =head1 'make test' Features
cvs commit: modperl-2.0/pod modperl_sizeof.pod
stas01/12/27 00:16:20 Removed: pod modperl_sizeof.pod Log: - moved to docs/devel/perf_sizeof/perf_sizeof.pod
cvs commit: modperl-2.0 Makefile.PL
stas01/12/25 04:46:10 Modified:.Makefile.PL Log: - correct the changed docs path in the problem description comment Revision ChangesPath 1.57 +1 -1 modperl-2.0/Makefile.PL Index: Makefile.PL === RCS file: /home/cvs/modperl-2.0/Makefile.PL,v retrieving revision 1.56 retrieving revision 1.57 diff -u -r1.56 -r1.57 --- Makefile.PL 2001/12/25 12:44:49 1.56 +++ Makefile.PL 2001/12/25 12:46:10 1.57 @@ -26,7 +26,7 @@ my $code = ModPerl::Code->new; #XXX: dunno why but win32 fails because of this: -#cd docs/src/api/mod_perl-2.0 && nmake all ... +#cd docs/api/mod_perl-2.0 && nmake all ... #NMAKE : fatal error U1073: don't know how to make 'all' #Stop. #NMAKE : fatal error U1077: 'cd' : return code '0x2'
cvs commit: modperl-2.0/src/modules/perl .cvsignore
stas01/12/24 11:33:12 Modified:src/modules/perl .cvsignore Log: ignore autogenerated files Revision ChangesPath 1.10 +1 -0 modperl-2.0/src/modules/perl/.cvsignore Index: .cvsignore === RCS file: /home/cvs/modperl-2.0/src/modules/perl/.cvsignore,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- .cvsignore2001/10/22 03:58:26 1.9 +++ .cvsignore2001/12/24 19:33:12 1.10 @@ -4,6 +4,7 @@ modperl_flags.c modperl_directives.h modperl_directives.c +modperl_largefiles.h modperl_trace.h modperl_xsinit.c ldopts
cvs commit: modperl-2.0/pod modperl_dev.pod
stas01/12/24 11:28:41 Modified:pod modperl_dev.pod Log: - fix the MP_CCOPTS=-Werror example (should have no spaces) - explain how to use gdb faster under mod_perl DSO. Revision ChangesPath 1.47 +106 -1modperl-2.0/pod/modperl_dev.pod Index: modperl_dev.pod === RCS file: /home/cvs/modperl-2.0/pod/modperl_dev.pod,v retrieving revision 1.46 retrieving revision 1.47 diff -u -r1.46 -r1.47 --- modperl_dev.pod 2001/12/15 23:45:05 1.46 +++ modperl_dev.pod 2001/12/24 19:28:41 1.47 @@ -137,8 +137,11 @@ Add to compiler flags, e.g. - MP_CCOPTS = -Werror + MP_CCOPTS=-Werror +(Notice that C<-Werror> will work only with the Perl version 5.007 and +higher.) + =item MP_OPTIONS_FILE Read options from given file @@ -702,6 +705,108 @@ % gdb /home/stas/httpd-2.0/bin/httpd -command \ /home/stas/apache.org/modperl-perlmodule/t/.gdb-jump-to-init +=head2 Starting the Server Fast under gdb + +When the server is started under gdb, it first loads the symbol tables +of the dynamic libraries that it sees going to be used. Some versions +of gdb may take ages to complete this task, which makes the debugging +very irritating if you have to restart the server all the time and it +doesn't happen immediately. + +The trick is to set the C flag to 0: + + set auto-solib-add 0 + +in I<~/.gdbinit> file. + +With this setting in effect, you can load only the needed dynamic +libraries with I command. Remember that in order to set +a breakpoint and step through the code inside a certain dynamic +library you have to load it first. For example consider this gdb +commands file: + + .gdb-commands + + file ~/httpd/prefork/bin/httpd + handle SIGPIPE pass + handle SIGPIPE nostop + set auto-solib-add 0 + b ap_run_pre_config + run -DONE_PROCESS -d `pwd`/t -f `pwd`/t/conf/httpd.conf \ + -DAPACHE2 -DPERL_USEITHREADS + sharedlibrary modperl + b modperl_hook_init + # start: modperl_hook_init + continue + # restart: ap_run_pre_config + continue + # restart: modperl_hook_init + continue + b apr_poll + continue + + # load APR/PerlIO/PerlIO.so + sharedlibrary PerlIO + b PerlIOAPR_open + +which can be used as: + + % gdb -command=.gdb-commands + +This script stops in I, so you can step through +the mod_perl startup. We had to use the I so we can +load the I library as explained earlier. Since httpd +restarts on the start, we have to I until we hit +I second time, where we can set the breakpoint at +I, the very point where httpd polls for new request and run +again I so it'll stop at I. + +When gdb stops at the function I it's a time to start the +client: + + % t/TEST -run + +But before that if we want to debug the server response we need to set +breakpoints in the libraries we want to debug. For example if we want +to debug the function C which resides in +I we first load it and then we can set a +breakpoint in it. Notice that gdb may not be able to load a library if +it wasn't referenced by any of the code. In this case we have to +require this library at the server startup. In our example we load: + + PerlModule APR::PerlIO + +in I. To check which libraries' symbol tables can be +loaded in gdb, run (when the server has been started): + + gdb> info sharedlibrary + +which will also show which libraries were loaded already. + +Also notice that you don't have to type the full path of the library +when trying to load them, even a partial name will suffice. In our +commands file example we have used C instead of +saying C. + +If you want to set breakpoints and step through the code in the Perl +and APR core libraries you should load their appropriate libraries: + + gdb> sharedlibrary libperl + gdb> sharedlibrary libapr + gdb> sharedlibrary libaprutil + +Setting I to 0 makes the debugging process unusual, +since originally gdb was loading the dynamic libraries automatically, +whereas now it doesn't. This is the price one has to pay to get the +debugger starting the program very fast. Hopefully the future versions +of gdb will improve. + +Just remember that if you try to I and debugger doesn't do +anything, that means that the library the function is located in +wasn't loaded. The solution is to create a commands file as explained +in the beginning of this section and craft the startup script the way +you need to avoid extra typing and mistakes when repeating the same +debugging process again and again. =head1 Notes for Developers
cvs commit: modperl-2.0/todo api.txt
stas01/12/22 20:30:28 Modified:todo api.txt Log: - updates to the todo issue with send_fd. Revision ChangesPath 1.19 +3 -1 modperl-2.0/todo/api.txt Index: api.txt === RCS file: /home/cvs/modperl-2.0/todo/api.txt,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- api.txt 2001/12/20 18:12:15 1.18 +++ api.txt 2001/12/23 04:30:28 1.19 @@ -52,7 +52,9 @@ at the moment $r->send_fd is implement in Apache::compat, functions, but does not have the performance benefits of ap_send_fd() however, $r->sendfile is a new function that opens the file for you -and calls ap_send_fd() underneath. +and calls ap_send_fd() underneath. ap_send_fd() in APR doesn't work +with fd's which aren't files and of unknown length, therefore it cannot +be used for implementing 1.x compatible send_fd. $r->{hard,reset,soft,kill}_timeout: do not exist in 2.0. should be deprecated. consider adding noops in
cvs commit: modperl-2.0/pod modperl_2.0.pod modperl_design.pod
stas01/12/21 07:03:41 Modified:pod modperl_2.0.pod modperl_design.pod Log: - PerlHandler doesn't exist in 2.0 (without compat enabled) - narrow the lines block Revision ChangesPath 1.5 +1 -1 modperl-2.0/pod/modperl_2.0.pod Index: modperl_2.0.pod === RCS file: /home/cvs/modperl-2.0/pod/modperl_2.0.pod,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- modperl_2.0.pod 2001/04/06 02:20:26 1.4 +++ modperl_2.0.pod 2001/12/21 15:03:41 1.5 @@ -681,7 +681,7 @@ PerlInterpMaxRequests 1 PerlInterpStart 1 PerlInterpMax 1 -PerlHandler Apache::Registry +PerlResponseHandler Apache::Registry Will use a fresh interpreter with its own namespace to handle each 1.4 +5 -4 modperl-2.0/pod/modperl_design.pod Index: modperl_design.pod === RCS file: /home/cvs/modperl-2.0/pod/modperl_design.pod,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- modperl_design.pod2001/06/29 07:46:02 1.3 +++ modperl_design.pod2001/12/21 15:03:41 1.4 @@ -161,10 +161,11 @@ Perl*Handlers are now "compiled", that is, the various forms of: - PerlHandler MyModule (defaults to MyModule::handler or MyModule->handler) - PerlHandler MyModule->handler - PerlHandler $MyObject->handler - PerlHandler 'sub { print "foo\n" }' + PerlResponseHandler MyModule->handler + # defaults to MyModule::handler or MyModule->handler + PerlResponseHandler MyModule + PerlResponseHandler $MyObject->handler + PerlResponseHandler 'sub { print "foo\n" }' are only parsed once, unlike 1.xx which parsed every time the handler was used. there will also be an option to parse the handlers at
cvs commit: modperl-2.0/t/filter/TestFilter buckets.pm input_body.pm input_msg.pm
stas01/12/21 03:30:39 Modified:t/apisend_fd.t sendfile.t t/filter/TestFilter buckets.pm input_body.pm input_msg.pm Log: - remove the redundant loading of Test and Apache::Test in certain tests Revision ChangesPath 1.4 +1 -2 modperl-2.0/t/api/send_fd.t Index: send_fd.t === RCS file: /home/cvs/modperl-2.0/t/api/send_fd.t,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- send_fd.t 2001/12/20 03:54:41 1.3 +++ send_fd.t 2001/12/21 11:30:38 1.4 @@ -1,8 +1,7 @@ use strict; use warnings FATAL => 'all'; -use Test; -use Apache::Test (); +use Apache::Test; use Apache::TestRequest; plan tests => 3; 1.4 +1 -2 modperl-2.0/t/api/sendfile.t Index: sendfile.t === RCS file: /home/cvs/modperl-2.0/t/api/sendfile.t,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- sendfile.t2001/12/20 03:54:41 1.3 +++ sendfile.t2001/12/21 11:30:38 1.4 @@ -1,8 +1,7 @@ use strict; use warnings FATAL => 'all'; -use Test; -use Apache::Test (); +use Apache::Test; use Apache::TestRequest; plan tests => 3; 1.4 +0 -1 modperl-2.0/t/filter/TestFilter/buckets.pm Index: buckets.pm === RCS file: /home/cvs/modperl-2.0/t/filter/TestFilter/buckets.pm,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- buckets.pm2001/04/20 00:38:09 1.3 +++ buckets.pm2001/12/21 11:30:38 1.4 @@ -4,7 +4,6 @@ use warnings FATAL => 'all'; use Test; -use Apache::Test (); use Apache::Filter (); use APR::Brigade (); use APR::Bucket (); 1.8 +0 -2 modperl-2.0/t/filter/TestFilter/input_body.pm Index: input_body.pm === RCS file: /home/cvs/modperl-2.0/t/filter/TestFilter/input_body.pm,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- input_body.pm 2001/11/06 00:07:53 1.7 +++ input_body.pm 2001/12/21 11:30:38 1.8 @@ -5,8 +5,6 @@ use base qw(Apache::Filter); #so we inherit MODIFY_CODE_ATTRIBUTES -use Test; -use Apache::Test (); use Apache::Const -compile => qw(M_POST); use APR::Const -compile => ':common'; use APR::Brigade (); 1.8 +0 -2 modperl-2.0/t/filter/TestFilter/input_msg.pm Index: input_msg.pm === RCS file: /home/cvs/modperl-2.0/t/filter/TestFilter/input_msg.pm,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- input_msg.pm 2001/11/06 00:08:46 1.7 +++ input_msg.pm 2001/12/21 11:30:38 1.8 @@ -5,8 +5,6 @@ use base qw(Apache::Filter); -use Test; -use Apache::Test (); use APR::Brigade (); use APR::Bucket ();
cvs commit: modperl-site win32_binaries.html win32_binaries.pod win32_compile.html win32_compile.pod win32_multithread.html win32_multithread.pod index.html
stas01/12/20 23:44:43 Modified:.index.html Added: .win32_binaries.html win32_binaries.pod win32_compile.html win32_compile.pod win32_multithread.html win32_multithread.pod Log: add win32 docs by Randy Kobes Revision ChangesPath 1.97 +8 -0 modperl-site/index.html Index: index.html === RCS file: /home/cvs/modperl-site/index.html,v retrieving revision 1.96 retrieving revision 1.97 diff -u -r1.96 -r1.97 --- index.html2001/12/12 05:15:04 1.96 +++ index.html2001/12/21 07:44:43 1.97 @@ -367,6 +367,14 @@ +Win32 specific documentation: + Binaries (pod) + Compilation (pod) + Multithreading (pod) + + + + http://www.refcards.com/";>mod_perl reference card by Andrew Ford. 1.1 modperl-site/win32_binaries.html Index: win32_binaries.html === win32_binaries - obtaining Apache mod_perl-1.xx binaries for Win32 NAME DESCRIPTION ALL-IN-ONE PACKAGES PPM Packages CONFIGURATION Registry scripts Hello World APACHE MODULES SEE ALSO NAME win32_binaries - obtaining Apache mod_perl-1.xx binaries for Win32 DESCRIPTION This document discusses the two major types of binary packages available for Win32 mod_perl - all-in-one Perl/Apache/mod_perl binaries, and mod_perl ppm (Perl Package Manager) packages. ALL-IN-ONE PACKAGES There are at least two binary packages for Win32 that contain the necessary Perl and Apache binaries: http://www.indigostar.com/";>http://www.indigostar.com/ ftp://theoryx5.uwinnipeg.ca/pub/other/perl-win32-bin-x.x.exe";>ftp://theoryx5.uwinnipeg.ca/pub/other/perl-win32-bin-x.x.exe As well as including a number of non-core modules, both of these packages contain mod_perl. See the documentation on the web sites and that included with the packages for installation instructions. Both of these also include an ActiveState-compatible ppm (Perl Package Manager) utility for adding and upgrading modules. PPM Packages For users of ActivePerl, available from http://www.activestate.com/";>http://www.activestate.com/ there are also PPM mod_perl packages available. For this, if you don't already have it, get and install the latest Win32 Apache binary from http://httpd.apache.org/";>http://httpd.apache.org/ Both ActivePerl and Apache binaries are available as MSI files for use by the Microsoft Installer - as discussed on the ActiveState site, users of Windows 95 and 98 may need to obtain this. In installing these packages, you may find it convenient when transcribing any Unix-oriented documentation to choose installation directories that do not have spaces in their names (eg, C:\Perl and C:\Apache). After installing Perl and Apache, you can then install mod_perl via the PPM utility. ActiveState does not maintain mod_perl in the ppm repository, so you must get it from a different location other than ActiveState's site. One way is simply as (broken over two lines for readability) C:\> ppm install http://theoryx5.uwinnipeg.ca/ppmpackages/mod_perl.ppd";>http://theoryx5.uwinnipeg.ca/ppmpackages/mod_perl.ppd Another way, which will be useful if you plan on installing additional Apache modules, is to set the repository within the ppm shell utility as (the set repository ... command has been broken over two lines for readability): C:\> ppm PPM> set repository theoryx5 http://theoryx5.uwinnipeg.ca/cgi-bin/ppmserver?urn:/PPMServer";>http://theoryx5.uwinnipeg.ca/cgi-bin/ppmserver?urn:/PPMServer PPM> install mod_perl PPM> set save PPM> quit C:\> The set save command saves the theoryx5 repository to your PPM configuration file, so that future PPM sessions will search this repository, as well as ActiveState's, for requested packages. The mod_perl PPM package also includes the necessary Apache DLL mod_perl.so; a post-installation script should be run which will offer to copy this file to your Apache modules directory (eg, C:\Apache\modules). Note that the mod_perl package available from this site will always use the latest mod_perl sources compiled against the latest official Apache release; depending on changes made in Apache, you may or may not be able to use an earlier Apache binary. However, in the Apache Win32
cvs commit: modperl-site/guide install.html
stas01/12/20 23:43:38 Modified:guideinstall.html Log: s|www.perl.com/CPAN-local|www.cpan.org|g as the later doesn't feature multiplexing Revision ChangesPath 1.23 +1 -1 modperl-site/guide/install.html Index: install.html === RCS file: /home/cvs/modperl-site/guide/install.html,v retrieving revision 1.22 retrieving revision 1.23 diff -u -r1.22 -r1.23 --- install.html 2001/11/15 09:04:50 1.22 +++ install.html 2001/12/21 07:43:38 1.23 @@ -3674,7 +3674,7 @@ Running make for DOUGM/mod_perl-x.xx.tar.gz Fetching with LWP: - http://www.perl.com/CPAN-local/authors/id/DOUGM/mod_perl-x.xx.tar.gz";>http://www.perl.com/CPAN-local/authors/id/DOUGM/mod_perl-x.xx.tar.gz + http://www.cpan.org/authors/id/DOUGM/mod_perl-x.xx.tar.gz";>http://www.cpan.org/authors/id/DOUGM/mod_perl-x.xx.tar.gz CPAN.pm: Going to build DOUGM/mod_perl-x.xx.tar.gz
cvs commit: modperl-site email-etiquette.pod
stas01/12/20 23:42:55 Modified:.email-etiquette.pod Log: s|www.perl.com/CPAN-local|www.cpan.org|g as the later doesn't feature multiplexing Revision ChangesPath 1.2 +1 -1 modperl-site/email-etiquette.pod Index: email-etiquette.pod === RCS file: /home/cvs/modperl-site/email-etiquette.pod,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- email-etiquette.pod 2001/10/21 06:50:06 1.1 +++ email-etiquette.pod 2001/12/21 07:42:55 1.2 @@ -377,7 +377,7 @@ The sources are available from CPAN and other mirrors: -http://www.perl.com/CPAN-local/authors/id/S/ST/STAS/ +http://www.cpan.org/authors/id/S/ST/STAS/ =head2 Corrections And Contributions