diff options
-rwxr-xr-x | src/regress/lib/libcrypto/man/check_complete.pl | 164 |
1 files changed, 109 insertions, 55 deletions
diff --git a/src/regress/lib/libcrypto/man/check_complete.pl b/src/regress/lib/libcrypto/man/check_complete.pl index ffd1159894..3e53a15443 100755 --- a/src/regress/lib/libcrypto/man/check_complete.pl +++ b/src/regress/lib/libcrypto/man/check_complete.pl | |||
@@ -17,55 +17,77 @@ | |||
17 | use strict; | 17 | use strict; |
18 | use warnings; | 18 | use warnings; |
19 | 19 | ||
20 | my @obsolete = qw( | 20 | my %internal = ( |
21 | ASN1_const_CTX ASN1_CTX | 21 | asn1 => [qw( |
22 | ASN1_dup ASN1_d2i_bio ASN1_d2i_bio_of ASN1_d2i_fp ASN1_d2i_fp_of | 22 | ASN1_ENCODING |
23 | ASN1_ENCODING | 23 | ASN1_OBJECT_FLAG_CRITICAL ASN1_OBJECT_FLAG_DYNAMIC |
24 | ASN1_i2d_bio ASN1_i2d_bio_of ASN1_i2d_bio_of_const | 24 | ASN1_OBJECT_FLAG_DYNAMIC_DATA ASN1_OBJECT_FLAG_DYNAMIC_STRINGS |
25 | ASN1_i2d_fp ASN1_i2d_fp_of ASN1_i2d_fp_of_const | 25 | ASN1_STRING_FLAG_BITS_LEFT ASN1_STRING_FLAG_CONT |
26 | ASN1_LONG_UNDEF | 26 | ASN1_STRING_FLAG_MSTRING ASN1_STRING_FLAG_NDEF |
27 | ASN1_OBJECT_FLAG_CRITICAL ASN1_OBJECT_FLAG_DYNAMIC | 27 | CHARTYPE_FIRST_ESC_2253 CHARTYPE_LAST_ESC_2253 CHARTYPE_PRINTABLESTRING |
28 | ASN1_OBJECT_FLAG_DYNAMIC_DATA ASN1_OBJECT_FLAG_DYNAMIC_STRINGS | 28 | )], |
29 | ASN1_STRING_FLAG_BITS_LEFT ASN1_STRING_FLAG_CONT | 29 | objects => [qw( |
30 | ASN1_STRING_FLAG_MSTRING ASN1_STRING_FLAG_NDEF | 30 | OBJ_bsearch OBJ_bsearch_ OBJ_bsearch_ex OBJ_bsearch_ex_ |
31 | CHARTYPE_FIRST_ESC_2253 CHARTYPE_LAST_ESC_2253 CHARTYPE_PRINTABLESTRING | 31 | )], |
32 | d2i_NETSCAPE_X509 | 32 | x509_vfy => [qw( |
33 | NETSCAPE_X509 NETSCAPE_X509_free NETSCAPE_X509_new | 33 | X509_VERIFY_PARAM_ID |
34 | i2d_NETSCAPE_X509 | 34 | )] |
35 | ub_title | ||
36 | V_ASN1_PRIMATIVE_TAG | ||
37 | X509_algor_st | ||
38 | X509_EX_V_INIT X509_EX_V_NETSCAPE_HACK | ||
39 | X509_EXT_PACK_STRING X509_EXT_PACK_UNKNOWN | ||
40 | X509_VERIFY_PARAM_ID | ||
41 | ); | 35 | ); |
42 | 36 | ||
43 | # postponed | 37 | my %obsolete = ( |
44 | push @obsolete, qw( | 38 | asn1 => [qw( |
45 | ASN1_ITEM_EXP ASN1_ITEM_ptr ASN1_ITEM_ref ASN1_ITEM_rptr | 39 | ASN1_const_CTX ASN1_CTX |
46 | ASN1_TEMPLATE ASN1_TLC | 40 | ASN1_dup ASN1_d2i_bio ASN1_d2i_bio_of ASN1_d2i_fp ASN1_d2i_fp_of |
47 | CHECKED_D2I_OF CHECKED_I2D_OF CHECKED_NEW_OF CHECKED_PPTR_OF CHECKED_PTR_OF | 41 | ASN1_i2d_bio ASN1_i2d_bio_of ASN1_i2d_bio_of_const |
48 | DECLARE_ASN1_ALLOC_FUNCTIONS DECLARE_ASN1_ALLOC_FUNCTIONS_name | 42 | ASN1_i2d_fp ASN1_i2d_fp_of ASN1_i2d_fp_of_const |
49 | DECLARE_ASN1_ENCODE_FUNCTIONS DECLARE_ASN1_ENCODE_FUNCTIONS_const | 43 | ASN1_LONG_UNDEF |
50 | DECLARE_ASN1_FUNCTIONS DECLARE_ASN1_FUNCTIONS_const | 44 | d2i_NETSCAPE_X509 i2d_NETSCAPE_X509 |
51 | DECLARE_ASN1_FUNCTIONS_fname DECLARE_ASN1_FUNCTIONS_name | 45 | NETSCAPE_X509 NETSCAPE_X509_free NETSCAPE_X509_new |
52 | DECLARE_ASN1_ITEM | 46 | ub_title |
53 | DECLARE_ASN1_NDEF_FUNCTION | 47 | V_ASN1_PRIMATIVE_TAG |
54 | DECLARE_ASN1_PRINT_FUNCTION DECLARE_ASN1_PRINT_FUNCTION_fname | 48 | X509_algor_st |
55 | DECLARE_ASN1_SET_OF | 49 | )], |
56 | D2I_OF | 50 | objects => [qw( |
57 | d2i_PBEPARAM d2i_PBE2PARAM d2i_PBKDF2PARAM | 51 | _DECLARE_OBJ_BSEARCH_CMP_FN |
58 | IMPLEMENT_ASN1_SET_OF | 52 | DECLARE_OBJ_BSEARCH_CMP_FN DECLARE_OBJ_BSEARCH_GLOBAL_CMP_FN |
59 | I2D_OF I2D_OF_const | 53 | IMPLEMENT_OBJ_BSEARCH_CMP_FN IMPLEMENT_OBJ_BSEARCH_GLOBAL_CMP_FN |
60 | i2d_PBEPARAM i2d_PBE2PARAM i2d_PBKDF2PARAM | 54 | )], |
61 | NETSCAPE_SPKAC NETSCAPE_SPKI | 55 | x509 => [qw( |
62 | PBEPARAM PBEPARAM_free PBEPARAM_new | 56 | X509_EX_V_INIT X509_EX_V_NETSCAPE_HACK |
63 | PBE2PARAM PBE2PARAM_free PBE2PARAM_new | 57 | X509_EXT_PACK_STRING X509_EXT_PACK_UNKNOWN |
64 | PBKDF2PARAM PBKDF2PARAM_free PBKDF2PARAM_new | 58 | )] |
65 | PKCS5_pbe_set PKCS5_pbe_set0_algor | 59 | ); |
66 | PKCS5_pbe2_set PKCS5_pbe2_set_iv | 60 | |
67 | PKCS5_pbkdf2_set | 61 | my %postponed = ( |
68 | TYPEDEF_D2I_OF TYPEDEF_D2I2D_OF TYPEDEF_I2D_OF | 62 | asn1 => [qw( |
63 | ASN1_ITEM_EXP ASN1_ITEM_ptr ASN1_ITEM_ref ASN1_ITEM_rptr | ||
64 | ASN1_TEMPLATE ASN1_TLC | ||
65 | CHECKED_D2I_OF CHECKED_I2D_OF CHECKED_NEW_OF | ||
66 | CHECKED_PPTR_OF CHECKED_PTR_OF | ||
67 | DECLARE_ASN1_ALLOC_FUNCTIONS DECLARE_ASN1_ALLOC_FUNCTIONS_name | ||
68 | DECLARE_ASN1_ENCODE_FUNCTIONS DECLARE_ASN1_ENCODE_FUNCTIONS_const | ||
69 | DECLARE_ASN1_FUNCTIONS DECLARE_ASN1_FUNCTIONS_const | ||
70 | DECLARE_ASN1_FUNCTIONS_fname DECLARE_ASN1_FUNCTIONS_name | ||
71 | DECLARE_ASN1_ITEM | ||
72 | DECLARE_ASN1_NDEF_FUNCTION | ||
73 | DECLARE_ASN1_PRINT_FUNCTION DECLARE_ASN1_PRINT_FUNCTION_fname | ||
74 | DECLARE_ASN1_SET_OF | ||
75 | D2I_OF | ||
76 | IMPLEMENT_ASN1_SET_OF | ||
77 | I2D_OF I2D_OF_const | ||
78 | TYPEDEF_D2I_OF TYPEDEF_D2I2D_OF TYPEDEF_I2D_OF | ||
79 | )], | ||
80 | x509 => [qw( | ||
81 | d2i_PBEPARAM d2i_PBE2PARAM d2i_PBKDF2PARAM | ||
82 | i2d_PBEPARAM i2d_PBE2PARAM i2d_PBKDF2PARAM | ||
83 | NETSCAPE_SPKAC NETSCAPE_SPKI | ||
84 | PBEPARAM PBEPARAM_free PBEPARAM_new | ||
85 | PBE2PARAM PBE2PARAM_free PBE2PARAM_new | ||
86 | PBKDF2PARAM PBKDF2PARAM_free PBKDF2PARAM_new | ||
87 | PKCS5_pbe_set PKCS5_pbe_set0_algor | ||
88 | PKCS5_pbe2_set PKCS5_pbe2_set_iv | ||
89 | PKCS5_pbkdf2_set | ||
90 | )] | ||
69 | ); | 91 | ); |
70 | 92 | ||
71 | my $MANW = 'man -M /usr/share/man -w'; | 93 | my $MANW = 'man -M /usr/share/man -w'; |
@@ -78,6 +100,7 @@ my $in_define = 0; | |||
78 | my $in_function = 0; | 100 | my $in_function = 0; |
79 | my $in_struct = 0; | 101 | my $in_struct = 0; |
80 | my $in_typedef_struct = 0; | 102 | my $in_typedef_struct = 0; |
103 | my %undoc = (); | ||
81 | my $verbose = 0; | 104 | my $verbose = 0; |
82 | 105 | ||
83 | if (defined $ARGV[0] && $ARGV[0] eq '-v') { | 106 | if (defined $ARGV[0] && $ARGV[0] eq '-v') { |
@@ -88,6 +111,10 @@ $#ARGV == 0 or die "usage: $0 [-v] headername"; | |||
88 | $hfile .= "/$ARGV[0].h"; | 111 | $hfile .= "/$ARGV[0].h"; |
89 | open my $in_fh, '<', $hfile or die "$hfile: $!"; | 112 | open my $in_fh, '<', $hfile or die "$hfile: $!"; |
90 | 113 | ||
114 | $undoc{$_} = 1 foreach @{$internal{$ARGV[0]}}; | ||
115 | $undoc{$_} = 1 foreach @{$obsolete{$ARGV[0]}}; | ||
116 | $undoc{$_} = 1 foreach @{$postponed{$ARGV[0]}}; | ||
117 | |||
91 | while (<$in_fh>) { | 118 | while (<$in_fh>) { |
92 | try_again: | 119 | try_again: |
93 | chomp; | 120 | chomp; |
@@ -143,8 +170,9 @@ try_again: | |||
143 | print "Vt $line\n" if $verbose; | 170 | print "Vt $line\n" if $verbose; |
144 | next; | 171 | next; |
145 | } | 172 | } |
146 | if (grep { $_ eq $id } @obsolete) { | 173 | if ($undoc{$id}) { |
147 | print "V- $line\n" if $verbose; | 174 | print "V- $line\n" if $verbose; |
175 | delete $undoc{$id}; | ||
148 | next; | 176 | next; |
149 | } | 177 | } |
150 | if ($verbose) { | 178 | if ($verbose) { |
@@ -186,7 +214,9 @@ try_again: | |||
186 | /^DECLARE_STACK_OF\(\w+\)$/ || | 214 | /^DECLARE_STACK_OF\(\w+\)$/ || |
187 | /^TYPEDEF_D2I2D_OF\(\w+\);$/ || | 215 | /^TYPEDEF_D2I2D_OF\(\w+\);$/ || |
188 | /^#define HEADER_\w+_H$/ || | 216 | /^#define HEADER_\w+_H$/ || |
217 | /^#define USE_OBJ_MAC$/ || | ||
189 | /^#endif$/ || | 218 | /^#endif$/ || |
219 | /^#else$/ || | ||
190 | /^extern\s+const\s+ASN1_ITEM\s+\w+_it;$/ || | 220 | /^extern\s+const\s+ASN1_ITEM\s+\w+_it;$/ || |
191 | /^#include\s/ || | 221 | /^#include\s/ || |
192 | /^#ifn?def\s/ || | 222 | /^#ifn?def\s/ || |
@@ -233,10 +263,15 @@ try_again: | |||
233 | print "D- $line\n" if $verbose; | 263 | print "D- $line\n" if $verbose; |
234 | next; | 264 | next; |
235 | } | 265 | } |
236 | if (grep { $_ eq $id } @obsolete) { | 266 | if ($id =~ /^(?:SN|LN|NID|OBJ)_\w+$/) { |
237 | print "D- $line\n" if $verbose; | 267 | print "D- $line\n" if $verbose; |
238 | next; | 268 | next; |
239 | } | 269 | } |
270 | if ($undoc{$id}) { | ||
271 | print "D- $line\n" if $verbose; | ||
272 | delete $undoc{$id}; | ||
273 | next; | ||
274 | } | ||
240 | if ($verbose) { | 275 | if ($verbose) { |
241 | print "XX $line\n"; | 276 | print "XX $line\n"; |
242 | } else { | 277 | } else { |
@@ -250,13 +285,14 @@ try_again: | |||
250 | print "Fn $line\n" if $verbose; | 285 | print "Fn $line\n" if $verbose; |
251 | next; | 286 | next; |
252 | } | 287 | } |
253 | unless (system qw/grep -qR/, '^\.\\\\" .*\<' . $id . '(3)', | 288 | unless (system qw/grep -qR/, '^\.\\\\" .*\<' . $id . '\>', |
254 | "$srcdir/") { | 289 | "$srcdir/") { |
255 | print "F- $line\n" if $verbose; | 290 | print "F- $line\n" if $verbose; |
256 | next; | 291 | next; |
257 | } | 292 | } |
258 | if (grep { $_ eq $id } @obsolete) { | 293 | if ($undoc{$id}) { |
259 | print "F- $line\n" if $verbose; | 294 | print "F- $line\n" if $verbose; |
295 | delete $undoc{$id}; | ||
260 | next; | 296 | next; |
261 | } | 297 | } |
262 | if ($verbose) { | 298 | if ($verbose) { |
@@ -267,6 +303,21 @@ try_again: | |||
267 | next; | 303 | next; |
268 | } | 304 | } |
269 | 305 | ||
306 | # Handle global variables. | ||
307 | |||
308 | if (my ($id) = /^extern\s+int\s+(\w+);$/) { | ||
309 | unless (system "$MANW -k Va=$id > /dev/null 2>&1") { | ||
310 | print "Va $line\n" if $verbose; | ||
311 | next; | ||
312 | } | ||
313 | if ($verbose) { | ||
314 | print "XX $line\n"; | ||
315 | } else { | ||
316 | warn "not found: extern int $id"; | ||
317 | } | ||
318 | next; | ||
319 | } | ||
320 | |||
270 | # Handle variable type declarations. | 321 | # Handle variable type declarations. |
271 | 322 | ||
272 | if (my ($id) = /^struct\s+(\w+);$/) { | 323 | if (my ($id) = /^struct\s+(\w+);$/) { |
@@ -274,8 +325,9 @@ try_again: | |||
274 | print "Vt $line\n" if $verbose; | 325 | print "Vt $line\n" if $verbose; |
275 | next; | 326 | next; |
276 | } | 327 | } |
277 | if (grep { $_ eq $id } @obsolete) { | 328 | if ($undoc{$id}) { |
278 | print "V- $line\n" if $verbose; | 329 | print "V- $line\n" if $verbose; |
330 | delete $undoc{$id}; | ||
279 | next; | 331 | next; |
280 | } | 332 | } |
281 | if ($verbose) { | 333 | if ($verbose) { |
@@ -291,8 +343,9 @@ try_again: | |||
291 | print "Vt $line\n" if $verbose; | 343 | print "Vt $line\n" if $verbose; |
292 | next; | 344 | next; |
293 | } | 345 | } |
294 | if (grep { $_ eq $id } @obsolete) { | 346 | if ($undoc{$id}) { |
295 | print "V- $line\n" if $verbose; | 347 | print "V- $line\n" if $verbose; |
348 | delete $undoc{$id}; | ||
296 | next; | 349 | next; |
297 | } | 350 | } |
298 | if ($verbose) { | 351 | if ($verbose) { |
@@ -339,8 +392,9 @@ try_again: | |||
339 | print "F- $line\n" if $verbose; | 392 | print "F- $line\n" if $verbose; |
340 | next; | 393 | next; |
341 | } | 394 | } |
342 | if (grep { $_ eq $id } @obsolete) { | 395 | if ($undoc{$id}) { |
343 | print "F- $line\n" if $verbose; | 396 | print "F- $line\n" if $verbose; |
397 | delete $undoc{$id}; | ||
344 | next; | 398 | next; |
345 | } | 399 | } |
346 | if ($id =~ /^ASN1_PCTX_\w+$/) { | 400 | if ($id =~ /^ASN1_PCTX_\w+$/) { |
@@ -360,6 +414,6 @@ try_again: | |||
360 | } | 414 | } |
361 | die "parse error: $_"; | 415 | die "parse error: $_"; |
362 | } | 416 | } |
363 | |||
364 | close $in_fh; | 417 | close $in_fh; |
418 | warn "expected as undocumented but not found: $_" foreach keys %undoc; | ||
365 | exit 0; | 419 | exit 0; |