Include error library value in C error source files instead of fixing up

at runtime.
This commit is contained in:
Dr. Stephen Henson 2005-04-12 13:31:14 +00:00
parent 37942fab51
commit bc3cae7e7d
3 changed files with 40 additions and 8 deletions

View File

@ -778,7 +778,14 @@
differing sizes. differing sizes.
[Richard Levitte] [Richard Levitte]
Changes between 0.9.7f and 0.9.7g [XX xxx xxxx] Changes between 0.9.7g and 0.9.7h [XX xxx XXXX]
*) Include the fixed error library code in the C error file definitions
instead of fixing them up at runtime. This keeps the error code
structures constant.
[Steve Henson]
Changes between 0.9.7f and 0.9.7g [11 Apr 2005]
*) Fixes for newer kerberos headers. NB: the casts are needed because *) Fixes for newer kerberos headers. NB: the casts are needed because
the 'length' field is signed on one version and unsigned on another the 'length' field is signed on one version and unsigned on another

View File

@ -631,7 +631,8 @@ static void err_load_strings(int lib, ERR_STRING_DATA *str)
{ {
while (str->error) while (str->error)
{ {
str->error|=ERR_PACK(lib,0,0); if (lib)
str->error|=ERR_PACK(lib,0,0);
ERRFN(err_set_item)(str); ERRFN(err_set_item)(str);
str++; str++;
} }
@ -647,7 +648,8 @@ void ERR_unload_strings(int lib, ERR_STRING_DATA *str)
{ {
while (str->error) while (str->error)
{ {
str->error|=ERR_PACK(lib,0,0); if (lib)
str->error|=ERR_PACK(lib,0,0);
ERRFN(err_del_item)(str); ERRFN(err_del_item)(str);
str++; str++;
} }

View File

@ -9,6 +9,9 @@ my $reindex = 0;
my $dowrite = 0; my $dowrite = 0;
my $staticloader = ""; my $staticloader = "";
my $pack_errcode;
my $load_errcode;
while (@ARGV) { while (@ARGV) {
my $arg = $ARGV[0]; my $arg = $ARGV[0];
if($arg eq "-conf") { if($arg eq "-conf") {
@ -398,6 +401,20 @@ EOF
$hincf = "\"$hfile\""; $hincf = "\"$hfile\"";
} }
# If static we know the error code at compile time so use it
# in error definitions.
if ($static)
{
$pack_errcode = "ERR_LIB_${lib}";
$load_errcode = "0";
}
else
{
$pack_errcode = "0";
$load_errcode = "ERR_LIB_${lib}";
}
open (OUT,">$cfile") || die "Can't open $cfile for writing"; open (OUT,">$cfile") || die "Can't open $cfile for writing";
@ -468,6 +485,10 @@ EOF
/* BEGIN ERROR CODES */ /* BEGIN ERROR CODES */
#ifndef OPENSSL_NO_ERR #ifndef OPENSSL_NO_ERR
#define ERR_FUNC(func) ERR_PACK($pack_errcode,func,0)
#define ERR_REASON(reason) ERR_PACK($pack_errcode,0,reason)
static ERR_STRING_DATA ${lib}_str_functs[]= static ERR_STRING_DATA ${lib}_str_functs[]=
{ {
EOF EOF
@ -479,7 +500,8 @@ EOF
if(exists $ftrans{$fn}) { if(exists $ftrans{$fn}) {
$fn = $ftrans{$fn}; $fn = $ftrans{$fn};
} }
print OUT "{ERR_PACK(0,$i,0),\t\"$fn\"},\n"; # print OUT "{ERR_PACK($pack_errcode,$i,0),\t\"$fn\"},\n";
print OUT "{ERR_FUNC($i),\t\"$fn\"},\n";
} }
print OUT <<"EOF"; print OUT <<"EOF";
{0,NULL} {0,NULL}
@ -491,6 +513,7 @@ EOF
# Add each reason code. # Add each reason code.
foreach $i (@reasons) { foreach $i (@reasons) {
my $rn; my $rn;
my $rstr = "ERR_REASON($i)";
my $nspc = 0; my $nspc = 0;
if (exists $err_reason_strings{$i}) { if (exists $err_reason_strings{$i}) {
$rn = $err_reason_strings{$i}; $rn = $err_reason_strings{$i};
@ -499,9 +522,9 @@ EOF
$rn = $1; $rn = $1;
$rn =~ tr/_[A-Z]/ [a-z]/; $rn =~ tr/_[A-Z]/ [a-z]/;
} }
$nspc = 40 - length($i) unless length($i) > 40; $nspc = 40 - length($rstr) unless length($rstr) > 40;
$nspc = " " x $nspc; $nspc = " " x $nspc;
print OUT "{${i}${nspc},\"$rn\"},\n"; print OUT "{${rstr}${nspc},\"$rn\"},\n";
} }
if($static) { if($static) {
print OUT <<"EOF"; print OUT <<"EOF";
@ -518,8 +541,8 @@ ${staticloader}void ERR_load_${lib}_strings(void)
{ {
init=0; init=0;
#ifndef OPENSSL_NO_ERR #ifndef OPENSSL_NO_ERR
ERR_load_strings(ERR_LIB_${lib},${lib}_str_functs); ERR_load_strings($load_errcode,${lib}_str_functs);
ERR_load_strings(ERR_LIB_${lib},${lib}_str_reasons); ERR_load_strings($load_errcode,${lib}_str_reasons);
#endif #endif
} }