X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=autodoc.pl;h=25fabf0ca48ef64bbca6138176c85e6d9082511d;hb=049aabcba31f7c58d7cadff7bb84dd748ced2750;hp=7748e2aadf0ac77fa222808ab4ad065451c357d0;hpb=e04926433bb6070f25203e63e55060257391035c;p=p5sagit%2Fp5-mst-13.2.git diff --git a/autodoc.pl b/autodoc.pl index 7748e2a..25fabf0 100644 --- a/autodoc.pl +++ b/autodoc.pl @@ -8,6 +8,7 @@ BEGIN { require 'regen_lib.pl'; } +use strict; # # See database of global and static function prototypes in embed.fnc @@ -32,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; } @@ -161,7 +162,7 @@ sub readonly_footer (*) { print $fh <<'_EOF_'; =cut -ex: set ro: + ex: set ro: _EOF_ } @@ -182,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) { @@ -210,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? @@ -218,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 @@ -239,7 +238,30 @@ Note that all Perl API global variables must be referenced with the C prefix. Some macros are provided for compatibility with the older, unadorned names, but this support may be disabled in a future release. -The listing is alphabetical, case insensitive. +Perl was originally written to handle US-ASCII only (that is characters +whose ordinal numbers are in the range 0 - 127). +And documentation and comments may still use the term ASCII, when +sometimes in fact the entire range from 0 - 255 is meant. + +Note that Perl can be compiled and run under EBCDIC (See L) +or ASCII. Most of the documentation (and even comments in the code) +ignore the EBCDIC possibility. +For almost all purposes the differences are transparent. +As an example, under EBCDIC, +instead of UTF-8, UTF-EBCDIC is used to encode Unicode strings, and so +whenever this documentation refers to C +(and variants of that name, including in function names), +it also (essentially transparently) means C. +But the ordinals of characters differ between ASCII, EBCDIC, and +the UTF- encodings, and a string encoded in UTF-EBCDIC may occupy more bytes +than in UTF-8. + +Also, on some EBCDIC machines, functions that are documented as operating on +US-ASCII (or Basic Latin in Unicode terminology) may in fact operate on all +256 characters in the EBCDIC range, not just the subset corresponding to +US-ASCII. + +The listing below is alphabetical, case insensitive. _EOB_ @@ -247,15 +269,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 @@ -277,16 +299,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 @@ -304,14 +324,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 @@ -324,6 +344,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);