From b4f381c6126c3258794cfb857595ca3dbfb479fa Mon Sep 17 00:00:00 2001 From: apb Date: Sun, 27 Sep 2009 17:25:01 +0000 Subject: [PATCH] Make resolvepath and resolvepaths slightly less 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. --- build.sh | 58 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/build.sh b/build.sh index 09252f6ca11e..3ede98bc9146 100755 --- a/build.sh +++ b/build.sh @@ -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 @@ unsetmakeenv() 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 @@ parseoptions() ;; -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 @@ parseoptions() ;; -M) - eval ${optargcmd}; resolvepath + eval ${optargcmd}; resolvepath OPTARG TOP_objdir="${OPTARG}${TOP}" unsetmakeenv MAKEOBJDIR setmakeenv MAKEOBJDIRPREFIX "${OPTARG}" @@ -712,7 +712,7 @@ parseoptions() ;; -O) - eval ${optargcmd}; resolvepath + eval ${optargcmd}; resolvepath OPTARG TOP_objdir="${OPTARG}" unsetmakeenv MAKEOBJDIRPREFIX setmakeenv MAKEOBJDIR "\${.CURDIR:C,^$TOP,$OPTARG,}" @@ -723,7 +723,7 @@ parseoptions() ;; -R) - eval ${optargcmd}; resolvepath + eval ${optargcmd}; resolvepath OPTARG setmakeenv RELEASEDIR "${OPTARG}" ;; @@ -738,7 +738,7 @@ parseoptions() ;; -T) - eval ${optargcmd}; resolvepath + eval ${optargcmd}; resolvepath OPTARG TOOLDIR="${OPTARG}" export TOOLDIR ;; @@ -765,12 +765,12 @@ parseoptions() ;; -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 @@ createmakewrapper() eval cat <