diff options
author | Nicholas Clark <nick@ccl4.org> | 2008-03-17 00:17:26 +0000 |
---|---|---|
committer | Nicholas Clark <nick@ccl4.org> | 2008-03-17 00:17:26 +0000 |
commit | 08858ed21b9a4d448437bdae35df5c42fbe1c8bd (patch) | |
tree | d27bb2954cf830c9866eaa74e228a0a358b0d119 /autodoc.pl | |
parent | 424a4936e3f61f4e8db394f496a116e698cede85 (diff) | |
download | perl-08858ed21b9a4d448437bdae35df5c42fbe1c8bd.tar.gz |
Drag autodoc.pl and overload.pl into the age of safer_open().
Thanks to the wisdom of london.pm, stuff the filename into the SCALAR
slot of the typeglob created in safer_open(), so that ...
Add safer_close(), that will die (with the filename) if the close
fails.
p4raw-id: //depot/perl@33539
Diffstat (limited to 'autodoc.pl')
-rw-r--r-- | autodoc.pl | 44 |
1 files changed, 20 insertions, 24 deletions
diff --git a/autodoc.pl b/autodoc.pl index 5317bc6da1..f97af93acf 100644 --- a/autodoc.pl +++ b/autodoc.pl @@ -33,7 +33,7 @@ sub walk_table (&@) { } else { safer_unlink $filename; - open F, ">$filename" or die "Can't open $filename: $!"; + $F = safer_open($filename); binmode F; $F = \*F; } @@ -183,9 +183,7 @@ for $file (($MANIFEST =~ /^(\S+\.c)\t/gm), ($MANIFEST =~ /^(\S+\.h)\t/gm)) { } safer_unlink "pod/perlapi.pod"; -open (DOC, ">pod/perlapi.pod") or - die "Can't create pod/perlapi.pod: $!\n"; -binmode DOC; +my $doc = safer_open("pod/perlapi.pod"); walk_table { # load documented functions into appropriate hash if (@_ > 1) { @@ -211,7 +209,7 @@ walk_table { # load documented functions into appropriate hash } } return ""; -} \*DOC; +} $doc; for (sort keys %docfuncs) { # Have you used a full for apidoc or just a func name? @@ -219,9 +217,9 @@ for (sort keys %docfuncs) { warn "Unable to place $_!\n"; } -readonly_header(\*DOC); +readonly_header($doc); -print DOC <<'_EOB_'; +print $doc <<'_EOB_'; =head1 NAME perlapi - autogenerated documentation for the perl public API @@ -248,15 +246,15 @@ my $key; # case insensitive sort, with fallback for determinacy for $key (sort { uc($a) cmp uc($b) || $a cmp $b } keys %apidocs) { my $section = $apidocs{$key}; - print DOC "\n=head1 $key\n\n=over 8\n\n"; + print $doc "\n=head1 $key\n\n=over 8\n\n"; # Again, fallback for determinacy for my $key (sort { uc($a) cmp uc($b) || $a cmp $b } keys %$section) { - docout(\*DOC, $key, $section->{$key}); + docout($doc, $key, $section->{$key}); } - print DOC "\n=back\n"; + print $doc "\n=back\n"; } -print DOC <<'_EOE_'; +print $doc <<'_EOE_'; =head1 AUTHORS @@ -278,16 +276,14 @@ perlguts(1), perlxs(1), perlxstut(1), perlintern(1) _EOE_ -readonly_footer(\*DOC); +readonly_footer($doc); -close(DOC) or die "Error closing pod/perlapi.pod: $!"; +safer_close($doc); safer_unlink "pod/perlintern.pod"; -open(GUTS, ">pod/perlintern.pod") or - die "Unable to create pod/perlintern.pod: $!\n"; -binmode GUTS; -readonly_header(\*GUTS); -print GUTS <<'END'; +my $guts = safer_open("pod/perlintern.pod"); +readonly_header($guts); +print $guts <<'END'; =head1 NAME perlintern - autogenerated documentation of purely B<internal> @@ -305,14 +301,14 @@ END for $key (sort { uc($a) cmp uc($b); } keys %gutsdocs) { my $section = $gutsdocs{$key}; - print GUTS "\n=head1 $key\n\n=over 8\n\n"; + print $guts "\n=head1 $key\n\n=over 8\n\n"; for my $key (sort { uc($a) cmp uc($b); } keys %$section) { - docout(\*GUTS, $key, $section->{$key}); + docout($guts, $key, $section->{$key}); } - print GUTS "\n=back\n"; + print $guts "\n=back\n"; } -print GUTS <<'END'; +print $guts <<'END'; =head1 AUTHORS @@ -325,6 +321,6 @@ document their functions. perlguts(1), perlapi(1) END -readonly_footer(\*GUTS); +readonly_footer($guts); -close GUTS or die "Error closing pod/perlintern.pod: $!"; +safer_close($guts); |