X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=util%2Fmkstack.pl;h=3ee13fe7c9da56e86ed3100538d24909e26443ed;hb=5ef8093732ab22266a69043e1209be80eb8b83c2;hp=6cdab4708ca9221c6f74066152f05aa0ea76276e;hpb=3aceb94b9e6ac4722b96d4fb1cf7e1a4358941e0;p=oweals%2Fopenssl.git diff --git a/util/mkstack.pl b/util/mkstack.pl index 6cdab4708c..3ee13fe7c9 100755 --- a/util/mkstack.pl +++ b/util/mkstack.pl @@ -1,43 +1,28 @@ #!/usr/local/bin/perl -w -# + # This is a utility that searches out "DECLARE_STACK_OF()" -# declarations in header files, and updates/creates/replaces -# the corresponding macro declarations that follow it. The -# reason is that with "DEBUG_SAFESTACK" defined, each type -# will generate 19 functions, all type-safe variants of the -# base "sk_***" functions for the general STACK type. Without -# DEBUG_SAFESTACK defined, we need to macro define all the -# "type'd sk_##type##_***" functions as mapping directly to -# the standard sk_*** equivalents. As it's not generally -# possible to have macros that generate macros, we need to -# control this from the "outside", here in this script. +# declarations in .h and .c files, and updates/creates/replaces +# the corresponding macro declarations in crypto/stack/safestack.h. +# As it's not generally possible to have macros that generate macros, +# we need to control this from the "outside", here in this script. # # Geoff Thorpe, June, 2000 (with massive Perl-hacking # help from Steve Robb) -my $type_thing; -my $recurse = 0; -my @files = @ARGV; +my $safestack = "crypto/stack/safestack"; +my $do_write; while (@ARGV) { my $arg = $ARGV[0]; - if($arg eq "-recurse") { - $recurse = 1; - shift @ARGV; - } else { - last; + if($arg eq "-write") { + $do_write = 1; } + shift @ARGV; } -if($recurse) { - @source = (, , , ); -} else { - @source = @ARGV; -} +@source = (, , , ); foreach $file (@source) { - # After "Configure" has been run, we need to make sure we don't - # overwrite symbollic links with new header files! next if -l $file; # Open the .c/.h file for reading @@ -46,61 +31,94 @@ foreach $file (@source) { while() { if (/^DECLARE_STACK_OF\(([^)]+)\)/) { push @stacklst, $1; + } if (/^DECLARE_ASN1_SET_OF\(([^)]+)\)/) { + push @asn1setlst, $1; + } if (/^DECLARE_PKCS12_STACK_OF\(([^)]+)\)/) { + push @p12stklst, $1; } } close(IN); - write_defines("crypto/stack/safestack"); - unlink("crypto/stack/safestack.h"); - rename("crypto/stack/safestack.tmp","crypto/stack/safestack.h"); } -sub write_defines { - my $stackfile = $_[0]; - my $inside_block = 0; - open IN, "< $stackfile.h" || die "Can't open input file"; - open OUT, "> $stackfile.tmp" || die "Can't open output file"; - while() { - if (m|^/\* This block of defines is updated by a perl script, please do not touch! \*/|) { - $inside_block = 1; - } - if (m|^/\* End of perl script block, you may now edit :-\) \*/|) { - $inside_block = 0; - } elsif ($inside_block == 0) { - print OUT; - } - next if($inside_block != 1); - print OUT <) { + $old_stackfile .= $_; + + if (m|^/\* This block of defines is updated by util/mkstack.pl, please do not touch! \*/|) { + $inside_block = 1; + } + if (m|^/\* End of util/mkstack.pl block, you may now edit :-\) \*/|) { + $inside_block = 0; + } elsif ($inside_block == 0) { + $new_stackfile .= $_; + } + next if($inside_block != 1); + $new_stackfile .= "/* This block of defines is updated by util/mkstack.pl, please do not touch! */"; + + foreach $type_thing (sort @stacklst) { + $new_stackfile .= <$safestack.h" || die "Can't open output file"; + print OUT $new_stackfile; close OUT; }