Make the 'crypto' and 'ssl' options in the perl script mkdef.pl really work,

also add an 'update' option to automatically append any new functions to the
ssleay.num and libeay.num files.
This commit is contained in:
Dr. Stephen Henson 1999-02-11 01:39:30 +00:00
parent 3773d138ce
commit 55a9cc6e47
3 changed files with 87 additions and 6 deletions

View File

@ -5,6 +5,14 @@
Changes between 0.9.1c and 0.9.2
*) Modifications to the mkdef.pl for Win32 DEF file creation. The usage
message is now correct (it understands "crypto" and "ssl" on its
command line). There is also now an "update" option. This will update
the util/ssleay.num and util/libeay.num files with any new functions.
If you do a:
perl util/mkdef.pl crypto ssl update
it will update them.
*) Overhauled the Perl interface (perl/*):
- ported BN stuff to OpenSSL's different BN library
- made the perl/ source tree CVS-aware

View File

@ -1174,3 +1174,25 @@ i2d_BASIC_CONSTRAINTS 1199
i2d_NETSCAPE_CERT_SEQUENCE 1200
i2d_ext_ku 1201
EVP_MD_CTX_copy 1202
i2d_ASN1_ENUMERATED 1203
d2i_ASN1_ENUMERATED 1204
ASN1_ENUMERATED_set 1205
ASN1_ENUMERATED_get 1206
BN_to_ASN1_ENUMERATED 1207
ASN1_ENUMERATED_to_BN 1208
i2a_ASN1_ENUMERATED 1209
a2i_ASN1_ENUMERATED 1210
i2d_GENERAL_NAME 1211
d2i_GENERAL_NAME 1212
GENERAL_NAME_new 1213
GENERAL_NAME_free 1214
GENERAL_NAMES_new 1215
GENERAL_NAMES_free 1216
d2i_GENERAL_NAMES 1217
i2d_GENERAL_NAMES 1218
i2v_GENERAL_NAMES 1219
i2s_ASN1_OCTET_STRING 1220
s2i_ASN1_OCTET_STRING 1221
X509V3_EXT_check_conf 1222
hex_to_string 1223
string_to_hex 1224

View File

@ -15,7 +15,10 @@ foreach (@ARGV)
$NT=1 if $_ eq "32";
$NT=0 if $_ eq "16";
$do_ssl=1 if $_ eq "ssleay";
$do_ssl=1 if $_ eq "ssl";
$do_crypto=1 if $_ eq "libeay";
$do_crypto=1 if $_ eq "crypto";
$do_update=1 if $_ eq "update";
}
if (!$do_ssl && !$do_crypto)
@ -25,7 +28,9 @@ if (!$do_ssl && !$do_crypto)
}
%ssl_list=&load_numbers($ssl_num);
$max_ssl = $max_num;
%crypto_list=&load_numbers($crypto_num);
$max_crypto = $max_num;
$ssl="ssl/ssl.h";
@ -74,11 +79,33 @@ $crypto.=" crypto/tmdiff.h";
$match{'NOPROTO'}=1;
$match2{'PERL5'}=1;
&print_def_file(*STDOUT,"SSLEAY",*ssl_list,&do_defs("SSLEAY",$ssl))
if $do_ssl == 1;
@ssl_func = &do_defs("SSLEAY", $ssl);
@crypto_func = &do_defs("LIBEAY", $crypto);
if ($do_update) {
if ($do_ssl == 1) {
open(OUT, ">>$ssl_num");
&update_numbers(*OUT,"SSLEAY",*ssl_list,$max_ssl, @ssl_func);
close OUT;
}
if($do_crypto == 1) {
open(OUT, ">>$crypto_num");
&update_numbers(*OUT,"LIBEAY",*crypto_list,$max_crypto, @crypto_func);
close OUT;
}
} else {
&print_def_file(*STDOUT,"SSLEAY",*ssl_list,@ssl_func)
if $do_ssl == 1;
&print_def_file(*STDOUT,"LIBEAY",*crypto_list,@crypto_func)
if $do_crypto == 1;
}
&print_def_file(*STDOUT,"LIBEAY",*crypto_list,&do_defs("LIBEAY",$crypto))
if $do_crypto == 1;
sub do_defs
{
@ -98,7 +125,7 @@ sub do_defs
while (($i=index($a,"/*")) >= 0)
{
$j=index($a,"*/");
break unless ($j >= 0);
last unless ($j >= 0);
$a=substr($a,0,$i).substr($a,$j+2);
# print "$i $j\n";
}
@ -265,7 +292,8 @@ EOF
{
if (!defined($nums{$func}))
{
printf STDERR "$func does not have a number assigned\n";
printf STDERR "$func does not have a number assigned\n"
if(!$do_update);
}
else
{
@ -281,6 +309,8 @@ sub load_numbers
local($name)=@_;
local($j,@a,%ret);
$max_num = 0;
open(IN,"<$name") || die "unable to open $name:$!\n";
while (<IN>)
{
@ -289,7 +319,28 @@ sub load_numbers
next if /^\s*$/;
@a=split;
$ret{$a[0]}=$a[1];
$max_num = $a[1] if $a[1] > $max_num;
}
close(IN);
return(%ret);
}
sub update_numbers
{
local(*OUT,$name,*nums,$start_num, @functions)=@_;
my $new_funcs = 0;
print STDERR "Updating $name\n";
foreach $func (@functions)
{
if (!defined($nums{$func}))
{
$new_funcs++;
printf OUT "%s%-40s%d\n","",$func, ++$start_num;
}
}
if($new_funcs) {
print STDERR "$new_funcs New Functions added\n";
} else {
print STDERR "No New Functions Added\n";
}
}