65 lines
1.2 KiB
Perl
65 lines
1.2 KiB
Perl
|
#!/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;
|
||
|
}
|
||
|
|