aboutsummaryrefslogtreecommitdiff
path: root/dejagnu
diff options
context:
space:
mode:
authorJacob Bachmeyer <jcb@gnu.org>2021-05-19 00:19:20 -0500
committerJacob Bachmeyer <jcb@gnu.org>2021-05-19 00:19:20 -0500
commit9673505b54f1f2017f4dae7a2b972503e687f04c (patch)
treef38599d620fe03f2bb719fed453cf91d921a0d0c /dejagnu
parent0bab163959ff64d788bbdbd1c8719c44c9d4c95a (diff)
Replace non-portable Awk code in dejagnu auxiliary launcher
Diffstat (limited to 'dejagnu')
-rwxr-xr-xdejagnu28
1 files changed, 15 insertions, 13 deletions
diff --git a/dejagnu b/dejagnu
index ee9c007..8d3ba70 100755
--- a/dejagnu
+++ b/dejagnu
@@ -148,19 +148,21 @@ fi
# Remove any leading autoconf platform prefix and the "dejagnu" prefix.
# command=`basename "$0" | sed -e 's/^.*-\?dejagnu-\?//'`
-# The above simple solution is not portable, so we use Awk:
-command=`echo "$0" | awk 'BEGIN { FS = "/" }
-{ OFS = FS = "-"
- $0 = $NF
- for (i = 1; i <= NF; i++) if ($i ~ /dejagnu/) break;
- for (j = 1; j <= (NF - i); j++) $j = $(j+i);
- NF = j - 1
- print }'`
-# Initially splitting on "/", then assigning the last field to the record
-# performs the role of basename. Splitting on "-" and searching for a
-# field matching /dejagnu/ identifies the other prefixes, and the second
-# loop removes the "dejagnu" prefix and everything before it. The record
-# is then truncated, printed, and thereby returned to the shell.
+
+# The above simple solution is not portable, so we use Awk and two steps:
+command=`echo "$0" | awk 'BEGIN { FS = "/" } { print $NF }'`
+# First, we use a simple Awk program to perform the role of basename.
+command=`echo "$command" | awk 'BEGIN { OFS = FS = "-" }
+ { for (i = 1; i <= NF; i++) if ($i ~ /dejagnu/) break;
+ i++; for (out = ""; i <= NF; i++) out = out OFS $i;
+ print substr(out,2) }'`
+# Second, we split on "-" and search for a field matching /dejagnu/ to
+# identify the other prefixes, then skip that field and the second loop
+# collects any following fields. The spurious leading "-" is then removed
+# using substr() and the result is returned to the shell.
+
+# This roundabout approach maintains compatibility with Solaris 10, where
+# awk allows only limited manipulation of the record structure.
while expr $# \> 0 > /dev/null
do