summaryrefslogtreecommitdiffstats
path: root/util
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2016-05-18 19:52:34 +0200
committerRichard Levitte <levitte@openssl.org>2016-05-18 22:03:11 +0200
commit97665e1c4fe14da9f4466b9999a5dfb4989acd61 (patch)
tree3b2b6bcda08814a0c2b9875f2332c4f6400d1b99 /util
parentf3e235ed6faa82170d857fdec3287558eb906c58 (diff)
Fix util/mkerr.pl
- Adjust mkerr.pl to produce the line length we used for source reformating. - Have mkerr.pl keep track of preprocessor directive indentation Among others, do not spuriously throw away a #endif at the end of header files. - Make sure mkerr.pl specifies any header inclusion correctly Reviewed-by: Rich Salz <rsalz@openssl.org>
Diffstat (limited to 'util')
-rw-r--r--util/mkerr.pl54
1 files changed, 37 insertions, 17 deletions
diff --git a/util/mkerr.pl b/util/mkerr.pl
index b754a453cd..36f0640511 100644
--- a/util/mkerr.pl
+++ b/util/mkerr.pl
@@ -7,7 +7,6 @@
# https://www.openssl.org/source/license.html
my $config = "crypto/err/openssl.ec";
-my $hprefix = "openssl/";
my $debug = 0;
my $unref = 0;
my $rebuild = 0;
@@ -70,6 +69,8 @@ Options:
-hprefix P Prepend the filenames in generated #include <header>
statements with prefix P. Default: 'openssl/' (without
the quotes, naturally)
+ NOTE: not used any more because our include directory
+ structure has changed.
-debug Turn on debugging verbose output on stderr.
@@ -173,8 +174,8 @@ close IN;
while (($hdr, $lib) = each %libinc)
{
next if($hdr eq "NONE");
- print STDERR "Scanning header file $hdr\n" if $debug;
- my $line = "", $def= "", $linenr = 0, $gotfile = 0;
+ print STDERR "Scanning header file $hdr\n" if $debug;
+ my $line = "", $def= "", $linenr = 0, $gotfile = 0, $cpp = 0;
if (open(IN, "<$hdr")) {
$gotfile = 1;
while(<IN>) {
@@ -409,14 +410,21 @@ foreach $lib (keys %csrc)
# Rewrite the header file
+ $cpp = 0;
+ $cplusplus = 0;
if (open(IN, "<$hfile")) {
# Copy across the old file
while(<IN>) {
+ $cplusplus = $cpp if /^#.*ifdef.*cplusplus/;
+ $cpp++ if /^#\s*if/;
+ $cpp-- if /^#\s*endif/;
push @out, $_;
last if (/BEGIN ERROR CODES/);
}
close IN;
} else {
+ $cpp = 1;
+ $cplusplus = 1;
push @out,
"/*\n",
" * Copyright 1995-$YEAR The OpenSSL Project Authors. All Rights Reserved.\n",
@@ -428,11 +436,11 @@ foreach $lib (keys %csrc)
" */\n",
"\n",
"#ifndef HEADER_${lib}_ERR_H\n",
-"#define HEADER_${lib}_ERR_H\n",
+"# define HEADER_${lib}_ERR_H\n",
"\n",
-"#ifdef __cplusplus\n",
+"# ifdef __cplusplus\n",
"extern \"C\" {\n",
-"#endif\n",
+"# endif\n",
"\n",
"/* BEGIN ERROR CODES */\n";
}
@@ -441,15 +449,16 @@ foreach $lib (keys %csrc)
print OUT @out;
undef @out;
print OUT <<"EOF";
-
/*
- * Content after this point is generated by util/mkerr.pl
- * DO NOT EDIT!
+ * The following lines are auto generated by the script mkerr.pl. Any changes
+ * made after this point may be overwritten when the script is next run.
*/
+
EOF
if($static) {
print OUT <<"EOF";
${staticloader}void ERR_load_${lib}_strings(void);
+
EOF
} else {
print OUT <<"EOF";
@@ -505,11 +514,17 @@ EOF
}
print OUT <<"EOF";
-#ifdef __cplusplus
-}
-#endif
-#endif
EOF
+ do {
+ if ($cplusplus == $cpp) {
+ print OUT "#", " "x$cpp, "ifdef __cplusplus\n";
+ print OUT "}\n";
+ print OUT "#", " "x$cpp, "endif\n";
+ }
+ if ($cpp-- > 0) {
+ print OUT "#", " "x$cpp, "endif\n";
+ }
+ } while ($cpp);
close OUT;
# Rewrite the C source file containing the error details.
@@ -541,8 +556,13 @@ EOF
my $hincf;
if($static) {
- $hfile =~ /([^\/]+)$/;
- $hincf = "<${hprefix}$1>";
+ $hincf = $hfile;
+ $hincf =~ s|.*include/||;
+ if ($hincf =~ m|^openssl/|) {
+ $hincf = "<${hincf}>";
+ } else {
+ $hincf = "\"${hincf}\"";
+ }
} else {
$hincf = "\"$hfile\"";
}
@@ -596,7 +616,7 @@ EOF
$fn = $ftrans{$fn};
}
# print OUT "{ERR_PACK($pack_errcode,$i,0),\t\"$fn\"},\n";
- if(length($i) + length($fn) > 58) {
+ if(length($i) + length($fn) > 57) {
print OUT " {ERR_FUNC($i),\n \"$fn\"},\n";
} else {
print OUT " {ERR_FUNC($i), \"$fn\"},\n";
@@ -619,7 +639,7 @@ EOF
$rn = $1;
$rn =~ tr/_[A-Z]/ [a-z]/;
}
- if(length($i) + length($rn) > 56) {
+ if(length($i) + length($rn) > 55) {
print OUT " {${rstr},\n \"$rn\"},\n";
} else {
print OUT " {${rstr}, \"$rn\"},\n";