Commit c9e2fab4 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 b3ed78cb
Loading
Loading
Loading
Loading
+28 −13
Original line number Diff line number Diff line
@@ -159,7 +159,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>) {
@@ -382,14 +382,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 (c) 2001-$year The OpenSSL Project.  All rights reserved.\n",
@@ -463,6 +470,7 @@ foreach $lib (keys %csrc)
 * 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";
@@ -523,11 +531,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.
@@ -559,8 +573,9 @@ EOF

	my $hincf;
	if($static) {
		$hfile =~ /([^\/]+)$/;
		$hincf = "<${hprefix}$1>";
		$hincf = $hfile;
		$hincf =~ s|.*/||g;
		$hincf = "<${hprefix}${hincf}>";
	} else {
		$hincf = "\"$hfile\"";
	}
@@ -665,7 +680,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";
@@ -688,7 +703,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";