X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=util%2Fmkerr.pl;h=7d98b5234d91026c31cbebc9e784ceaeec5f8c3a;hp=60a3028bc6af54e5c44df8e3e27138f500c67bdf;hb=645749ef98612340b11c4bf2ba856e1fa469912b;hpb=5043fc9fd577bcc06623a8aad418a136c15a5928 diff --git a/util/mkerr.pl b/util/mkerr.pl index 60a3028bc6..7d98b5234d 100644 --- a/util/mkerr.pl +++ b/util/mkerr.pl @@ -38,7 +38,7 @@ while (@ARGV) { } if($recurse) { - @source = (, , ,, ); + @source = (, , , ); } else { @source = @ARGV; } @@ -79,8 +79,11 @@ while (($lib, $hdr) = each %hinc) next if($hdr eq "NONE"); print STDERR "Scanning header file $hdr\n" if $debug; open(IN, "<$hdr") || die "Can't open Header file $hdr\n"; - my $line = "", $def= ""; + my $line = "", $def= "", $linenr = 0; while() { + $linenr++; + print STDERR "line: $linenr\r" if $debug; + last if(/BEGIN\s+ERROR\s+CODES/); if ($line ne '') { $_ = $line . $_; @@ -110,7 +113,12 @@ while (($lib, $hdr) = each %hinc) } } + print STDERR " \r" if $debug; + $defnr = 0; foreach (split /;/, $def) { + $defnr++; + print STDERR "def: $defnr\r" if $debug; + s/^[\n\s]*//g; s/[\n\s]*$//g; next if(/typedef\W/); @@ -136,6 +144,8 @@ while (($lib, $hdr) = each %hinc) } } + print STDERR " \r" if $debug; + next if $reindex; # Scan function and reason codes and store them: keep a note of the @@ -284,8 +294,25 @@ EOF # Rewrite the C source file containing the error details. - $hfile =~ /([^\/]+)$/; - my $hincf = $1; + # First, read any existing reason string definitions: + my %err_reason_strings; + if (open(IN,"<$cfile")) { + while () { + if (/\b(${lib}_R_\w*)\b.*\"(.*)\"/) { + $err_reason_strings{$1} = $2; + } + } + close(IN); + } + + my $hincf; + if($static) { + $hfile =~ /([^\/]+)$/; + $hincf = ""; + } else { + $hincf = "\"$hfile\""; + } + open (OUT,">$cfile") || die "Can't open $cfile for writing"; @@ -346,12 +373,13 @@ EOF */ /* NOTE: this file was auto generated by the mkerr.pl script: any changes - * made to it will be overwritten when the script next updates this file. + * made to it will be overwritten when the script next updates this file, + * only reason strings will be preserved. */ #include #include -#include +#include $hincf /* BEGIN ERROR CODES */ #ifndef NO_ERR @@ -379,9 +407,13 @@ EOF foreach $i (@reasons) { my $rn; my $nspc = 0; - $i =~ /^${lib}_R_(\S+)$/; - $rn = $1; - $rn =~ tr/_[A-Z]/ [a-z]/; + if (exists $err_reason_strings{$i}) { + $rn = $err_reason_strings{$i}; + } else { + $i =~ /^${lib}_R_(\S+)$/; + $rn = $1; + $rn =~ tr/_[A-Z]/ [a-z]/; + } $nspc = 40 - length($i) unless length($i) > 40; $nspc = " " x $nspc; print OUT "{${i}${nspc},\"$rn\"},\n"; @@ -444,7 +476,7 @@ void ERR_load_${lib}_strings(void) #ifdef ${lib}_LIB_NAME ${lib}_lib_name->error = ERR_PACK(${lib}_lib_error_code,0,0); ERR_load_strings(0,${lib}_lib_name); -#endif; +#endif } } @@ -459,7 +491,7 @@ EOF } close OUT; - + undef %err_reason_strings; } if($debug && defined(%notrans)) {