Stas Bekman wrote:
So back to the compat issue. At the moment lib/Apache/compat.pm has:
sub server_root_relative { my $class = shift; File::Spec->catfile(Apache::ServerUtil::server_root, @_); }
which doesn't cover that special case. I suppose before doing catfile we need to check whether $_[0] is already absolute, in which case we should not concat server_root in.
So would this patch resolve this open issue ?
it's a good starting point, but it's incomplete.
Index: lib/Apache/compat.pm =================================================================== RCS file: /home/cvs/modperl-2.0/lib/Apache/compat.pm,v retrieving revision 1.114 diff -u -I$Id -r1.114 compat.pm --- lib/Apache/compat.pm 24 Jul 2004 07:27:03 -0000 1.114 +++ lib/Apache/compat.pm 9 Aug 2004 20:57:22 -0000 @@ -249,8 +249,13 @@ package Apache;
sub server_root_relative { - my $class = shift; - File::Spec->catfile(Apache::ServerUtil::server_root, @_); + my ($class, $path, @extra) = @_; + if (File::Spec->file_name_is_absolute($path)) {
$path could be undef. Many times people call just Apache->server_root_relative().
Correct, noted and corrected below
+ return File::Spec->catfile($path, @extra); + }
+ else {
+ File::Spec->catfile(Apache::ServerUtil::server_root, $path, @extra);
+ }
}
and tests :)
Yes, I reqalized I forgot to add them to my post.
Geoff, was it the only thing about server_root_relative specifics, or was there something else?
-- -------------------------------------------------------------------------------- Philippe M. Chiasson m/gozer\@(apache|cpan|ectoplasm)\.org/ GPG KeyID : 88C3A5A5 http://gozer.ectoplasm.org/ F9BF E0C2 480E 7680 1AE5 3631 CB32 A107 88C3A5A5
Index: lib/Apache/compat.pm
===================================================================
RCS file: /home/cvs/modperl-2.0/lib/Apache/compat.pm,v
retrieving revision 1.114
diff -u -I$Id -r1.114 compat.pm
--- lib/Apache/compat.pm 24 Jul 2004 07:27:03 -0000 1.114
+++ lib/Apache/compat.pm 9 Aug 2004 21:10:04 -0000
@@ -249,8 +249,13 @@
package Apache;
sub server_root_relative {
- my $class = shift;
- File::Spec->catfile(Apache::ServerUtil::server_root, @_);
+ my ($class, $path, @extra) = @_;
+ if (defined($path) && File::Spec->file_name_is_absolute($path)) {
+ return File::Spec->catfile($path, @extra);
+ }
+ else {
+ File::Spec->catfile(Apache::ServerUtil::server_root, $path, @extra);
+ }
}
sub exit {
Index: t/response/TestCompat/apache.pm
===================================================================
RCS file: /home/cvs/modperl-2.0/t/response/TestCompat/apache.pm,v
retrieving revision 1.16
diff -u -I$Id -r1.16 apache.pm
--- t/response/TestCompat/apache.pm 16 Jul 2004 01:10:46 -0000 1.16
+++ t/response/TestCompat/apache.pm 9 Aug 2004 21:10:04 -0000
@@ -17,7 +17,7 @@
sub handler {
my $r = shift;
- plan $r, tests => 16;
+ plan $r, tests => 17;
$r->send_http_header('text/plain');
@@ -86,6 +86,10 @@
ok t_filepath_cmp(canonpath(Apache->server_root_relative),
canonpath($server_root),
'Apache->server_root_relative()');
+
+ ok t_filepath_cmp(canonpath(Apache->server_root_relative('/tmp')),
+ canonpath('/tmp'),
+ "Apache->server_root_relative('/tmp')");
}
OK;
signature.asc
Description: OpenPGP digital signature
