| #!/usr/local/bin/perl | |
| # | |
| # This is just a quick script to scan for cases where the 'error' | |
| # function name in a XXXerr() macro is wrong. | |
| # | |
| # Run in the top level by going | |
| # perl util/ck_errf.pl */*.c */*/*.c | |
| # | |
| my $err_strict = 0; | |
| my $bad = 0; | |
| foreach $file (@ARGV) | |
| { | |
| if ($file eq "-strict") | |
| { | |
| $err_strict = 1; | |
| next; | |
| } | |
| open(IN,"<$file") || die "unable to open $file\n"; | |
| $func=""; | |
| while (<IN>) | |
| { | |
| if (!/;$/ && /^\**([a-zA-Z_].*[\s*])?([A-Za-z_0-9]+)\(.*([),]|$)/) | |
| { | |
| /^([^()]*(\([^()]*\)[^()]*)*)\(/; | |
| $1 =~ /([A-Za-z_0-9]*)$/; | |
| $func = $1; | |
| $func =~ tr/A-Z/a-z/; | |
| } | |
| if (/([A-Z0-9]+)err\(([^,]+)/ && ! /ckerr_ignore/) | |
| { | |
| $errlib=$1; | |
| $n=$2; | |
| if ($func eq "") | |
| { print "$file:$.:???:$n\n"; $bad = 1; next; } | |
| if ($n !~ /([^_]+)_F_(.+)$/) | |
| { | |
| # print "check -$file:$.:$func:$n\n"; | |
| next; | |
| } | |
| $lib=$1; | |
| $n=$2; | |
| if ($lib ne $errlib) | |
| { print "$file:$.:$func:$n [${errlib}err]\n"; $bad = 1; next; } | |
| $n =~ tr/A-Z/a-z/; | |
| if (($n ne $func) && ($errlib ne "SYS")) | |
| { print "$file:$.:$func:$n\n"; $bad = 1; next; } | |
| # print "$func:$1\n"; | |
| } | |
| } | |
| close(IN); | |
| } | |
| if ($bad && $err_strict) | |
| { | |
| print STDERR "FATAL: error discrepancy\n"; | |
| exit 1; | |
| } | |