]> git.donarmstrong.com Git - debhelper.git/blobdiff - Debian/Debhelper/Dh_Lib.pm
executable config files. bleh, argh
[debhelper.git] / Debian / Debhelper / Dh_Lib.pm
index 60f13c30517664265b6b8b540b9bb8f0013381c1..a86688a2d6a3a80bf4075da8647a3c9817526fe6 100644 (file)
@@ -613,12 +613,21 @@ sub filedoublearray {
        my $file=shift;
        my $globdir=shift;
 
+       my $x=-x $file;
+       if ($x) {
+               require Cwd;
+               my $cmd=Cwd::abs_path($file);
+               open (DH_FARRAY_IN, "$cmd |") || error("cannot run $file: $!");
+       }
+       else {
+               open (DH_FARRAY_IN, $file) || error("cannot read $file: $!");
+       }
+
        my @ret;
-       open (DH_FARRAY_IN, $file) || error("cannot read $file: $!");
        while (<DH_FARRAY_IN>) {
                chomp;
                # Only ignore comments and empty lines in v5 mode.
-               if (! compat(4)) {
+               if (! compat(4) && ! $x)  {
                        next if /^#/ || /^$/;
                }
                my @line;
@@ -627,7 +636,7 @@ sub filedoublearray {
                # The tricky bit is that the glob expansion is done
                # as if we were in the specified directory, so the
                # filenames that come out are relative to it.
-               if (defined $globdir && ! compat(2)) {
+               if (defined $globdir && ! compat(2) && ! $x) {
                        foreach (map { glob "$globdir/$_" } split) {
                                s#^$globdir/##;
                                push @line, $_;
@@ -638,7 +647,8 @@ sub filedoublearray {
                }
                push @ret, [@line];
        }
-       close DH_FARRAY_IN;
+
+       close DH_FARRAY_IN || error("problem reading $file: $!");
        
        return @ret;
 }