Commit 97665e1c authored by Richard Levitte's avatar Richard Levitte
Browse files

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: default avatarRich Salz <rsalz@openssl.org>
parent f3e235ed
Loading
Loading
Loading
Loading
+37 −17
Original line number Diff line number Diff line
@@ -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.

@@ -174,7 +175,7 @@ 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;
	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",
@@ -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";