Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/freebsd/poudriere.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBryan Drewery <bryan@shatow.net>2022-09-14 00:59:43 +0300
committerBryan Drewery <bryan@shatow.net>2022-11-05 18:47:57 +0300
commit34feed8741ac9c801240eaa288939361720c5a72 (patch)
treeebe0f974dd011f15c0408295ab0a2cf6ac54fb87
parente158cb8814fa6a24e9c4c5344a67d67d9d5a418e (diff)
encode_args: Speedup by making less copies of $@
-rw-r--r--src/share/poudriere/include/util.sh26
1 files changed, 13 insertions, 13 deletions
diff --git a/src/share/poudriere/include/util.sh b/src/share/poudriere/include/util.sh
index 3fd31ebd..45fc6019 100644
--- a/src/share/poudriere/include/util.sh
+++ b/src/share/poudriere/include/util.sh
@@ -43,20 +43,20 @@ encode_args() {
[ $# -ge 1 ] || eargs encode_args var_return [args]
local var_return="$1"
shift
- local _args lastempty
+ local _args IFS
- _args=
- lastempty=0
- while [ "$#" -gt 0 ]; do
- _args="${_args}${_args:+${ENCODE_SEP}}${1}"
- [ "$#" -eq 1 -a -z "$1" ] && lastempty=1
- shift
- done
- # If the string ends in ENCODE_SEP then add another to
- # fix 'set' later eating it.
- [ "${lastempty}" -eq 1 ] && _args="${_args}${_args:+${ENCODE_SEP}}"
-
- setvar "${var_return}" "${_args}"
+ IFS="${ENCODE_SEP}"
+ _args="$@"
+ unset IFS
+ # Trailing empty fields need special handling.
+ case "${_args}" in
+ *"${ENCODE_SEP}")
+ setvar "${var_return}" "${_args}${ENCODE_SEP}"
+ ;;
+ *)
+ setvar "${var_return}" "${_args}"
+ ;;
+ esac
}
# Decode data from encode_args