Home | History | Annotate | Line # | Download | only in util
ck_errf.pl revision 1.1
      1  1.1  christos #!/usr/local/bin/perl
      2  1.1  christos #
      3  1.1  christos # This is just a quick script to scan for cases where the 'error'
      4  1.1  christos # function name in a XXXerr() macro is wrong.
      5  1.1  christos # 
      6  1.1  christos # Run in the top level by going
      7  1.1  christos # perl util/ck_errf.pl */*.c */*/*.c
      8  1.1  christos #
      9  1.1  christos 
     10  1.1  christos foreach $file (@ARGV)
     11  1.1  christos 	{
     12  1.1  christos 	open(IN,"<$file") || die "unable to open $file\n";
     13  1.1  christos 	$func="";
     14  1.1  christos 	while (<IN>)
     15  1.1  christos 		{
     16  1.1  christos 		if (!/;$/ && /^([a-zA-Z].*[\s*])?([A-Za-z_0-9]+)\(.*[),]/)
     17  1.1  christos 			{
     18  1.1  christos 			/^([^()]*(\([^()]*\)[^()]*)*)\(/;
     19  1.1  christos 			$1 =~ /([A-Za-z_0-9]*)$/;
     20  1.1  christos 			$func = $1;
     21  1.1  christos 			$func =~ tr/A-Z/a-z/;
     22  1.1  christos 			}
     23  1.1  christos 		if (/([A-Z0-9]+)err\(([^,]+)/ && ! /ckerr_ignore/)
     24  1.1  christos 			{
     25  1.1  christos 			$errlib=$1;
     26  1.1  christos 			$n=$2;
     27  1.1  christos 
     28  1.1  christos 			if ($func eq "")
     29  1.1  christos 				{ print "$file:$.:???:$n\n"; next; }
     30  1.1  christos 
     31  1.1  christos 			if ($n !~ /([^_]+)_F_(.+)$/)
     32  1.1  christos 				{
     33  1.1  christos 		#		print "check -$file:$.:$func:$n\n";
     34  1.1  christos 				next;
     35  1.1  christos 				}
     36  1.1  christos 			$lib=$1;
     37  1.1  christos 			$n=$2;
     38  1.1  christos 
     39  1.1  christos 			if ($lib ne $errlib)
     40  1.1  christos 				{ print "$file:$.:$func:$n [${errlib}err]\n"; next; }
     41  1.1  christos 
     42  1.1  christos 			$n =~ tr/A-Z/a-z/;
     43  1.1  christos 			if (($n ne $func) && ($errlib ne "SYS"))
     44  1.1  christos 				{ print "$file:$.:$func:$n\n"; next; }
     45  1.1  christos 	#		print "$func:$1\n";
     46  1.1  christos 			}
     47  1.1  christos 		}
     48  1.1  christos 	close(IN);
     49  1.1  christos         }
     50  1.1  christos 
     51