2016-04-20 10:10:43 +08:00
|
|
|
#! /usr/bin/env perl
|
|
|
|
# Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
|
1998-12-21 18:52:47 +08:00
|
|
|
#
|
2016-04-20 10:10:43 +08:00
|
|
|
# Licensed under the OpenSSL license (the "License"). You may not use
|
|
|
|
# this file except in compliance with the License. You can obtain a copy
|
|
|
|
# in the file LICENSE in the source distribution or at
|
|
|
|
# https://www.openssl.org/source/license.html
|
|
|
|
|
1998-12-21 18:52:47 +08:00
|
|
|
# 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
|
|
|
|
#
|
|
|
|
|
2009-08-13 01:30:37 +08:00
|
|
|
my $err_strict = 0;
|
|
|
|
my $bad = 0;
|
|
|
|
|
1998-12-21 18:52:47 +08:00
|
|
|
foreach $file (@ARGV)
|
|
|
|
{
|
2009-08-13 01:30:37 +08:00
|
|
|
if ($file eq "-strict")
|
|
|
|
{
|
|
|
|
$err_strict = 1;
|
|
|
|
next;
|
|
|
|
}
|
1998-12-21 18:52:47 +08:00
|
|
|
open(IN,"<$file") || die "unable to open $file\n";
|
|
|
|
$func="";
|
|
|
|
while (<IN>)
|
|
|
|
{
|
2015-04-28 20:34:58 +08:00
|
|
|
if (!/;$/ && /^\**([a-zA-Z_].*[\s*])?([A-Za-z_0-9]+)\(.*([),]|$)/)
|
1998-12-21 18:52:47 +08:00
|
|
|
{
|
2005-05-11 11:45:39 +08:00
|
|
|
/^([^()]*(\([^()]*\)[^()]*)*)\(/;
|
|
|
|
$1 =~ /([A-Za-z_0-9]*)$/;
|
|
|
|
$func = $1;
|
1998-12-21 18:52:47 +08:00
|
|
|
$func =~ tr/A-Z/a-z/;
|
|
|
|
}
|
2006-07-18 00:33:31 +08:00
|
|
|
if (/([A-Z0-9]+)err\(([^,]+)/ && ! /ckerr_ignore/)
|
1998-12-21 18:52:47 +08:00
|
|
|
{
|
|
|
|
$errlib=$1;
|
|
|
|
$n=$2;
|
2005-05-11 11:45:39 +08:00
|
|
|
|
|
|
|
if ($func eq "")
|
2009-08-13 01:30:37 +08:00
|
|
|
{ print "$file:$.:???:$n\n"; $bad = 1; next; }
|
2005-05-11 11:45:39 +08:00
|
|
|
|
1998-12-21 18:52:47 +08:00
|
|
|
if ($n !~ /([^_]+)_F_(.+)$/)
|
|
|
|
{
|
|
|
|
# print "check -$file:$.:$func:$n\n";
|
|
|
|
next;
|
|
|
|
}
|
|
|
|
$lib=$1;
|
|
|
|
$n=$2;
|
|
|
|
|
|
|
|
if ($lib ne $errlib)
|
2009-08-13 01:30:37 +08:00
|
|
|
{ print "$file:$.:$func:$n [${errlib}err]\n"; $bad = 1; next; }
|
1998-12-21 18:52:47 +08:00
|
|
|
|
|
|
|
$n =~ tr/A-Z/a-z/;
|
|
|
|
if (($n ne $func) && ($errlib ne "SYS"))
|
2009-08-13 01:30:37 +08:00
|
|
|
{ print "$file:$.:$func:$n\n"; $bad = 1; next; }
|
1998-12-21 18:52:47 +08:00
|
|
|
# print "$func:$1\n";
|
|
|
|
}
|
|
|
|
}
|
1998-12-21 19:00:56 +08:00
|
|
|
close(IN);
|
1998-12-21 18:52:47 +08:00
|
|
|
}
|
|
|
|
|
2009-08-13 01:30:37 +08:00
|
|
|
if ($bad && $err_strict)
|
|
|
|
{
|
|
|
|
print STDERR "FATAL: error discrepancy\n";
|
|
|
|
exit 1;
|
|
|
|
}
|
|
|
|
|