X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=crypto%2Ferr%2Ferr_genc.pl;h=5ebfa1a15e3fcb0119ed13048de8ff21f970af4b;hb=ad65ce755ea292df565a50e730e4210a3e732f4e;hp=6733cfe574a41a7266bb55711f313760962ffba7;hpb=eda1f21f1af8b6f77327e7b37573af9c1ba73726;p=oweals%2Fopenssl.git diff --git a/crypto/err/err_genc.pl b/crypto/err/err_genc.pl index 6733cfe574..5ebfa1a15e 100644 --- a/crypto/err/err_genc.pl +++ b/crypto/err/err_genc.pl @@ -1,6 +1,8 @@ #!/usr/local/bin/perl -($#ARGV == 1) || die "usage: $0
\n"; +if ($ARGV[0] eq "-s") { $static=1; shift @ARGV; } + +($#ARGV == 1) || die "usage: $0 [-s]
\n"; open(IN,"<$ARGV[0]") || die "unable to open $ARGV[0]:$!\n"; open(STDOUT,">$ARGV[1]") || die "unable to open $ARGV[1]:$!\n"; @@ -57,20 +59,88 @@ foreach (sort keys %out) print $out{$_}; print "{0,NULL},\n"; print "\t};\n\n"; + } +print "#endif\n"; + +if ($static) + { $lib="ERR_LIB_$type"; } +else + { + print <<"EOF"; + +#ifdef ${type}_LIB_NAME +static ERR_STRING_DATA ${type}_lib_name[]= + { +{0 ,${type}_LIB_NAME}, +{0,NULL} + }; +#endif + +EOF + $lib="${type}_lib_error_code"; + + + } -print "void ERR_load_${type}_strings()\n"; -print "\t{\n"; -print "\tstatic int init=1;\n\n"; -print "\tif (init)\n"; -print "\t\t{\n"; -print "\t\tinit=0;\n"; -print "\t\tERR_load_strings(ERR_LIB_$type,${type}_str_functs);\n" - if $Func; -print "\t\tERR_load_strings(ERR_LIB_$type,${type}_str_reasons);\n" - if $Reas; -print "\t\t}\n"; -print "\t}\n"; +$str=""; +$str.="#ifndef NO_ERR\n"; +$str.="\t\tERR_load_strings($lib,${type}_str_functs);\n" if $Func; +$str.="\t\tERR_load_strings($lib,${type}_str_reasons);\n" if $Reas; +$str.="#endif\n"; + +if (!$static) + { +print <<"EOF"; + +int ${type}_lib_error_code=0; + +void ERR_load_${type}_strings() + { + static int init=1; + + if (${type}_lib_error_code == 0) + ${type}_lib_error_code=ERR_get_next_error_library(); + + if (init) + { + init=0; +$str +#ifdef ${type}_LIB_NAME + ${type}_lib_name->error = ERR_PACK(${type}_lib_error_code,0,0); + ERR_load_strings(0,${type}_lib_name); +#endif; + } + } + +void ERR_${type}_error(function,reason,file,line) +int function; +int reason; +char *file; +int line; + { + if (${type}_lib_error_code == 0) + ${type}_lib_error_code=ERR_get_next_error_library(); + ERR_PUT_error(${type}_lib_error_code,function,reason,file,line); + } +EOF + } +else # $static + { + print <<"EOF"; + +void ERR_load_${type}_strings() + { + static int init=1; + + if (init) + { + init=0; +$str + } + } +EOF + } sub header { @@ -143,5 +213,6 @@ EOF print "#include \"err.h\"\n"; print "#include \"$header\"\n"; print "\n/* BEGIN ERROR CODES */\n"; + print "#ifndef NO_ERR\n"; }