You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.2 KiB
64 lines
1.2 KiB
#!/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; |
|
} |
|
|
|
|