xref: /minix3/crypto/external/bsd/openssl/dist/util/ck_errf.pl (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1ebfedea0SLionel Sambuc#!/usr/local/bin/perl
2ebfedea0SLionel Sambuc#
3ebfedea0SLionel Sambuc# This is just a quick script to scan for cases where the 'error'
4ebfedea0SLionel Sambuc# function name in a XXXerr() macro is wrong.
5ebfedea0SLionel Sambuc#
6ebfedea0SLionel Sambuc# Run in the top level by going
7ebfedea0SLionel Sambuc# perl util/ck_errf.pl */*.c */*/*.c
8ebfedea0SLionel Sambuc#
9ebfedea0SLionel Sambuc
10ebfedea0SLionel Sambucmy $err_strict = 0;
11ebfedea0SLionel Sambucmy $bad = 0;
12ebfedea0SLionel Sambuc
13ebfedea0SLionel Sambucforeach $file (@ARGV)
14ebfedea0SLionel Sambuc	{
15ebfedea0SLionel Sambuc	if ($file eq "-strict")
16ebfedea0SLionel Sambuc		{
17ebfedea0SLionel Sambuc		$err_strict = 1;
18ebfedea0SLionel Sambuc		next;
19ebfedea0SLionel Sambuc		}
20ebfedea0SLionel Sambuc	open(IN,"<$file") || die "unable to open $file\n";
21ebfedea0SLionel Sambuc	$func="";
22ebfedea0SLionel Sambuc	while (<IN>)
23ebfedea0SLionel Sambuc		{
24*0a6a1f1dSLionel Sambuc		if (!/;$/ && /^\**([a-zA-Z].*[\s*])?([A-Za-z_0-9]+)\(.*([),]|$)/)
25ebfedea0SLionel Sambuc			{
26ebfedea0SLionel Sambuc			/^([^()]*(\([^()]*\)[^()]*)*)\(/;
27ebfedea0SLionel Sambuc			$1 =~ /([A-Za-z_0-9]*)$/;
28ebfedea0SLionel Sambuc			$func = $1;
29ebfedea0SLionel Sambuc			$func =~ tr/A-Z/a-z/;
30ebfedea0SLionel Sambuc			}
31ebfedea0SLionel Sambuc		if (/([A-Z0-9]+)err\(([^,]+)/ && ! /ckerr_ignore/)
32ebfedea0SLionel Sambuc			{
33ebfedea0SLionel Sambuc			$errlib=$1;
34ebfedea0SLionel Sambuc			$n=$2;
35ebfedea0SLionel Sambuc
36ebfedea0SLionel Sambuc			if ($func eq "")
37ebfedea0SLionel Sambuc				{ print "$file:$.:???:$n\n"; $bad = 1; next; }
38ebfedea0SLionel Sambuc
39ebfedea0SLionel Sambuc			if ($n !~ /([^_]+)_F_(.+)$/)
40ebfedea0SLionel Sambuc				{
41ebfedea0SLionel Sambuc		#		print "check -$file:$.:$func:$n\n";
42ebfedea0SLionel Sambuc				next;
43ebfedea0SLionel Sambuc				}
44ebfedea0SLionel Sambuc			$lib=$1;
45ebfedea0SLionel Sambuc			$n=$2;
46ebfedea0SLionel Sambuc
47ebfedea0SLionel Sambuc			if ($lib ne $errlib)
48ebfedea0SLionel Sambuc				{ print "$file:$.:$func:$n [${errlib}err]\n"; $bad = 1; next; }
49ebfedea0SLionel Sambuc
50ebfedea0SLionel Sambuc			$n =~ tr/A-Z/a-z/;
51ebfedea0SLionel Sambuc			if (($n ne $func) && ($errlib ne "SYS"))
52ebfedea0SLionel Sambuc				{ print "$file:$.:$func:$n\n"; $bad = 1; next; }
53ebfedea0SLionel Sambuc	#		print "$func:$1\n";
54ebfedea0SLionel Sambuc			}
55ebfedea0SLionel Sambuc		}
56ebfedea0SLionel Sambuc	close(IN);
57ebfedea0SLionel Sambuc        }
58ebfedea0SLionel Sambuc
59ebfedea0SLionel Sambucif ($bad && $err_strict)
60ebfedea0SLionel Sambuc	{
61ebfedea0SLionel Sambuc	print STDERR "FATAL: error discrepancy\n";
62ebfedea0SLionel Sambuc	exit 1;
63ebfedea0SLionel Sambuc	}
64ebfedea0SLionel Sambuc
65