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