summaryrefslogtreecommitdiff
path: root/gnu/usr.bin/perl/autodoc.pl
diff options
context:
space:
mode:
authorTodd C. Miller <millert@cvs.openbsd.org>2008-09-29 17:19:07 +0000
committerTodd C. Miller <millert@cvs.openbsd.org>2008-09-29 17:19:07 +0000
commitbfa863c83bfd01d72a748decaaf2676b800c60ff (patch)
tree02491e683928ba1c318d3ebc1200feb7c8bb78b4 /gnu/usr.bin/perl/autodoc.pl
parent37a0443eb842cf3d2c9de0e5647b0094a0dcf0bd (diff)
import perl 5.10.0 from CPAN
Diffstat (limited to 'gnu/usr.bin/perl/autodoc.pl')
-rw-r--r--gnu/usr.bin/perl/autodoc.pl41
1 files changed, 35 insertions, 6 deletions
diff --git a/gnu/usr.bin/perl/autodoc.pl b/gnu/usr.bin/perl/autodoc.pl
index 6a2e28bfe83..5317bc6da1c 100644
--- a/gnu/usr.bin/perl/autodoc.pl
+++ b/gnu/usr.bin/perl/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: $!";