develooper Front page | perl.perl5.changes | Postings from May 2012

[perl.git] branch blead, updated. v5.17.0-8-g83c03aa

From:
Father Chrysostomos
Date:
May 26, 2012 11:50
Subject:
[perl.git] branch blead, updated. v5.17.0-8-g83c03aa
Message ID:
E1SYM4M-0006C5-JG@camel.ams6.corp.booking.com
In perl.git, the branch blead has been updated

<http://perl5.git.perl.org/perl.git/commitdiff/83c03aa3e02c6caf08cbd40cd0ac1f82ce181d81?hp=1e2715d22e66475ff329a94f2876e71a68005a1b>

- Log -----------------------------------------------------------------
commit 83c03aa3e02c6caf08cbd40cd0ac1f82ce181d81
Author: Aristotle Pagaltzis <pagaltzis@gmx.de>
Date:   Tue May 15 18:59:33 2012 +0200

    rewrite installhtml's installdir dir scan logic
    
    The code so far was riddled with copy-paste and hacks and incurred
    redundant effort, including syscalls. Replaced with a skimmable and
    parsimonious implementation.

M	installhtml

commit 8de3880f558aa119a83ded6d8ccaaba20d587030
Author: Aristotle Pagaltzis <pagaltzis@gmx.de>
Date:   Wed May 16 04:47:29 2012 +0200

    turn some quasi-declarations into real inline ones

M	installhtml

commit b1124ff0a4329772bd7fea18b2433d6fa39caa3d
Author: Aristotle Pagaltzis <pagaltzis@gmx.de>
Date:   Tue May 15 18:59:31 2012 +0200

    switch installhtml from File::Spec to ::Functions
    
    The plan in the next commits is to use C<no_upwards> from File:::Spec to
    be explicit about intent -- imported using File::Spec::Function to avoid
    the ugly File::Spec class method calling convention. This patch would be
    frivolous otherwise, but given the occasion we might as well make things
    consistent.

M	installhtml
-----------------------------------------------------------------------

Summary of changes:
 installhtml |   42 +++++++++++++++++++++---------------------
 1 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/installhtml b/installhtml
index 6375ced..75d6adc 100644
--- a/installhtml
+++ b/installhtml
@@ -4,7 +4,7 @@
 
 use strict;
 use Config;		# for config options in the makefile
-use File::Spec;
+use File::Spec::Functions qw(rel2abs no_upwards);
 use Getopt::Long;	# for command-line parsing
 use Cwd;
 use Pod::Html 'anchorify';
@@ -362,8 +362,8 @@ sub split_on_item {
 
     print "splitting files by item.\n" if $verbose && $#splititem >= 0;
     $pwd = getcwd();
-    my $splitter = File::Spec->rel2abs("$splitpod/splitpod", $pwd);
-    my $perl = File::Spec->rel2abs($^X, $pwd);
+    my $splitter = rel2abs("$splitpod/splitpod", $pwd);
+    my $perl = rel2abs($^X, $pwd);
     foreach my $pod (@splititem) {
 	# figure out the directory to split into
 	$pod      =~ s,^([^/]*)$,/$1,;
@@ -485,34 +485,34 @@ sub splitpod {
 #
 sub installdir {
     my($dir, $recurse, $podroot, $splitdirs, $ignore) = @_;
-    my(@dirlist, @podlist, @pmlist, $doindex);
 
-    @dirlist = ();	# directories to recurse on
-    @podlist = ();	# .pod files to install
-    @pmlist  = ();	# .pm files to install
+    my @dirlist; # directories to recurse on
+    my @podlist; # .pod files to install
+    my @pmlist;  # .pm files to install
 
     # should files in this directory get an index?
-    $doindex = (grep($_ eq "$podroot/$dir", @$splitdirs) ? 0 : 1);
+    my $doindex = (grep($_ eq "$podroot/$dir", @$splitdirs) ? 0 : 1);
 
     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);

--
Perl5 Master Repository



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About