ck_errf.pl revision 280304
155714Skris#!/usr/local/bin/perl 255714Skris# 355714Skris# This is just a quick script to scan for cases where the 'error' 455714Skris# function name in a XXXerr() macro is wrong. 555714Skris# 655714Skris# Run in the top level by going 755714Skris# perl util/ck_errf.pl */*.c */*/*.c 855714Skris# 955714Skris 10238405Sjkimmy $err_strict = 0; 11238405Sjkimmy $bad = 0; 12238405Sjkim 1355714Skrisforeach $file (@ARGV) 1455714Skris { 15238405Sjkim if ($file eq "-strict") 16238405Sjkim { 17238405Sjkim $err_strict = 1; 18238405Sjkim next; 19238405Sjkim } 2055714Skris open(IN,"<$file") || die "unable to open $file\n"; 2155714Skris $func=""; 2255714Skris while (<IN>) 2355714Skris { 24280304Sjkim if (!/;$/ && /^\**([a-zA-Z].*[\s*])?([A-Za-z_0-9]+)\(.*([),]|$)/) 2555714Skris { 26160814Ssimon /^([^()]*(\([^()]*\)[^()]*)*)\(/; 27160814Ssimon $1 =~ /([A-Za-z_0-9]*)$/; 28160814Ssimon $func = $1; 2955714Skris $func =~ tr/A-Z/a-z/; 3055714Skris } 31238405Sjkim if (/([A-Z0-9]+)err\(([^,]+)/ && ! /ckerr_ignore/) 3255714Skris { 3355714Skris $errlib=$1; 3455714Skris $n=$2; 35160814Ssimon 36160814Ssimon if ($func eq "") 37238405Sjkim { print "$file:$.:???:$n\n"; $bad = 1; next; } 38160814Ssimon 3955714Skris if ($n !~ /([^_]+)_F_(.+)$/) 4055714Skris { 4155714Skris # print "check -$file:$.:$func:$n\n"; 4255714Skris next; 4355714Skris } 4455714Skris $lib=$1; 4555714Skris $n=$2; 4655714Skris 4755714Skris if ($lib ne $errlib) 48238405Sjkim { print "$file:$.:$func:$n [${errlib}err]\n"; $bad = 1; next; } 4955714Skris 5055714Skris $n =~ tr/A-Z/a-z/; 5155714Skris if (($n ne $func) && ($errlib ne "SYS")) 52238405Sjkim { print "$file:$.:$func:$n\n"; $bad = 1; next; } 5355714Skris # print "$func:$1\n"; 5455714Skris } 5555714Skris } 5655714Skris close(IN); 5755714Skris } 5855714Skris 59238405Sjkimif ($bad && $err_strict) 60238405Sjkim { 61238405Sjkim print STDERR "FATAL: error discrepancy\n"; 62238405Sjkim exit 1; 63238405Sjkim } 64238405Sjkim 65