12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- #!/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;
- }
|