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