From d8a3da12be085fbc92e3d4d4d084c328fc37485a Mon Sep 17 00:00:00 2001
From: Willem Toorop <willem@nlnetlabs.nl>
Date: Thu, 27 Nov 2014 16:21:54 +0100
Subject: [PATCH] let doxyparse output manpage generation issues

[Backport from upstream commit
168ee09a4bf184947798c3ee3ac99b6651470d64, fixes the build with Perl
5.22.]
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
---
 doc/doxyparse.pl | 45 ++++++++++++++++++++++++++++++++++++++-------
 1 file changed, 38 insertions(+), 7 deletions(-)

diff --git a/doc/doxyparse.pl b/doc/doxyparse.pl
index 96a1732..a09b2e8 100755
--- a/doc/doxyparse.pl
+++ b/doc/doxyparse.pl
@@ -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);
-- 
2.6.4

