diff options
Diffstat (limited to 'src')
| -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; |
