TRUE => 1,
);
my $symhacking = $file eq $symhacksfile;
+ my @current_platforms = ();
+ my @current_algorithms = ();
+
while(<IN>) {
last if (/BEGIN ERROR CODES/);
if ($line ne '') {
$rename{$s} = $a;
}
if (/^\#/) {
- my @p = grep(!/^$/,
- map { $tag{$_} == 1 ? $_ :
- $tag{$_} == -1 ? "!".$_ : "" }
- @known_platforms);
- my @a = grep(!/^$/,
- map { $tag{"NO_".$_} == -1 ? $_ : "" }
- @known_algorithms);
- $def .= "#INFO:".join(',',@p).":".join(',',@a).";";
+ @current_platforms =
+ grep(!/^$/,
+ map { $tag{$_} == 1 ? $_ :
+ $tag{$_} == -1 ? "!".$_ : "" }
+ @known_platforms);
+ @current_algorithms =
+ grep(!/^$/,
+ map { $tag{"NO_".$_} == -1 ? $_ : "" }
+ @known_algorithms);
+ $def .=
+ "#INFO:"
+ .join(',',@current_platforms).":"
+ .join(',',@current_algorithms).";";
next;
}
if (/^\s*DECLARE_STACK_OF\s*\(\s*(\w*)\s*\)/) {
next;
} elsif (/^\s*DECLARE_ASN1_ENCODE_FUNCTIONS\s*\(\s*(\w*)\s*,\s*(\w*)\s*,\s*(\w*)\s*\)/) {
- $syms{"d2i_$3"} = 1;
- $syms{"i2d_$3"} = 1;
- $syms{"$2_it"} = 1;
- $kind{"$2_it"} = "VARIABLE";
+ $def .= "int d2i_$3(void);";
+ $def .= "int i2d_$3(void);";
+ $def .= "OPENSSL_EXTERN int $2_it;";
next;
} elsif (/^\s*DECLARE_ASN1_FUNCTIONS_fname\s*\(\s*(\w*)\s*,\s*(\w*)\s*,\s*(\w*)\s*\)/) {
- $syms{"d2i_$3"} = 1;
- $syms{"i2d_$3"} = 1;
- $syms{"$3_new"} = 1;
- $syms{"$3_free"} = 1;
- $syms{"$2_it"} = 1;
- $kind{"$2_it"} = "VARIABLE";
+ $def .= "int d2i_$3(void);";
+ $def .= "int i2d_$3(void);";
+ $def .= "int $3_free(void);";
+ $def .= "int $3_new(void);";
+ $def .= "OPENSSL_EXTERN int $2_it;";
} elsif (/^\s*DECLARE_ASN1_FUNCTIONS\s*\(\s*(\w*)\s*\)/ ||
/^\s*DECLARE_ASN1_FUNCTIONS_const\s*\(\s*(\w*)\s*\)/) {
- $syms{"d2i_$1"} = 1;
- $syms{"i2d_$1"} = 1;
- $syms{"$1_new"} = 1;
- $syms{"$1_free"} = 1;
- $syms{"$1_it"} = 1;
- $kind{"$1_it"} = "VARIABLE";
+ $def .= "int d2i_$1(void);";
+ $def .= "int i2d_$1(void);";
+ $def .= "int $1_free(void);";
+ $def .= "int $1_new(void);";
+ $def .= "OPENSSL_EXTERN int $1_it;";
next;
} elsif (/^\s*DECLARE_ASN1_ENCODE_FUNCTIONS_const\s*\(\s*(\w*)\s*,\s*(\w*)\s*\)/) {
- $syms{"d2i_$2"} = 1;
- $syms{"i2d_$2"} = 1;
- $syms{"$2_it"} = 1;
- $kind{"$2_it"} = "VARIABLE";
+ $def .= "int d2i_$2(void);";
+ $def .= "int i2d_$2(void);";
+ $def .= "OPENSSL_EXTERN int $2_it;";
next;
} elsif (/^\s*DECLARE_ASN1_FUNCTIONS_name\s*\(\s*(\w*)\s*,\s*(\w*)\s*\)/) {
- $syms{"d2i_$2"} = 1;
- $syms{"i2d_$2"} = 1;
- $syms{"$2_new"} = 1;
- $syms{"$2_free"} = 1;
- $syms{"$2_it"} = 1;
- $kind{"$2_it"} = "VARIABLE";
+ $def .= "int d2i_$2(void);";
+ $def .= "int i2d_$2(void);";
+ $def .= "int $2_free(void);";
+ $def .= "int $2_new(void);";
+ $def .= "OPENSSL_EXTERN int $2_it;";
next;
} elsif (/^\s*DECLARE_ASN1_ITEM\s*\(\s*(\w*)\s*,(\w*)\s*\)/) {
- $syms{"$1_it"} = 1;
- $kind{"$1_it"} = "VARIABLE";
+ $def .= "OPENSSL_EXTERN int $1_it;";
next;
} elsif (/^\s*DECLARE_PKCS12_STACK_OF\s*\(\s*(\w*)\s*\)/) {
next;
} elsif (/^DECLARE_PEM_rw\s*\(\s*(\w*)\s*,/ ||
/^DECLARE_PEM_rw_cb\s*\(\s*(\w*)\s*,/ ) {
# Things not in Win16
- $syms{"PEM_read_${1}"} = 1;
- $platform{"PEM_read_${1}"} = "!WIN16";
- $syms{"PEM_write_${1}"} = 1;
- $platform{"PEM_write_${1}"} = "!WIN16";
+ $def .=
+ "#INFO:"
+ .join(',',"!WIN16",@current_platforms).":"
+ .join(',',@current_algorithms).";";
+ $def .= "int PEM_read_$1(void);";
+ $def .= "int PEM_write_$1(void);";
+ $def .=
+ "#INFO:"
+ .join(',',@current_platforms).":"
+ .join(',',@current_algorithms).";";
# Things that are everywhere
- $syms{"PEM_read_bio_${1}"} = 1;
- $syms{"PEM_write_bio_${1}"} = 1;
- if ($1 eq "RSAPrivateKey" ||
- $1 eq "RSAPublicKey" ||
- $1 eq "RSA_PUBKEY") {
- $algorithm{"PEM_read_${1}"} = "RSA";
- $algorithm{"PEM_write_${1}"} = "RSA";
- $algorithm{"PEM_read_bio_${1}"} = "RSA";
- $algorithm{"PEM_write_bio_${1}"} = "RSA";
- }
- elsif ($1 eq "DSAPrivateKey" ||
- $1 eq "DSAparams" ||
- $1 eq "RSA_PUBKEY") {
- $algorithm{"PEM_read_${1}"} = "DSA";
- $algorithm{"PEM_write_${1}"} = "DSA";
- $algorithm{"PEM_read_bio_${1}"} = "DSA";
- $algorithm{"PEM_write_bio_${1}"} = "DSA";
- }
- elsif ($1 eq "DHparams") {
- $algorithm{"PEM_read_${1}"} = "DH";
- $algorithm{"PEM_write_${1}"} = "DH";
- $algorithm{"PEM_read_bio_${1}"} = "DH";
- $algorithm{"PEM_write_bio_${1}"} = "DH";
- }
+ $def .= "int PEM_read_bio_$1(void);";
+ $def .= "int PEM_write_bio_$1(void);";
} elsif (/^DECLARE_PEM_write\s*\(\s*(\w*)\s*,/ ||
/^DECLARE_PEM_write_cb\s*\(\s*(\w*)\s*,/ ) {
# Things not in Win16
- $syms{"PEM_write_${1}"} = 1;
- $platform{"PEM_write_${1}"} .= ",!WIN16";
+ $def .=
+ "#INFO:"
+ .join(',',"!WIN16",@current_platforms).":"
+ .join(',',@current_algorithms).";";
+ $def .= "int PEM_write_$1(void);";
+ $def .=
+ "#INFO:"
+ .join(',',@current_platforms).":"
+ .join(',',@current_algorithms).";";
# Things that are everywhere
- $syms{"PEM_write_bio_${1}"} = 1;
- if ($1 eq "RSAPrivateKey" ||
- $1 eq "RSAPublicKey" ||
- $1 eq "RSA_PUBKEY") {
- $algorithm{"PEM_write_${1}"} = "RSA";
- $algorithm{"PEM_write_bio_${1}"} = "RSA";
- }
- elsif ($1 eq "DSAPrivateKey" ||
- $1 eq "DSAparams" ||
- $1 eq "RSA_PUBKEY") {
- $algorithm{"PEM_write_${1}"} = "DSA";
- $algorithm{"PEM_write_bio_${1}"} = "DSA";
- }
- elsif ($1 eq "DHparams") {
- $algorithm{"PEM_write_${1}"} = "DH";
- $algorithm{"PEM_write_bio_${1}"} = "DH";
- }
+ $def .= "int PEM_write_bio_$1(void);";
} elsif (/^DECLARE_PEM_read\s*\(\s*(\w*)\s*,/ ||
/^DECLARE_PEM_read_cb\s*\(\s*(\w*)\s*,/ ) {
# Things not in Win16
- $syms{"PEM_read_${1}"} = 1;
- $platform{"PEM_read_${1}"} .= ",!WIN16";
+ $def .=
+ "#INFO:"
+ .join(',',"!WIN16",@current_platforms).":"
+ .join(',',@current_algorithms).";";
+ $def .= "int PEM_read_$1(void);";
+ $def .=
+ "#INFO:"
+ .join(',',@current_platforms).":"
+ .join(',',@current_algorithms).";";
# Things that are everywhere
- $syms{"PEM_read_bio_${1}"} = 1;
+ $def .= "int PEM_read_bio_$1(void);";
} elsif (
($tag{'TRUE'} != -1)
&& ($tag{'CONST_STRICT'} != 1)