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