openafs/doc/man-pages/merge-pod
Andrew Deason 2045653647 merge-pod: Be more compatible with older perl
merge-pod works fine with perl 5.00503, if we eliminate the 3-argument
invocation of open(). So, replace the open() calls with their
2-argument equivalent, and relax the version requirement a bit.

Change-Id: Ibeda39f2620ab1056e2d42838833d140ec3c053f
Reviewed-on: http://gerrit.openafs.org/3661
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
2011-01-14 22:30:12 -08:00

45 lines
1.6 KiB
Perl
Executable File

#!/usr/bin/perl -w
#
# POD currently doesn't support any sort of =include directive. This
# processor works around that limitation. It takes a list of files ending in
# *.in as its argument and processes any POD directives of the form =include
# <file> in that file, generating a file with the *.in suffix removed. All
# paths are taken to be relative to the directory containing the file being
# processed.
#
# Currently, only single include nesting is supported. The included file is
# not processed for additional =include statements.
require 5.00503;
use Cwd qw(getcwd);
use File::Basename qw(dirname basename);
my $start = getcwd;
for my $file (@ARGV) {
chdir $start or die "cannot chdir to $start: $!\n";
my $dir = dirname ($file);
my $out = $file;
unless ($out =~ s/\.in\z//) {
die "input file $file does not end in .in\n";
}
open (FILE, "< $file") or die "cannot open $file: $!\n";
open (OUT, "> $out") or die "cannot open $out: $!\n";
chdir $dir or die "cannot chdir to $dir: $!\n";
local $/ = '';
local $_;
while (<FILE>) {
if (/^=include\s+(\S+)/) {
open (INCLUDE, "< $1") or die "cannot open $1: $!\n";
local $/;
print OUT <INCLUDE> or die "cannot read/write from $1: $!\n";
close INCLUDE or die "cannot read from $1: $!\n";
print OUT "\n" or die "cannot write to $out: $!\n";
} else {
print OUT $_ or die "cannot write to $out: $!\n";
}
}
close OUT or die "cannot write to $out: $!\n";
close FILE or die "cannot read from $file\n";
}