summaryrefslogtreecommitdiff
path: root/lib/Apache/Config/Preproc/include.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Apache/Config/Preproc/include.pm')
-rw-r--r--lib/Apache/Config/Preproc/include.pm21
1 files changed, 20 insertions, 1 deletions
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
@@ -4,6 +4,7 @@ use warnings;
use Apache::Admin::Config;
use Apache::Config::Preproc;
use File::Spec;
+use Cwd 'abs_path';
use Carp;
sub new {
@@ -13,6 +14,9 @@ sub new {
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;
}
@@ -65,19 +69,34 @@ sub expand {
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

Return to:

Send suggestions and report system problems to the System administrator.