diff options
author | Bryan Drewery <bryan@shatow.net> | 2022-09-14 00:59:43 +0300 |
---|---|---|
committer | Bryan Drewery <bryan@shatow.net> | 2022-11-05 18:47:57 +0300 |
commit | 34feed8741ac9c801240eaa288939361720c5a72 (patch) | |
tree | ebe0f974dd011f15c0408295ab0a2cf6ac54fb87 | |
parent | e158cb8814fa6a24e9c4c5344a67d67d9d5a418e (diff) |
encode_args: Speedup by making less copies of $@
-rw-r--r-- | src/share/poudriere/include/util.sh | 26 |
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 |