X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=autodoc.pl;h=5317bc6da1cf60ee9eb89df505b6d2f2035c3925;hb=6ef249b908f1fd6caec1b0140c6be9c66f4eb1f2;hp=6a2e28bfe83b11ba7be03ab6f12376402ec3b7ba;hpb=d8c40edcf7b2eca3075e6c3cd36c64193c41e123;p=p5sagit%2Fp5-mst-13.2.git diff --git a/autodoc.pl b/autodoc.pl index 6a2e28b..5317bc6 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 @@ -65,6 +66,7 @@ sub walk_table (&@) { my %apidocs; my %gutsdocs; my %docfuncs; +my %seenfuncs; my $curheader = "Unknown section"; @@ -143,6 +145,27 @@ removed without notice.\n\n" if $flags =~ /x/; print $fh "=for hackers\nFound in file $file\n\n"; } +sub readonly_header (*) { + my $fh = shift; + print $fh <<"_EOH_"; +-*- buffer-read-only: t -*- + +!!!!!!! DO NOT EDIT THIS FILE !!!!!!! +This file is built by $0 extracting documentation from the C source +files. + +_EOH_ +} + +sub readonly_footer (*) { + my $fh = shift; + print $fh <<'_EOF_'; +=cut + + ex: set ro: +_EOF_ +} + my $file; # glob() picks up docs from extra .c or .h files that may be in unclean # development trees. @@ -164,26 +187,27 @@ open (DOC, ">pod/perlapi.pod") or die "Can't create pod/perlapi.pod: $!\n"; binmode DOC; -walk_table { # load documented functions into approriate hash +walk_table { # load documented functions into appropriate hash if (@_ > 1) { my($flags, $retval, $func, @args) = @_; return "" unless $flags =~ /d/; $func =~ s/\t//g; $flags =~ s/p//; # clean up fields from embed.pl $retval =~ s/\t//; my $docref = delete $docfuncs{$func}; + $seenfuncs{$func} = 1; if ($docref and @$docref) { if ($flags =~ /A/) { $docref->[0].="x" if $flags =~ /M/; - $apidocs{$docref->[4]}{$func} = - [$docref->[0] . 'A', $docref->[1], $retval, - $docref->[3], @args]; + $apidocs{$docref->[4]}{$func} = + [$docref->[0] . 'A', $docref->[1], $retval, $docref->[3], + @args]; } else { - $gutsdocs{$docref->[4]}{$func} = + $gutsdocs{$docref->[4]}{$func} = [$docref->[0], $docref->[1], $retval, $docref->[3], @args]; } } else { - warn "no docs for $func\n" unless $docref and @$docref; + warn "no docs for $func\n" unless $seenfuncs{$func}; } } return ""; @@ -195,6 +219,8 @@ for (sort keys %docfuncs) { warn "Unable to place $_!\n"; } +readonly_header(\*DOC); + print DOC <<'_EOB_'; =head1 NAME @@ -252,6 +278,7 @@ perlguts(1), perlxs(1), perlxstut(1), perlintern(1) _EOE_ +readonly_footer(\*DOC); close(DOC) or die "Error closing pod/perlapi.pod: $!"; @@ -259,6 +286,7 @@ 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'; =head1 NAME @@ -297,5 +325,6 @@ document their functions. perlguts(1), perlapi(1) END +readonly_footer(\*GUTS); close GUTS or die "Error closing pod/perlintern.pod: $!";