Skip to content

Commit

Permalink
rewrite installhtml's installdir dir scan logic
Browse files Browse the repository at this point in the history
The code so far was riddled with copy-paste and hacks and incurred
redundant effort, including syscalls. Replaced with a skimmable and
parsimonious implementation.
  • Loading branch information
ap authored and Father Chrysostomos committed May 26, 2012
1 parent 8de3880 commit 83c03aa
Showing 1 changed file with 15 additions and 14 deletions.
29 changes: 15 additions & 14 deletions installhtml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

use strict;
use Config; # for config options in the makefile
use File::Spec::Functions qw(rel2abs);
use File::Spec::Functions qw(rel2abs no_upwards);
use Getopt::Long; # for command-line parsing
use Cwd;
use Pod::Html 'anchorify';
Expand Down Expand Up @@ -496,22 +496,23 @@ sub installdir {
opendir(DIR, "$podroot/$dir")
|| die "$0: error opening directory $podroot/$dir: $!\n";

# find the directories to recurse on
@dirlist = map { if ($^O eq 'VMS') {/^(.*)\.dir$/i; "$dir/$1";} else {"$dir/$_";}}
grep(-d "$podroot/$dir/$_" && !/^\.{1,2}/, readdir(DIR)) if $recurse;
rewinddir(DIR);

# find all the .pod files within the directory
@podlist = map { /^(.*)\.pod$/; "$dir/$1" }
grep(! -d "$podroot/$dir/$_" && /\.pod$/, readdir(DIR));
rewinddir(DIR);

# find all the .pm files within the directory
@pmlist = map { /^(.*)\.pm$/; "$dir/$1" }
grep(! -d "$podroot/$dir/$_" && /\.pm$/, readdir(DIR));
while(readdir DIR) {
no_upwards($_) or next;
my $is_dir = -d "$podroot/$dir/$_";
next if $is_dir and not $recurse;
my $target = (
$is_dir ? \@dirlist :
s/\.pod$// ? \@podlist :
s/\.pm$// ? \@pmlist :
undef
);
push @$target, "$dir/$_" if $target;
}

closedir(DIR);

if ($^O eq 'VMS') { s/\.dir$//i for @dirlist }

# recurse on all subdirectories we kept track of
foreach $dir (@dirlist) {
installdir($dir, $recurse, $podroot, $splitdirs, $ignore);
Expand Down

0 comments on commit 83c03aa

Please sign in to comment.