This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Refactor autodoc.pl to use regen_lib.pl to generate file headers & footers.
authorNicholas Clark <nick@ccl4.org>
Sun, 8 Apr 2012 17:44:11 +0000 (19:44 +0200)
committerNicholas Clark <nick@ccl4.org>
Thu, 23 May 2013 12:32:40 +0000 (14:32 +0200)
This reduces duplication of code that generates '-*- buffer-read-only: t -*-',
'ex: set ro:' etc.

Makefile.SH
autodoc.pl

index 7502235..a18dff0 100755 (executable)
@@ -1076,7 +1076,8 @@ pod/perltoc.pod: $(perltoc_pod_prereqs)  $(PERL_EXE) $(ext) pod/buildtoc
 
 pod/perlapi.pod: pod/perlintern.pod
 
-pod/perlintern.pod: $(MINIPERL_EXE) autodoc.pl embed.fnc
+# Depending on $(nonxs_ext) gets us Text::Wrap built
+pod/perlintern.pod: $(MINIPERL_EXE) autodoc.pl embed.fnc $(nonxs_ext)
        $(MINIPERL) autodoc.pl
 
 pod/perlmodlib.pod: $(MINIPERL_EXE) pod/perlmodlib.PL MANIFEST
index e000d5a..f727a21 100644 (file)
 
 use strict;
 
+if (@ARGV) {
+    my $workdir = shift;
+    chdir $workdir
+        or die "Couldn't chdir to '$workdir': $!";
+}
+require 'regen/regen_lib.pl';
+
 #
 # See database of global and static function prototypes in embed.fnc
 # This is used to generate prototype headers under various configurations,
@@ -244,17 +251,11 @@ removed without notice.\n\n$docs" if $flags =~ /x/;
 
 sub output {
     my ($podname, $header, $dochash, $missing, $footer) = @_;
-    my $filename = "pod/$podname.pod";
-    open my $fh, '>', $filename or die "Can't open $filename: $!";
-
-    print $fh <<"_EOH_", $header;
--*- buffer-read-only: t -*-
-
-!!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
-This file is built by $0 extracting documentation from the C source
-files.
+    my $fh = open_new("pod/$podname.pod", undef,
+                     {by => "$0 extracting documentation",
+                      from => 'the C source files'});
 
-_EOH_
+    print $fh $header;
 
     my $key;
     # case insensitive sort, with fallback for determinacy
@@ -306,20 +307,9 @@ _EOB_
     }
     print $fh "=back\n\n";
 }
+    print $fh $footer, "=cut\n";
 
-print $fh $footer, <<'_EOF_';
-=cut
-
- ex: set ro:
-_EOF_
-
-    close $fh or die "Can't close $filename: $!";
-}
-
-if (@ARGV) {
-    my $workdir = shift;
-    chdir $workdir
-        or die "Couldn't chdir to '$workdir': $!";
+    read_only_bottom_close_and_rename($fh);
 }
 
 open IN, "embed.fnc" or die $!;