diff options
Diffstat (limited to 'src/lib/libcrypto/err/err_code.pl')
-rw-r--r-- | src/lib/libcrypto/err/err_code.pl | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/src/lib/libcrypto/err/err_code.pl b/src/lib/libcrypto/err/err_code.pl new file mode 100644 index 0000000000..ebc8eef913 --- /dev/null +++ b/src/lib/libcrypto/err/err_code.pl | |||
@@ -0,0 +1,105 @@ | |||
1 | #!/usr/bin/perl | ||
2 | |||
3 | while (@ARGV) | ||
4 | { | ||
5 | $in=shift(@ARGV); | ||
6 | if ($in =~ /^-conf$/) | ||
7 | { | ||
8 | $in=shift(@ARGV); | ||
9 | open(IN,"<$in") || die "unable to open '$in'\n"; | ||
10 | while (<IN>) | ||
11 | { | ||
12 | s/#.*$//; | ||
13 | s/\s+$//; | ||
14 | next if (/^$/); | ||
15 | if (/^L\s+(\S+)\s+(\S+)$/) | ||
16 | { $errfile{$1}=$2; } | ||
17 | elsif (/^F\s+(\S+)$/) | ||
18 | { $function{$1}=1; } | ||
19 | elsif (/^R\s+(\S+)\s+(\S+)$/) | ||
20 | { $r_value{$1}=$2; } | ||
21 | else { die "bad input line: $in:$.\n"; } | ||
22 | } | ||
23 | close(IN); | ||
24 | next; | ||
25 | } | ||
26 | |||
27 | open(IN,"<$in") || die "unable to open '$in'\n"; | ||
28 | $last=""; | ||
29 | while (<IN>) | ||
30 | { | ||
31 | if (/err\(([A-Z0-9]+_F_[0-9A-Z_]+)\s*,\s*([0-9A-Z]+_R_[0-9A-Z_]+)\s*\)/) | ||
32 | { | ||
33 | if ($1 != $last) | ||
34 | { | ||
35 | if ($function{$1} == 0) | ||
36 | { | ||
37 | printf STDERR "$. $1 is bad\n"; | ||
38 | } | ||
39 | } | ||
40 | $function{$1}++; | ||
41 | $last=$1; | ||
42 | $reason{$2}++; | ||
43 | } | ||
44 | } | ||
45 | close(IN); | ||
46 | } | ||
47 | |||
48 | foreach (keys %function,keys %reason) | ||
49 | { | ||
50 | /^([A-Z0-9]+)_/; | ||
51 | $prefix{$1}++; | ||
52 | } | ||
53 | |||
54 | @F=sort keys %function; | ||
55 | @R=sort keys %reason; | ||
56 | foreach $j (sort keys %prefix) | ||
57 | { | ||
58 | next if $errfile{$j} eq "NONE"; | ||
59 | printf STDERR "doing %-6s - ",$j; | ||
60 | if (defined($errfile{$j})) | ||
61 | { | ||
62 | open(OUT,">$errfile{$j}") || | ||
63 | die "unable to open '$errfile{$j}':$!\n"; | ||
64 | $close_file=1; | ||
65 | } | ||
66 | else | ||
67 | { | ||
68 | *OUT=*STDOUT; | ||
69 | $close=0; | ||
70 | } | ||
71 | @f=grep(/^${j}_/,@F); | ||
72 | @r=grep(/^${j}_/,@R); | ||
73 | $num=100; | ||
74 | print OUT "/* Error codes for the $j functions. */\n\n"; | ||
75 | print OUT "/* Function codes. */\n"; | ||
76 | $f_count=0; | ||
77 | foreach $i (@f) | ||
78 | { | ||
79 | $z=6-int(length($i)/8); | ||
80 | printf OUT "#define $i%s $num\n","\t" x $z; | ||
81 | $num++; | ||
82 | $f_count++; | ||
83 | } | ||
84 | $num=100; | ||
85 | print OUT "\n/* Reason codes. */\n"; | ||
86 | $r_count=0; | ||
87 | foreach $i (@r) | ||
88 | { | ||
89 | $z=6-int(length($i)/8); | ||
90 | if (defined($r_value{$i})) | ||
91 | { | ||
92 | printf OUT "#define $i%s $r_value{$i}\n","\t" x $z; | ||
93 | } | ||
94 | else | ||
95 | { | ||
96 | printf OUT "#define $i%s $num\n","\t" x $z; | ||
97 | $num++; | ||
98 | } | ||
99 | $r_count++; | ||
100 | } | ||
101 | close(OUT) if $close_file; | ||
102 | |||
103 | printf STDERR "%3d functions, %3d reasons\n",$f_count,$r_count; | ||
104 | } | ||
105 | |||