Module Name:    src
Committed By:   kre
Date:           Sun Jan 19 00:50:25 UTC 2020

Modified Files:
        src/distrib/miniroot: install.sub

Log Message:
The idiom

        set $whatever
        while [ $# - gt 10 ]; do shift 10; done
        eval echo \$$#

fails when $# turns out to be 10 (or any multiple), it would need
to be instead

        while [ $# -ge 10 ]; do shift 9; done

but there hasn't been a shell that cannot handle ${10} (etc) correctly
in a very long time, so let's just use that instead (properly quoted,
in case IFS happens to contain a digit for some bizarre reason).

We should also "set -f" / "set +f" (or better, restore the prev setting of -f)
around the "set $whatever" part, but if that was ever going to cause a problem
here, it would have already, so leave that for now.


To generate a diff of this commit:
cvs rdiff -u -r1.51 -r1.52 src/distrib/miniroot/install.sub

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/distrib/miniroot/install.sub
diff -u src/distrib/miniroot/install.sub:1.51 src/distrib/miniroot/install.sub:1.52
--- src/distrib/miniroot/install.sub:1.51	Sun Jan 12 03:56:14 2020
+++ src/distrib/miniroot/install.sub	Sun Jan 19 00:50:25 2020
@@ -1,5 +1,5 @@
 #!/bin/sh
-#	$NetBSD: install.sub,v 1.51 2020/01/12 03:56:14 tsutsui Exp $
+#	$NetBSD: install.sub,v 1.52 2020/01/19 00:50:25 kre Exp $
 #
 # Copyright (c) 1996 The NetBSD Foundation, Inc.
 # All rights reserved.
@@ -114,8 +114,7 @@ cutlast () {
 	read _a; set -- $_a
 	IFS="$_oifs"
 	if [ "$1" = "" ]; then return; fi
-	while [ "$#" -gt 10 ]; do shift 10; done
-	eval echo \$$#
+	eval echo '"${'"$#"'}"'
 }
 
 firstchar () {
@@ -135,8 +134,7 @@ basename () {
 	IFS="/"
 	set -- $1
 	IFS="$_oifs"
-	while [ "$#" -gt 10 ]; do shift 10; done
-	eval echo \$$#
+	eval echo '"${'"$#"'}"'
 }
 
 dir_has_sets() {

Reply via email to