From 836e0c19dceaad96151e7f7f42898d1263130ba4 Mon Sep 17 00:00:00 2001 From: mdw Date: Fri, 10 Dec 1999 23:26:51 +0000 Subject: [PATCH] Fix output for large numbers. --- tests/mpx-gen | 36 ++++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/tests/mpx-gen b/tests/mpx-gen index 89cfdb3..e53b1d6 100755 --- a/tests/mpx-gen +++ b/tests/mpx-gen @@ -1,6 +1,6 @@ #! /usr/bin/awk -f # -# $Id: mpx-gen,v 1.1 1999/11/14 13:53:44 mdw Exp $ +# $Id: mpx-gen,v 1.2 1999/12/10 23:26:51 mdw Exp $ # # Generate test vectors for MPX testing @@ -29,11 +29,35 @@ BEGIN { if (i in ARGV) rep = ARGV[i++]; else rep = 1; # --- Output filters --- - - bc = "bc | sed 'y/ABCDEF/abcdef/; \ - s/^[0-9a-f]\\([0-9a-f][0-9a-f]\\)*$/0&/; \ - s/^/ /; \ - $ s/$/;/'"; + # + # This is complicated. `bc' emits numbers split over multiple lines with + # backslashes. It also doesn't pad to an even number of digits, which the + # test rig is expecting, or use lower-case, which looks nicer. + # + # The first bit matches a line ending with a backslash. If it finds one, + # it appends the next line, removes the backslash/newline pair, and loops + # around to the top. + # + # The next substitution translates the whole kaboodle into lower-case. + # + # The next one looks for an off number of hex digits and prepends a zero if + # it finds one. + # + # The one after that just indents by two spaces. The final one sticks a + # semicolon on the end. + + bc = "bc | sed '\ +:top\n\ +/\\\\$/ {\n\ + N\n\ + s/\\\\\\\n\ +//;\n\ + b top;\n\ +}\n\ +y/ABCDEF/abcdef/\n\ +s/^[0-9a-f]\\([0-9a-f][0-9a-f]\\)*$/0&/\n\ +s/^/ /\n\ +$ s/$/;/'"; out = "sed 'y/ABCDEF/abcdef/; s/^/ /'" # --- Main code --- -- 2.11.0