Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 1 | #!/usr/local/bin/perl |
| 2 | # |
| 3 | # This is just a quick script to scan for cases where the 'error' |
| 4 | # function name in a XXXerr() macro is wrong. |
| 5 | # |
| 6 | # Run in the top level by going |
| 7 | # perl util/ck_errf.pl */*.c */*/*.c |
| 8 | # |
| 9 | |
Dr. Stephen Henson | 3ed3603 | 2009-08-12 17:30:37 +0000 | [diff] [blame] | 10 | my $err_strict = 0; |
| 11 | my $bad = 0; |
| 12 | |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 13 | foreach $file (@ARGV) |
| 14 | { |
Dr. Stephen Henson | 3ed3603 | 2009-08-12 17:30:37 +0000 | [diff] [blame] | 15 | if ($file eq "-strict") |
| 16 | { |
| 17 | $err_strict = 1; |
| 18 | next; |
| 19 | } |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 20 | open(IN,"<$file") || die "unable to open $file\n"; |
| 21 | $func=""; |
| 22 | while (<IN>) |
| 23 | { |
Bodo Möller | 8afca8d | 2005-05-11 03:45:39 +0000 | [diff] [blame] | 24 | if (!/;$/ && /^([a-zA-Z].*[\s*])?([A-Za-z_0-9]+)\(.*[),]/) |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 25 | { |
Bodo Möller | 8afca8d | 2005-05-11 03:45:39 +0000 | [diff] [blame] | 26 | /^([^()]*(\([^()]*\)[^()]*)*)\(/; |
| 27 | $1 =~ /([A-Za-z_0-9]*)$/; |
| 28 | $func = $1; |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 29 | $func =~ tr/A-Z/a-z/; |
| 30 | } |
Dr. Stephen Henson | 5c95c2a | 2006-07-17 16:33:31 +0000 | [diff] [blame] | 31 | if (/([A-Z0-9]+)err\(([^,]+)/ && ! /ckerr_ignore/) |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 32 | { |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 33 | $errlib=$1; |
| 34 | $n=$2; |
Bodo Möller | 8afca8d | 2005-05-11 03:45:39 +0000 | [diff] [blame] | 35 | |
| 36 | if ($func eq "") |
Dr. Stephen Henson | 3ed3603 | 2009-08-12 17:30:37 +0000 | [diff] [blame] | 37 | { print "$file:$.:???:$n\n"; $bad = 1; next; } |
Bodo Möller | 8afca8d | 2005-05-11 03:45:39 +0000 | [diff] [blame] | 38 | |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 39 | if ($n !~ /([^_]+)_F_(.+)$/) |
| 40 | { |
| 41 | # print "check -$file:$.:$func:$n\n"; |
| 42 | next; |
| 43 | } |
| 44 | $lib=$1; |
| 45 | $n=$2; |
| 46 | |
| 47 | if ($lib ne $errlib) |
Dr. Stephen Henson | 3ed3603 | 2009-08-12 17:30:37 +0000 | [diff] [blame] | 48 | { print "$file:$.:$func:$n [${errlib}err]\n"; $bad = 1; next; } |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 49 | |
| 50 | $n =~ tr/A-Z/a-z/; |
| 51 | if (($n ne $func) && ($errlib ne "SYS")) |
Dr. Stephen Henson | 3ed3603 | 2009-08-12 17:30:37 +0000 | [diff] [blame] | 52 | { print "$file:$.:$func:$n\n"; $bad = 1; next; } |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 53 | # print "$func:$1\n"; |
| 54 | } |
| 55 | } |
Ralf S. Engelschall | dfeab06 | 1998-12-21 11:00:56 +0000 | [diff] [blame] | 56 | close(IN); |
Ralf S. Engelschall | d02b48c | 1998-12-21 10:52:47 +0000 | [diff] [blame] | 57 | } |
| 58 | |
Dr. Stephen Henson | 3ed3603 | 2009-08-12 17:30:37 +0000 | [diff] [blame] | 59 | if ($bad && $err_strict) |
| 60 | { |
| 61 | print STDERR "FATAL: error discrepancy\n"; |
| 62 | exit 1; |
| 63 | } |
| 64 | |