use strict;
use warnings;
+use File::Basename;
# get the file name first
my $symbolsinversions=shift @ARGV;
my @manpages=@ARGV;
my $errors = 0;
+my %docsdirs;
my %optblessed;
my %funcblessed;
my @optorder = (
close($f);
}
+
+my %ref = (
+ 'curl.1' => 1
+ );
+sub checkref {
+ my ($f, $sec, $file, $line)=@_;
+ my $present = 0;
+ #print STDERR "check $f.$sec\n";
+ if($ref{"$f.$sec"}) {
+ # present
+ return;
+ }
+ foreach my $d (keys %docsdirs) {
+ if( -f "$d/$f.$sec") {
+ $present = 1;
+ $ref{"$f.$sec"}=1;
+ last;
+ }
+ }
+ if(!$present) {
+ print STDERR "$file:$line broken reference to $f($sec)\n";
+ $errors++;
+ }
+}
+
sub scanmanpage {
my ($file) = @_;
my $reqex = 0;
my $f = $1;
if($f =~ /^(lib|)curl/i) {
$f =~ s/[\n\r]//g;
- if($f =~ s/([a-z_0-9-]*) \([13]\)([, ]*)//i) {
- push @separators, $2;
+ if($f =~ s/([a-z_0-9-]*) \(([13])\)([, ]*)//i) {
+ push @separators, $3;
push @sepline, $line;
-
+ checkref($1, $2, $file, $line);
}
if($f !~ /^ *$/) {
print STDERR "$file:$line bad SEE ALSO format\n";
$errors++;
}
}
+ my $c = $_;
+ while($c =~ s/\\f([BI])((lib|)curl[a-z_0-9-]*)\(([13])\)//i) {
+ checkref($2, $4, $file, $line);
+ }
+ if(($_ =~ /\\f([BI])((libcurl|CURLOPT_|CURLSHOPT_|CURLINFO_|CURLMOPT_|curl_easy_|curl_multi_|curl_url|curl_mime|curl_global|curl_share)[a-zA-Z_0-9-]+)(.)/) &&
+ ($4 ne "(")) {
+ print STDERR "$file:$line curl ref to $2 without section\n";
+ $errors++;
+ }
if($_ =~ /(.*)\\f([^BIP])/) {
my ($pre, $format) = ($1, $2);
if($pre !~ /\\\z/) {
$errors++;
}
}
+ if(($SH =~ /^(DESCRIPTION|RETURN VALUE|AVAILABILITY)/i) &&
+ ($_ =~ /(.*)((curl_multi|curl_easy|curl_url|curl_global|curl_url|curl_share)[a-zA-Z_0-9-]+)/) &&
+ ($1 !~ /\\fI$/)) {
+ print STDERR "$file:$line unrefed curl call: $2\n";
+ $errors++;
+ }
+
+
if($optpage && $SH && ($SH !~ /^(SYNOPSIS|EXAMPLE|NAME|SEE ALSO)/i) &&
- ($_ =~ /(.*)(CURL(OPT_|MOPT_|INFO_)[A-Z0-9_]*)/)) {
+ ($_ =~ /(.*)(CURL(OPT_|MOPT_|INFO_|SHOPT_)[A-Z0-9_]*)/)) {
# an option with its own man page, check that it is tagged
# for linking
my ($pref, $symbol) = ($1, $2);
print STDERR "$file:$line trailing whitespace\n";
$errors++;
}
- if($_ =~ /\\f([BI])([^\\]*)\\fP/) {
- my $r = $2;
- if($r =~ /^(CURL.*)\(3\)/) {
- my $rr = $1;
- if(!$symbol{$rr}) {
- print STDERR "$file:$line link to non-libcurl option $rr!\n";
- $errors++;
- }
- }
- }
$line++;
}
close($m);
$funcblessed{$s} = $ind++
}
+for my $m (@manpages) {
+ $docsdirs{dirname($m)}++;
+}
+
for my $m (@manpages) {
scanmanpage($m);
}