Module Name:    src
Committed By:   apb
Date:           Sun Sep 27 17:25:02 UTC 2009

Modified Files:
        src: build.sh

Log Message:
Make resolvepath and resolvepaths slightly elss magic.  They now take
a variable name as an arg unstead of always working on $OPTARG,
and resolveepaths is now a wrapper around resolvepath instead of
duplicating code.


To generate a diff of this commit:
cvs rdiff -u -r1.207 -r1.208 src/build.sh

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

Modified files:

Index: src/build.sh
diff -u src/build.sh:1.207 src/build.sh:1.208
--- src/build.sh:1.207	Mon Sep  7 04:14:17 2009
+++ src/build.sh	Sun Sep 27 17:25:01 2009
@@ -1,5 +1,5 @@
 #! /usr/bin/env sh
-#	$NetBSD: build.sh,v 1.207 2009/09/07 04:14:17 jnemeth Exp $
+#	$NetBSD: build.sh,v 1.208 2009/09/27 17:25:01 apb Exp $
 #
 # Copyright (c) 2001-2009 The NetBSD Foundation, Inc.
 # All rights reserved.
@@ -499,41 +499,41 @@
 	makeenv="${makeenv} $1"
 }
 
-# Convert possibly-relative paths to absolute paths by prepending
-# ${TOP} if necessary.  Also delete trailing "/", if any.
+# Given a variable name in $1, modify the variable in place as follows:
+# For each space-separated word in the variable, call resolvepath.
 resolvepaths()
 {
-	_OPTARG=
-	for oa in ${OPTARG}; do
-		case "${oa}" in
-		/)
-			;;
-		/*)
-			oa="${oa%/}"
-			;;
-		*)
-			oa="${TOP}/${oa%/}"
-			;;
-		esac
-		_OPTARG="${_OPTARG} ${oa}"
+	local var="$1"
+	local val
+	eval val=\"\${${var}}\"
+	local newval=''
+	local word
+	for word in ${val}; do
+		resolvepath word
+		newval="${newval}${newval:+ }${word}"
 	done
-	OPTARG="${_OPTARG}"
+	eval ${var}=\"\${newval}\"
 }
 
+# Given a variable name in $1, modify the variable in place as follows:
 # Convert possibly-relative path to absolute path by prepending
 # ${TOP} if necessary.  Also delete trailing "/", if any.
 resolvepath()
 {
-	case "${OPTARG}" in
+	local var="$1"
+	local val
+	eval val=\"\${${var}}\"
+	case "${val}" in
 	/)
 		;;
 	/*)
-		OPTARG="${OPTARG%/}"
+		val="${val%/}"
 		;;
 	*)
-		OPTARG="${TOP}/${OPTARG%/}"
+		val="${TOP}/${val%/}"
 		;;
 	esac
+	eval ${var}=\"\${val}\"
 }
 
 usage()
@@ -663,12 +663,12 @@
 			;;
 
 		-C)
-			eval ${optargcmd}; resolvepaths
+			eval ${optargcmd}; resolvepaths OPTARG
 			iso_dir=${OPTARG}
 			;;
 
 		-D)
-			eval ${optargcmd}; resolvepath
+			eval ${optargcmd}; resolvepath OPTARG
 			setmakeenv DESTDIR "${OPTARG}"
 			;;
 
@@ -682,7 +682,7 @@
 			;;
 
 		-M)
-			eval ${optargcmd}; resolvepath
+			eval ${optargcmd}; resolvepath OPTARG
 			TOP_objdir="${OPTARG}${TOP}"
 			unsetmakeenv MAKEOBJDIR
 			setmakeenv MAKEOBJDIRPREFIX "${OPTARG}"
@@ -712,7 +712,7 @@
 			;;
 
 		-O)
-			eval ${optargcmd}; resolvepath
+			eval ${optargcmd}; resolvepath OPTARG
 			TOP_objdir="${OPTARG}"
 			unsetmakeenv MAKEOBJDIRPREFIX
 			setmakeenv MAKEOBJDIR "\${.CURDIR:C,^$TOP,$OPTARG,}"
@@ -723,7 +723,7 @@
 			;;
 
 		-R)
-			eval ${optargcmd}; resolvepath
+			eval ${optargcmd}; resolvepath OPTARG
 			setmakeenv RELEASEDIR "${OPTARG}"
 			;;
 
@@ -738,7 +738,7 @@
 			;;
 
 		-T)
-			eval ${optargcmd}; resolvepath
+			eval ${optargcmd}; resolvepath OPTARG
 			TOOLDIR="${OPTARG}"
 			export TOOLDIR
 			;;
@@ -765,12 +765,12 @@
 			;;
 
 		-w)
-			eval ${optargcmd}; resolvepath
+			eval ${optargcmd}; resolvepath OPTARG
 			makewrapper="${OPTARG}"
 			;;
 
 		-X)
-			eval ${optargcmd}; resolvepath
+			eval ${optargcmd}; resolvepath OPTARG
 			setmakeenv X11SRCDIR "${OPTARG}"
 			;;
 
@@ -1223,7 +1223,7 @@
 	eval cat <<EOF ${makewrapout}
 #! ${HOST_SH}
 # Set proper variables to allow easy "make" building of a NetBSD subtree.
-# Generated from:  \$NetBSD: build.sh,v 1.207 2009/09/07 04:14:17 jnemeth Exp $
+# Generated from:  \$NetBSD: build.sh,v 1.208 2009/09/27 17:25:01 apb Exp $
 # with these arguments: ${_args}
 #
 

Reply via email to