fixed inclusion of relative paths
authorheiko
Sat, 08 Mar 2014 12:24:44 +0100
changeset 3 8e064c262aa5
parent 2 514fe7b72d65
child 5 bd0f8dc30ae0
child 8 9fe9837ac877
fixed inclusion of relative paths
read-httpd-conf
--- a/read-httpd-conf	Wed Feb 05 12:49:02 2014 +0100
+++ b/read-httpd-conf	Sat Mar 08 12:24:44 2014 +0100
@@ -3,18 +3,18 @@
 use strict;
 use warnings;
 use Carp;
+use File::Basename;
 
 sub read_file {
-    my $file = shift;
+    my ($file, $basedir) = @_;
     open(my $fh, '<', $file)
       or croak "Can't open $file: $!\n";
     say "# 1 $file";
     while (<$fh>) {
         if (/^\s*include\s+(?<quote>["'])?(?<file>.*?)\k<quote>?\s*$/i) {
-
-            #print "#$file:$.:$_";
+            my $file = $+{file} =~ m{^/} ? $+{file} : "$basedir/$+{file}";
             say "# $. $file INCLUDE $+{file}";
-            read_file($_) foreach (glob -d $+{file} ? "$+{file}/*" : $+{file});
+            read_file($_, $basedir) foreach (glob -d $file ? "$file/*" : $file);
             next;
         }
         print;
@@ -23,4 +23,4 @@
 
 die "$0: Need file name (httpd.conf)\n"
   unless @ARGV;
-read_file(shift);
+read_file($ARGV[0], dirname($ARGV[0]));