diff options
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 @@ -117,3 +117,3 @@ __END__ -Apache::Config::Preproc::ifmodule - expand IfDefine sections +Apache::Config::Preproc::ifdefine - expand IfDefine sections 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 @@ -6,2 +6,3 @@ use Apache::Config::Preproc; use File::Spec; +use Cwd 'abs_path'; use Carp; @@ -15,2 +16,5 @@ sub new { croak "unrecognized arguments" if keys(%_); + $self->{check_included} = $^O eq 'MSWin32' + ? \&_check_included_path + : \&_check_included_stat; return $self; @@ -67,2 +71,8 @@ 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; @@ -73,2 +83,11 @@ sub check_included { +# 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; @@ -79,3 +98,3 @@ __END__ -Apache::Config::Preproc::ifmodule - expand Include statements +Apache::Config::Preproc::include - expand Include statements |