diff options
author | Richard Levitte <levitte@openssl.org> | 2018-02-07 19:23:39 +0100 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2018-02-07 22:16:44 +0100 |
commit | cb7b7275683655537c63e42b5e3ef3d7045e4104 (patch) | |
tree | 13f06a736e7ad3da9cc2e935a61f77056300e3c6 /util | |
parent | 3a7141df8768e797f42ed14027e974ea845aa20f (diff) |
mkerr.pl: When writing internal FOOerr.h, pay attention to disablable modules
If a module is disablable (i.e. can be configured with 'no-FOO'), the
resulting header file needs to be guarded with a check of the
corresponding OPENSSL_NO_FOO. While this seem fairly innocuous, it
has an impact on the information in util/*.num, generated by mkdef.pl.
Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Tim Hudson <tjh@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5275)
Diffstat (limited to 'util')
-rwxr-xr-x | util/mkerr.pl | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/util/mkerr.pl b/util/mkerr.pl index 52a44c9ffb..1740e40427 100755 --- a/util/mkerr.pl +++ b/util/mkerr.pl @@ -9,6 +9,9 @@ use strict; use warnings; +use lib "."; +use configdata; + my $config = "crypto/err/openssl.ec"; my $debug = 0; my $internal = 0; @@ -430,6 +433,9 @@ foreach my $lib ( keys %errorfile ) { my @function = sort grep( /^${lib}_/, keys %fcodes ); my @reasons = sort grep( /^${lib}_/, keys %rcodes ); + # indent level for innermost preprocessor lines + my $indent = " "; + # Rewrite the header file my $hfile = $hinc{$lib}; @@ -453,14 +459,24 @@ EOF if ( $internal ) { # Declare the load function because the generate C file # includes "fooerr.h" not "foo.h" + if ($lib ne "SSL" && $lib ne "ASYNC" + && grep { $lib eq uc $_ } @disablables) { + print OUT <<"EOF"; +# include <openssl/opensslconf.h> + +# ifndef OPENSSL_NO_${lib} + +EOF + $indent = " "; + } print OUT <<"EOF"; -# ifdef __cplusplus +#${indent}ifdef __cplusplus extern \"C\" { -# endif +#${indent}endif int ERR_load_${lib}_strings(void); -# ifdef __cplusplus +#${indent}ifdef __cplusplus } -# endif +#${indent}endif EOF } else { print OUT <<"EOF"; @@ -498,7 +514,7 @@ EOF $fassigned{$lib} .= "$findcode:"; print STDERR "New Function code $i\n" if $debug; } - printf OUT "# define $i%s $fcodes{$i}\n", " " x $z; + printf OUT "#${indent}define $i%s $fcodes{$i}\n", " " x $z; } print OUT "\n/*\n * $lib reason codes.\n */\n"; @@ -516,11 +532,14 @@ EOF $rassigned{$lib} .= "$findcode:"; print STDERR "New Reason code $i\n" if $debug; } - printf OUT "# define $i%s $rcodes{$i}\n", " " x $z; + printf OUT "#${indent}define $i%s $rcodes{$i}\n", " " x $z; } print OUT "\n"; - print OUT "#endif\n"; + while (length($indent) > 0) { + $indent = substr $indent, 0, -1; + print OUT "#${indent}endif\n"; + } # Rewrite the C source file containing the error details. |