util/find-doc-nits: fixups

- Treat .pod.in files as well, and parse out the base name for those
  too.
- Correct the detection of the description part in the NAME section
  (the separating dash MUST be preceeded with a space)
- Allow slahes in names of the NAME section (convert them to dashes
  for file name comparison).  This allows manual pages for some of our
  header files, such as openssl/core.h.
- Properly detect repeated names in the NAME section.

Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/9407)
This commit is contained in:
Richard Levitte 2019-07-18 09:03:18 +02:00
parent 76ca35e724
commit f6800e37b7

View File

@ -79,8 +79,7 @@ sub name_synopsis()
print "$id missing comma in NAME\n" if $tmp =~ /[^,] /; print "$id missing comma in NAME\n" if $tmp =~ /[^,] /;
my $dirname = dirname($filename); my $dirname = dirname($filename);
my $simplename = basename($filename); my $simplename = basename(basename($filename, ".in"), ".pod");
$simplename =~ s/.pod$//;
my $foundfilename = 0; my $foundfilename = 0;
my %foundfilenames = (); my %foundfilenames = ();
my %names; my %names;
@ -92,9 +91,10 @@ sub name_synopsis()
$names{$n} = 1; $names{$n} = 1;
$foundfilename++ if $n eq $simplename; $foundfilename++ if $n eq $simplename;
$foundfilenames{$n} = 1 $foundfilenames{$n} = 1
if -f "$dirname/$n.pod" && $n ne $simplename; if ((-f "$dirname/$n.pod.in" || -f "$dirname/$n.pod")
&& $n ne $simplename);
} }
print "$id the following exist as other .pod files:\n", print "$id the following exist as other .pod or .pod.in files:\n",
join(" ", sort keys %foundfilenames), "\n" join(" ", sort keys %foundfilenames), "\n"
if %foundfilenames; if %foundfilenames;
print "$id $simplename (filename) missing from NAME section\n" print "$id $simplename (filename) missing from NAME section\n"
@ -283,7 +283,7 @@ sub getdocced
my $dir = shift; my $dir = shift;
my %return; my %return;
foreach my $pod ( glob("$dir/*.pod") ) { foreach my $pod ( glob("$dir/*.pod"), glob("$dir/*.pod.in") ) {
my %podinfo = extract_pod_info($pod); my %podinfo = extract_pod_info($pod);
foreach my $n ( @{$podinfo{names}} ) { foreach my $n ( @{$podinfo{names}} ) {
$return{$n} = $pod; $return{$n} = $pod;
@ -394,7 +394,7 @@ sub collectnames {
my $filename = shift; my $filename = shift;
$filename =~ m|man(\d)/|; $filename =~ m|man(\d)/|;
my $section = $1; my $section = $1;
my $simplename = basename($filename, ".pod"); my $simplename = basename(basename($filename, ".in"), ".pod");
my $id = "${filename}:1:"; my $id = "${filename}:1:";
my $contents = ''; my $contents = '';
@ -414,7 +414,10 @@ sub collectnames {
$tmp =~ tr/\n/ /; $tmp =~ tr/\n/ /;
$tmp =~ s/ -.*//g; $tmp =~ s/ -.*//g;
my @names = map { s/^\s+//g; s/\s+$//g; $_ } split(/,/, $tmp); my @names =
map { s|/|-|g; $_ } # Treat slash as dash
map { s/^\s+//g; s/\s+$//g; $_ } # Trim prefix and suffix blanks
split(/,/, $tmp);
unless (grep { $simplename eq $_ } @names) { unless (grep { $simplename eq $_ } @names) {
print "$id missing $simplename\n"; print "$id missing $simplename\n";
push @names, $simplename; push @names, $simplename;
@ -427,8 +430,10 @@ sub collectnames {
my $name_sec = "$name($section)"; my $name_sec = "$name($section)";
if (! exists $name_collection{$name_sec}) { if (! exists $name_collection{$name_sec}) {
$name_collection{$name_sec} = $filename; $name_collection{$name_sec} = $filename;
} else { #elsif ($filename ne $name_collection{$name_sec}) { } elsif ($filename eq $name_collection{$name_sec}) {
print "$id $name_sec also in $name_collection{$name_sec}\n"; print "$id $name_sec repeated in NAME section of $name_collection{$name_sec}\n"
} else {
print "$id $name_sec also in NAME section of $name_collection{$name_sec}\n";
} }
} }
@ -600,7 +605,7 @@ if ( $opt_c ) {
} }
if ( $opt_l ) { if ( $opt_l ) {
foreach (@ARGV ? @ARGV : (glob('doc/*/*.pod'), foreach (@ARGV ? @ARGV : (glob('doc/*/*.pod'), glob('doc/*/*.pod.in'),
glob('doc/internal/*/*.pod'))) { glob('doc/internal/*/*.pod'))) {
collectnames($_); collectnames($_);
} }
@ -609,7 +614,7 @@ if ( $opt_l ) {
if ( $opt_n ) { if ( $opt_n ) {
&publicize() if $opt_p; &publicize() if $opt_p;
foreach (@ARGV ? @ARGV : glob('doc/*/*.pod')) { foreach (@ARGV ? @ARGV : (glob('doc/*/*.pod'), glob('doc/*/*.pod.in'))) {
&check($_); &check($_);
} }
{ {