提交 267a1927 编写于 作者: R Richard Levitte

Do not insert things in syms{} and kind{} when parsing the header

files.  Instead, insert proper information in the $def string, which
will be properly munged later on.
上级 b0c86386
......@@ -324,6 +324,9 @@ sub do_defs
TRUE => 1,
);
my $symhacking = $file eq $symhacksfile;
my @current_platforms = ();
my @current_algorithms = ();
while(<IN>) {
last if (/BEGIN ERROR CODES/);
if ($line ne '') {
......@@ -402,57 +405,56 @@ sub do_defs
$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;
......@@ -461,65 +463,47 @@ sub do_defs
} 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)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册