diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2017-12-13 09:42:08 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2017-12-13 09:44:59 +0200 |
commit | 8bc0f681b3f416f3c3dcbcad6ba2010cbd77f4c6 (patch) | |
tree | 08eb462ff4dd0925f0cfd07467b35b244d1d1639 /lib/Apache/Config/Preproc | |
parent | 9c45310caac8c962d99a316a722d42874385a823 (diff) | |
download | acpp-8bc0f681b3f416f3c3dcbcad6ba2010cbd77f4c6.tar.gz acpp-8bc0f681b3f416f3c3dcbcad6ba2010cbd77f4c6.tar.bz2 |
Bugfixes
* lib/Apache/Config/Preproc/include.pm (new): Select included file
table implementation basing on the OS name.
Fix copy-paste error in NAME section.
* lib/Apache/Config/Preproc/ifdefine.pm: Fix copy-paste error in
NAME section.
* lib/Apache/Config/Preproc.pm: Raise version number.
* Changes: New release.
Diffstat (limited to 'lib/Apache/Config/Preproc')
-rw-r--r-- | lib/Apache/Config/Preproc/ifdefine.pm | 2 | ||||
-rw-r--r-- | lib/Apache/Config/Preproc/include.pm | 21 |
2 files changed, 21 insertions, 2 deletions
diff --git a/lib/Apache/Config/Preproc/ifdefine.pm b/lib/Apache/Config/Preproc/ifdefine.pm index 834d602..5bf3a3f 100644 --- a/lib/Apache/Config/Preproc/ifdefine.pm +++ b/lib/Apache/Config/Preproc/ifdefine.pm @@ -112,13 +112,13 @@ sub expand { 1; __END__ =head1 NAME -Apache::Config::Preproc::ifmodule - expand IfDefine sections +Apache::Config::Preproc::ifdefine - expand IfDefine sections =head1 SYNOPSIS $x = new Apache::Config::Preproc '/path/to/httpd.conf', -expand => [ qw(ifdefine) ]; diff --git a/lib/Apache/Config/Preproc/include.pm b/lib/Apache/Config/Preproc/include.pm index 32b753d..f7c851c 100644 --- a/lib/Apache/Config/Preproc/include.pm +++ b/lib/Apache/Config/Preproc/include.pm @@ -1,21 +1,25 @@ package Apache::Config::Preproc::include; use strict; use warnings; use Apache::Admin::Config; use Apache::Config::Preproc; use File::Spec; +use Cwd 'abs_path'; use Carp; sub new { my $class = shift; my $conf = shift; my $self = bless { included => {}, conf => $conf }, $class; local %_ = @_; $self->{server_root} = delete $_{server_root}; croak "unrecognized arguments" if keys(%_); + $self->{check_included} = $^O eq 'MSWin32' + ? \&_check_included_path + : \&_check_included_stat; return $self; } sub conf { shift->{conf} } sub server_root { @@ -62,25 +66,40 @@ sub expand { return 0; } sub check_included { my ($self, $file) = @_; + return $self->${ \ $self->{check_included} }($file); +} + +# Default included file table for unix-like OSes +sub _check_included_stat { + my ($self, $file) = @_; my ($dev,$ino) = stat($file) or return 0; return 1 if $self->{included}{$dev}{$ino}; $self->{included}{$dev}{$ino} = 1; return 0; } +# Path-bases file table, for defective OSes (MSWin32) +sub _check_included_path { + my ($self, $file) = @_; + my $path = abs_path($file); + return 1 if $self->{included}{$path}; + $self->{included}{$path} = 1; + return 0; +} + 1; __END__ =head1 NAME -Apache::Config::Preproc::ifmodule - expand Include statements +Apache::Config::Preproc::include - expand Include statements =head1 SYNOPSIS $x = new Apache::Config::Preproc '/path/to/httpd.conf', -expand => [ qw(include) ]; |