diff options
Diffstat (limited to 'security/nss/lib/freebl/mpi/make-test-arrays')
-rwxr-xr-x | security/nss/lib/freebl/mpi/make-test-arrays | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/security/nss/lib/freebl/mpi/make-test-arrays b/security/nss/lib/freebl/mpi/make-test-arrays new file mode 100755 index 000000000..ecdd55202 --- /dev/null +++ b/security/nss/lib/freebl/mpi/make-test-arrays @@ -0,0 +1,98 @@ +#!/usr/bin/perl + +# +# make-test-arrays +# +# Given a test-arrays file, which specifies the test suite names, the +# names of the functions which perform those test suites, and +# descriptive comments, this script generates C structures for the +# mpi-test program. The input consists of lines of the form: +# +# suite-name:function-name:comment +# +# The output is written to the standard output. Blank lines are +# ignored, and comments beginning with '#' are stripped. + +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +# Read parameters from the environment, if available +$NAMEVAR = $ENV{'NAMEVAR'} || "g_names"; +$COUNTVAR = $ENV{'COUNTVAR'} || "g_count"; +$FUNCVAR = $ENV{'FUNCVAR'} || "g_tests"; +$DESCVAR = $ENV{'DESCVAR'} || "g_descs"; +$FUNCLEN = 13; +$NAMELEN = 18; +$DESCLEN = 45; + +#------------------------------------------------------------------------ +# Suck in input from the files on the command line, or standard input +while(<>) { + chomp; + s/\#.*$//; + next if /^\s*$/; + + ($suite, $func, $desc) = split(/:/, $_); + + $tmp = { "suite" => $suite, + "func" => $func, + "desc" => $desc }; + + push(@item, $tmp); +} +$count = scalar(@item); +$last = pop(@item); + +#------------------------------------------------------------------------ +# Output the table of names +print "/* Table mapping test suite names to index numbers */\n"; +printf("const int %s = %d;\n", $COUNTVAR, $count); +printf("const char *%s[] = {\n", $NAMEVAR); + +foreach $elt (@item) { + printf(" \"%s\",%s/* %s%s */\n", $elt->{"suite"}, + " " x ($NAMELEN - length($elt->{"suite"})), + $elt->{"desc"}, + " " x ($DESCLEN - length($elt->{"desc"}))); +} +printf(" \"%s\" %s/* %s%s */\n", $last->{"suite"}, + " " x ($NAMELEN - length($last->{"suite"})), + $last->{"desc"}, + " " x ($DESCLEN - length($last->{"desc"}))); +print "};\n\n"; + +#------------------------------------------------------------------------ +# Output the driver function prototypes +print "/* Test function prototypes */\n"; +foreach $elt (@item, $last) { + printf("int %s(void);\n", $elt->{"func"}); +} +print "\n"; + +#------------------------------------------------------------------------ +# Output the table of functions +print "/* Table mapping index numbers to functions */\n"; +printf("int (*%s[])(void) = {\n ", $FUNCVAR); +$brk = 0; + +foreach $elt (@item) { + print($elt->{"func"}, ", ", + " " x ($FUNCLEN - length($elt->{"func"}))); + $brk = ($brk + 1) & 3; + print "\n " unless($brk); +} +print $last->{"func"}, "\n};\n\n"; + +#------------------------------------------------------------------------ +# Output the table of descriptions +print "/* Table mapping index numbers to descriptions */\n"; +printf("const char *%s[] = {\n", $DESCVAR); + +foreach $elt (@item) { + printf(" \"%s\",\n", $elt->{"desc"}); +} +printf(" \"%s\"\n};\n\n", $last->{"desc"}); + +exit 0; + |