1#!/usr/bin/perl -w
2
3
4if ($ARGV[0]) {$funcfile = $ARGV[0]}
5else {$funcfile = "efunc.out"}
6if ($ARGV[1]) {$datafile = $ARGV[1]}
7else {$datafile = "edata.out"}
8
9open (FUNC, $funcfile) || die "Cannot open $funcfile";
10open (DATA, $datafile) || die "Cannot open $datafile";
11%efunc = ();
12%edata = ();
13%efuncdoc = ();
14%edatadoc = ();
15
16$dtot=0;
17$ftot=0;
18
19while (<FUNC>) {
20    if (($ctype, $cdata, $cfunc, $cmod, $clib, $cdesc) =
21	/^category +(\S+) +[\[]([^\]]+)\] +(\S+) +(\S+) +(\S+) +: +(.*)/) {
22	$ftot++;
23	$efunc{"$cdata\_$cfunc"} = $ctype;
24	$efuncdoc{"$cdata\_$cfunc"} = $cdesc;
25	$efuncsrc{"$cdata\_$cfunc"} = $cmod;
26###	print "efunc $cdata\_$cfunc '$ctype'\n";
27    }
28}
29
30
31while (<DATA>) {
32    if (($ctype, $cdata, $cfunc, $cmod, $clib, $cdesc) =
33	/^category +(\S+) +[\[]([^\]]+)\] +(\S+) +(\S+) +(\S+) +: +(.*)/) {
34	$dtot++;
35	$edata{"$cdata\_$cfunc"} = $ctype;
36	$edatadoc{"$cdata\_$cfunc"} = $cdesc;
37###	print "edata $cdata\_$cfunc '$ctype'\n";
38	if (!defined($efunc{"$cdata\_$cfunc"})) {
39	    print "\n";
40	    print "$clib/$cmod $cdata bad category $ctype $cfunc (undefined)\n";
41	    $outstr = "Expected:\n** \@category $ctype [$cdata] $cdesc\n";
42	    $outstr =~ s/^([^\n]{65,75}) ([^ \n]{3})/$1\n**                $2/om;
43	    $outstr =~ s/[\n]([^\n]{65,75}) ([^ \n]{3})/\n$1\n**                $2/om;
44	    $outstr =~ s/[\n]([^\n]{65,75}) ([^ \n]{3})/\n$1\n**                $2/om;
45	    $outstr =~ s/[\n]([^\n]{65,75}) ([^ \n]{3})/\n$1\n**                $2/om;
46	    $outstr =~ s/[\n]([^\n]{65,75}) ([^ \n]{3})/\n$1\n**                $2/om;
47	    $outstr =~ s/[\n][*][*] +([^\n]{1,10})\n/ $1\n/gom;
48	    print $outstr;
49	}
50	elsif ($efunc{"$cdata\_$cfunc"} ne $ctype) {
51	    $etype = $efunc{"$cdata\_$cfunc"};
52	    $esrc = $efuncsrc{"$cdata\_$cfunc"};
53	    print "\n";
54	    print "$clib/$cmod $cdata $cfunc bad category type $ctype defined as $etype in $esrc\n"
55	}
56	elsif ($efuncdoc{"$cdata\_$cfunc"} ne $cdesc) {
57	    $edesc = $efuncdoc{"$cdata\_$cfunc"};
58	    $esrc = $efuncsrc{"$cdata\_$cfunc"};
59	    print "\n";
60	    print "$clib/$cmod $cdata $cfunc bad category type $ctype described as '$cdesc' not '$edesc' in $esrc\n"
61	}
62    }
63}
64
65print "\nTested $dtot data and $ftot functions\n"
66
67
68