#!/usr/bin/perl -w
use strict;
-use vars qw(%Found $Quiet %Lengths %MD5s);
+use vars qw(%Found $Quiet);
use File::Spec;
use File::Find;
use FindBin;
# All the things in the master list that happen to be pod filenames
foreach (grep {defined $_ && @$_ == 5 && !$_->[0]{toc_omit}} @{$state->{master}}) {
+ # Only bother registering those files that we know that we copy
+ register_duplicate_pod($_->[2])
+ if $_->[1] ne $_->[4];
$roffitall .= " \$mandir/$_->[4].1 \\\n";
- podset($_->[4], $_->[2], $_->[1] ne $_->[4]);
+ podset($_->[4], $_->[2]);
}
foreach my $type (qw(PRAGMA MODULE)) {
EOPOD2B
foreach my $name (sort keys %{$Found{$type}}) {
- $roffitall .= " \$libdir/$name.3 \\\n"
- if podset($name, $Found{$type}{$name});
+ next if is_duplicate_pod($Found{$type}{$name});
+ $roffitall .= " \$libdir/$name.3 \\\n";
+ podset($name, $Found{$type}{$name});
}
}
# Below are all the auxiliary routines for generating perltoc.pod
+{
+ my (%Lengths, %MD5s);
+
+ sub register_duplicate_pod {
+ my $file = shift;
+ # We are a dual-life perl*.pod file, which will have be copied to lib/
+ # by the build process, and hence also found there.
+ ++$Lengths{-s $file};
+ ++$MD5s{md5(slurp_or_die($file))};
+ }
+
+ sub is_duplicate_pod {
+ my $file = shift;
+ # We are a file in lib. Are we a duplicate?
+ # Don't bother calculating the MD5 if there's no interesting file of
+ # this length.
+ return $Lengths{-s $file} && $MD5s{md5(slurp_or_die($file))};
+ }
+}
+
my ($inhead1, $inhead2, $initem);
sub podset {
- my ($pod, $file, $possibly_duplicated) = @_;
+ my ($pod, $file) = @_;
local $/ = '';
open my $fh, '<', $file or my_die "Can't open file '$file' for $pod: $!";
- if ($possibly_duplicated) {
- # We are a dual-life perl*.pod file, which will have be copied to lib/
- # by the build process, and hence also found there.
- ++$Lengths{-s $file};
- ++$MD5s{md5(slurp_or_die($file))};
- } elsif (!defined $possibly_duplicated) {
- # We are a file in lib. Are we a duplicate?
- # Don't bother calculating the MD5 if there's no intersting file of this
- # length.
- return if $Lengths{-s $file} && $MD5s{md5(slurp_or_die($file))};
- }
while(<$fh>) {
tr/\015//d;
}
$OUT .= $_;
}
- return 1;
}
sub unhead1 {