]> git.ipfire.org Git - thirdparty/ldns.git/commitdiff
let doxyparse output manpage generation issues
authorWillem Toorop <willem@nlnetlabs.nl>
Thu, 27 Nov 2014 15:21:54 +0000 (16:21 +0100)
committerWillem Toorop <willem@nlnetlabs.nl>
Thu, 27 Nov 2014 15:21:54 +0000 (16:21 +0100)
doc/doxyparse.pl

index 96a1732f9ed8e5bcfc24c2091fa11364ee454c11..a09b2e8fda643dd41c63ed78fbd3cd978be2c728 100755 (executable)
@@ -57,10 +57,15 @@ This manpage was automaticly generated from the ldns source code by
 use of Doxygen and some perl.
 ";
 
-getopts("m:",\%options);
+getopts("em:",\%options);
 # if -m manpage file is given process that file
 # parse the file which tells us what manpages go together
 my $functions, $see_also;
+my $i = -1;
+my $report_errors = defined $options{'e'};
+my $errors = 0;
+my %unique;
+
 if (defined $options{'m'}) {
        # process
        open(MAN, "<$options{'m'}") or die "Cannot open $options{'m'}";
@@ -68,18 +73,35 @@ if (defined $options{'m'}) {
                # func1, func2, .. | see_also1, see_also2, ...
                while(<MAN>) {
                        chomp;
+                       $i += 1;
                        if (/^#/) { next; }
                        if (/^$/) { next; }
-                       ($functions, $see_also) = split /[\t ]*\|[\t ]*/, $_;
-                       #print "{$functions}\n";
-                       #print "{$see_also}\n";
+                       my @parts = split /[\t ]*\|[\t ]*/, $_;
+                       $functions = shift @parts;
+                       $see_also = join ', ', @parts;
+                       print "{$functions}\n";
+                       print "{$see_also}\n";
                        my @funcs = split /[\t ]*,[\t ]*/, $functions;
                        my @also = split /[\t ]*,[\t ]*/, $see_also;
                        $manpages{$funcs[0]} = \@funcs;
                        $see_also{$funcs[0]} = \@also;
+                       foreach (@funcs) {
+                               if ($unique{$_}) {
+                                       push $unique{$_}, ($i,);
+                               } else {
+                                       $unique{$_} = [$i];
+                               }
+                       }
                        #print "[", $funcs[0], "]\n";
                }
        close(MAN);
+       while (($func, $lines) = each %unique ) {
+               if (scalar @$lines > 1) {
+                       print STDERR "$func in function_manpages on lines: "
+                           . join(", ",@$lines) . "\n" if $report_errors;
+                       $errors += 1;
+               }
+       }
 } else {
        print "Need -m file to process the .h files\n";
        exit 1;
@@ -95,7 +117,7 @@ mkdir "doc/man";
 mkdir "doc/man/man$MAN_SECTION";
 
 $state = 0;
-my $i;
+$i = 0;
 my @lines = <STDIN>;
 my $max = @lines;
 
@@ -273,7 +295,7 @@ foreach (keys %manpages) {
 
        print MAN $MAN_MIDDLE;
 
-       if (defined(@$also)) {
+       if (@$also) {
                print MAN "\n.SH SEE ALSO\n\\fI";
                print MAN join "\\fR, \\fI", @$also;
                print MAN "\\fR.\nAnd ";
@@ -290,7 +312,7 @@ foreach (keys %manpages) {
        # create symlinks
        chdir("$BASE/man$MAN_SECTION");
        foreach (@$name) {
-               print STDERR $_,"\n";
+               print STDOUT $_,"\n";
                my $new_file = $_ . "." . $MAN_SECTION;
                if ($new_file eq $symlink_file) {
                        next;
@@ -301,3 +323,12 @@ foreach (keys %manpages) {
        chdir("../../.."); # and back, tricky and fragile...
        close(MAN);
 }
+foreach (keys %api) {
+       next if (/ / || /^$/);
+       if (not $unique{$_}) {
+               print STDERR "no man page for $_\n" if $report_errors;
+               $errors += 1;
+       }
+}
+
+exit ($report_errors and $errors != 0);