If the intended header file doesn't exist, create it.
This commit is contained in:
parent
de2f6e4dae
commit
f924200e1b
131
util/mkerr.pl
131
util/mkerr.pl
@ -82,38 +82,40 @@ while (($hdr, $lib) = each %libinc)
|
|||||||
{
|
{
|
||||||
next if($hdr eq "NONE");
|
next if($hdr eq "NONE");
|
||||||
print STDERR "Scanning header file $hdr\n" if $debug;
|
print STDERR "Scanning header file $hdr\n" if $debug;
|
||||||
open(IN, "<$hdr") || die "Can't open Header file $hdr\n";
|
my $line = "", $def= "", $linenr = 0, $gotfile = 0;
|
||||||
my $line = "", $def= "", $linenr = 0;
|
if (open(IN, "<$hdr")) {
|
||||||
while(<IN>) {
|
$gotfile = 1;
|
||||||
$linenr++;
|
while(<IN>) {
|
||||||
print STDERR "line: $linenr\r" if $debug;
|
$linenr++;
|
||||||
|
print STDERR "line: $linenr\r" if $debug;
|
||||||
|
|
||||||
last if(/BEGIN\s+ERROR\s+CODES/);
|
last if(/BEGIN\s+ERROR\s+CODES/);
|
||||||
if ($line ne '') {
|
if ($line ne '') {
|
||||||
$_ = $line . $_;
|
$_ = $line . $_;
|
||||||
$line = '';
|
$line = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (/\\$/) {
|
if (/\\$/) {
|
||||||
$line = $_;
|
$line = $_;
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
|
|
||||||
$cpp = 1 if /^#.*ifdef.*cplusplus/; # skip "C" declaration
|
$cpp = 1 if /^#.*ifdef.*cplusplus/; # skip "C" declaration
|
||||||
if ($cpp) {
|
if ($cpp) {
|
||||||
$cpp = 0 if /^#.*endif/;
|
$cpp = 0 if /^#.*endif/;
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
|
|
||||||
next if (/^#/); # skip preprocessor directives
|
next if (/^\#/); # skip preprocessor directives
|
||||||
|
|
||||||
s/\/\*.*?\*\///gs; # ignore comments
|
s/\/\*.*?\*\///gs; # ignore comments
|
||||||
s/{[^{}]*}//gs; # ignore {} blocks
|
s/{[^{}]*}//gs; # ignore {} blocks
|
||||||
|
|
||||||
if (/{|\/\*/) { # Add a } so editor works...
|
if (/\{|\/\*/) { # Add a } so editor works...
|
||||||
$line = $_;
|
$line = $_;
|
||||||
} else {
|
} else {
|
||||||
$def .= $_;
|
$def .= $_;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -155,8 +157,9 @@ while (($hdr, $lib) = each %libinc)
|
|||||||
# Scan function and reason codes and store them: keep a note of the
|
# Scan function and reason codes and store them: keep a note of the
|
||||||
# maximum code used.
|
# maximum code used.
|
||||||
|
|
||||||
while(<IN>) {
|
if ($gotfile) {
|
||||||
if(/^#define\s+(\S+)\s+(\S+)/) {
|
while(<IN>) {
|
||||||
|
if(/^\#define\s+(\S+)\s+(\S+)/) {
|
||||||
$name = $1;
|
$name = $1;
|
||||||
$code = $2;
|
$code = $2;
|
||||||
next if $name =~ /^${lib}err/;
|
next if $name =~ /^${lib}err/;
|
||||||
@ -177,6 +180,7 @@ while (($hdr, $lib) = each %libinc)
|
|||||||
$fcodes{$name} = $code;
|
$fcodes{$name} = $code;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
close IN;
|
close IN;
|
||||||
}
|
}
|
||||||
@ -248,15 +252,74 @@ foreach $lib (keys %csrc)
|
|||||||
|
|
||||||
# Rewrite the header file
|
# Rewrite the header file
|
||||||
|
|
||||||
open(IN, "<$hfile") || die "Can't Open Header File $hfile\n";
|
if (open(IN, "<$hfile")) {
|
||||||
|
# Copy across the old file
|
||||||
# Copy across the old file
|
while(<IN>) {
|
||||||
while(<IN>) {
|
|
||||||
push @out, $_;
|
push @out, $_;
|
||||||
last if (/BEGIN ERROR CODES/);
|
last if (/BEGIN ERROR CODES/);
|
||||||
|
}
|
||||||
|
close IN;
|
||||||
|
} else {
|
||||||
|
push @out,
|
||||||
|
"/* ====================================================================\n",
|
||||||
|
" * Copyright (c) 2001 The OpenSSL Project. All rights reserved.\n",
|
||||||
|
" *\n",
|
||||||
|
" * Redistribution and use in source and binary forms, with or without\n",
|
||||||
|
" * modification, are permitted provided that the following conditions\n",
|
||||||
|
" * are met:\n",
|
||||||
|
" *\n",
|
||||||
|
" * 1. Redistributions of source code must retain the above copyright\n",
|
||||||
|
" * notice, this list of conditions and the following disclaimer. \n",
|
||||||
|
" *\n",
|
||||||
|
" * 2. Redistributions in binary form must reproduce the above copyright\n",
|
||||||
|
" * notice, this list of conditions and the following disclaimer in\n",
|
||||||
|
" * the documentation and/or other materials provided with the\n",
|
||||||
|
" * distribution.\n",
|
||||||
|
" *\n",
|
||||||
|
" * 3. All advertising materials mentioning features or use of this\n",
|
||||||
|
" * software must display the following acknowledgment:\n",
|
||||||
|
" * \"This product includes software developed by the OpenSSL Project\n",
|
||||||
|
" * for use in the OpenSSL Toolkit. (http://www.openssl.org/)\"\n",
|
||||||
|
" *\n",
|
||||||
|
" * 4. The names \"OpenSSL Toolkit\" and \"OpenSSL Project\" must not be used to\n",
|
||||||
|
" * endorse or promote products derived from this software without\n",
|
||||||
|
" * prior written permission. For written permission, please contact\n",
|
||||||
|
" * openssl-core\@openssl.org.\n",
|
||||||
|
" *\n",
|
||||||
|
" * 5. Products derived from this software may not be called \"OpenSSL\"\n",
|
||||||
|
" * nor may \"OpenSSL\" appear in their names without prior written\n",
|
||||||
|
" * permission of the OpenSSL Project.\n",
|
||||||
|
" *\n",
|
||||||
|
" * 6. Redistributions of any form whatsoever must retain the following\n",
|
||||||
|
" * acknowledgment:\n",
|
||||||
|
" * \"This product includes software developed by the OpenSSL Project\n",
|
||||||
|
" * for use in the OpenSSL Toolkit (http://www.openssl.org/)\"\n",
|
||||||
|
" *\n",
|
||||||
|
" * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY\n",
|
||||||
|
" * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n",
|
||||||
|
" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n",
|
||||||
|
" * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR\n",
|
||||||
|
" * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n",
|
||||||
|
" * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n",
|
||||||
|
" * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n",
|
||||||
|
" * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n",
|
||||||
|
" * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\n",
|
||||||
|
" * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n",
|
||||||
|
" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n",
|
||||||
|
" * OF THE POSSIBILITY OF SUCH DAMAGE.\n",
|
||||||
|
" * ====================================================================\n",
|
||||||
|
" *\n",
|
||||||
|
" * This product includes cryptographic software written by Eric Young\n",
|
||||||
|
" * (eay\@cryptsoft.com). This product includes software written by Tim\n",
|
||||||
|
" * Hudson (tjh\@cryptsoft.com).\n",
|
||||||
|
" *\n",
|
||||||
|
" */\n",
|
||||||
|
"\n",
|
||||||
|
"#ifndef HEADER_${lib}_ERR_H\n",
|
||||||
|
"#define HEADER_${lib}_ERR_H\n",
|
||||||
|
"\n",
|
||||||
|
"/* BEGIN ERROR CODES */\n";
|
||||||
}
|
}
|
||||||
close IN;
|
|
||||||
|
|
||||||
open (OUT, ">$hfile") || die "Can't Open File $hfile for writing\n";
|
open (OUT, ">$hfile") || die "Can't Open File $hfile for writing\n";
|
||||||
|
|
||||||
print OUT @out;
|
print OUT @out;
|
||||||
|
Loading…
Reference in New Issue
Block a user