From 7a556fb6f863980f56deff268a46c75a6ccf74e4 Mon Sep 17 00:00:00 2001 From: "Dr. Stephen Henson" Date: Sat, 9 Jan 2016 13:40:02 +0000 Subject: Add DEPRECATEDIN support. Reviewed-by: Viktor Dukhovni --- util/mkdef.pl | 52 ++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 42 insertions(+), 10 deletions(-) diff --git a/util/mkdef.pl b/util/mkdef.pl index c21b46f874..0c38934ba4 100755 --- a/util/mkdef.pl +++ b/util/mkdef.pl @@ -101,7 +101,9 @@ my @known_algorithms = ( "RC2", "RC4", "RC5", "IDEA", "DES", "BF", # NEXTPROTONEG "NEXTPROTONEG", # Deprecated functions - "DEPRECATED", + "DEPRECATEDIN_0_9_8", + "DEPRECATEDIN_1_0_0", + "DEPRECATEDIN_1_1_0", # SCTP "SCTP", # SRTP @@ -174,8 +176,23 @@ foreach (@ARGV, split(/ /, $options)) $do_ctestall=1 if $_ eq "ctestall"; $do_checkexist=1 if $_ eq "exist"; #$safe_stack_def=1 if $_ eq "-DDEBUG_SAFESTACK"; - - if (/^(enable|disable|no)-(.*)$/) { + if (/^--api=(\d+)\.(\d+)\.(\d+)$/) { + my $apiv = sprintf "%x%02x%02x", $1, $2, $3; + foreach (keys %disabled_algorithms) { + if (/^DEPRECATEDIN_(\d+)_(\d+)_(\d+)$/) { + my $depv = sprintf "%x%02x%02x", $1, $2, $3; + $disabled_algorithms{$_} = 1 if $apiv ge $depv; + } + } + } + if (/^no-deprecated$/) { + foreach (keys %disabled_algorithms) { + if (/^DEPRECATEDIN_/) { + $disabled_algorithms{$_} = 1; + } + } + } + elsif (/^(enable|disable|no)-(.*)$/) { my $alg = uc $2; $alg =~ tr/-/_/; if (exists $disabled_algorithms{$alg}) { @@ -439,14 +456,15 @@ sub do_defs print STDERR "DEBUG: parsing ----------\n" if $debug; while() { if($parens > 0) { - #Inside a DECLARE_DEPRECATED + #Inside a DEPRECATEDIN $stored_multiline .= $_; chomp $stored_multiline; - print STDERR "DEBUG: Continuing multiline DEPRECATED: $stored_multiline\n" if $debug; + print STDERR "DEBUG: Continuing multiline DEPRECATEDIN: $stored_multiline\n" if $debug; $parens = count_parens($stored_multiline); if ($parens == 0) { - $stored_multiline =~ /^\s*DECLARE_DEPRECATED\s*\(\s*(\w*(\s|\*|\w)*)/; - $def .= "$1(void);"; + $def .= do_deprecated($stored_multiline, + \@current_platforms, + \@current_algorithms); } next; } @@ -840,14 +858,16 @@ sub do_defs &$make_variant("_shadow_$2","_shadow_$2", "EXPORT_VAR_AS_FUNCTION", "FUNCTION"); - } elsif (/^\s*DECLARE_DEPRECATED\s*\(\s*(\w*(\s|\*|\w)*)/) { + } elsif (/^\s*DEPRECATEDIN/) { $parens = count_parens($_); if ($parens == 0) { - $def .= "$1(void);"; + $def .= do_deprecated($_, + \@current_platforms, + \@current_algorithms); } else { $stored_multiline = $_; chomp $stored_multiline; - print STDERR "DEBUG: Found multiline DEPRECATED starting with: $stored_multiline\n" if $debug; + print STDERR "DEBUG: Found multiline DEPRECATEDIN starting with: $stored_multiline\n" if $debug; next; } } elsif ($tag{'CONST_STRICT'} != 1) { @@ -1657,3 +1677,15 @@ sub check_version_lte() if (($cvbase ne $tvbase) && ($tvletter gt $cvletter)); } } + +sub do_deprecated() +{ + my ($decl, $plats, $algs) = @_; + $decl =~ /^\s*(DEPRECATEDIN_\d_\d_\d)\s*\((.*)\)\s*$/; + my $info1 .= "#INFO:"; + $info1 .= join(',', @{$plats}) . ":"; + my $info2 = $info1; + $info1 .= join(',',@{$algs}, $1) . ";"; + $info2 .= join(',',@{$algs}) . ";"; + return $info1 . $2 . ";" . $info2; +} -- cgit v1.2.3