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 02:56:32 +0300
committerBryan Drewery <bryan@shatow.net>2022-11-05 18:47:57 +0300
commita34e2134cc11af2c88333495bd572f0627443462 (patch)
tree4682f0c674ca47a99bdc9bc04182bd4c8ccfab5b
parent6563105c7d3e7d128bc749e22a2d3b3aca75abf8 (diff)
decode_args_vars: Slightly optimize with case
-rw-r--r--src/share/poudriere/include/util.sh18
-rw-r--r--test/encode_args.sh15
2 files changed, 27 insertions, 6 deletions
diff --git a/src/share/poudriere/include/util.sh b/src/share/poudriere/include/util.sh
index ee1919d0..c301fafe 100644
--- a/src/share/poudriere/include/util.sh
+++ b/src/share/poudriere/include/util.sh
@@ -97,7 +97,7 @@ decode_args_vars() {
local -; set +x -f
[ $# -ge 2 ] || eargs decode_args_vars data var1 [var2... varN]
local encoded_args_data="$1"
- local _value _var _vars IFS
+ local _value _var IFS
shift
local _vars="$*"
@@ -105,15 +105,21 @@ decode_args_vars() {
set -- ${encoded_args_data}
unset IFS
for _value; do
+ # Select the next var to populate.
_var="${_vars%% *}"
- _vars="${_vars#${_var} }"
- if [ "${_var}" = "${_vars}" ]; then
+ case "${_vars}" in
+ # Last one - set all remaining to here
+ ${_var})
setvar "${_var}" "$*"
break
- else
+ ;;
+ *)
setvar "${_var}" "${_value}"
- fi
- shift
+ # Pop off the var
+ _vars="${_vars#${_var} }"
+ shift
+ ;;
+ esac
done
}
diff --git a/test/encode_args.sh b/test/encode_args.sh
index 67e27883..c53a35eb 100644
--- a/test/encode_args.sh
+++ b/test/encode_args.sh
@@ -109,6 +109,16 @@ assert "1" "$1" "decode 3 trailing arguments argument 1"
assert "" "$2" "decode 3 trailing arguments argument 2"
assert "" "$3" "decode 3 trailing arguments argument 3"
assert "" "$4" "decode 3 trailing arguments argument 4"
+one=bad
+two=bad
+three=bad
+four=bad
+decode_args_vars "${data}" one two three four
+assert 0 "$?" "decode_args_vars"
+assert "1" "$one" "decode 2 argument argument 1"
+assert "" "$two" "decode 2 argument argument 2"
+assert "" "$three" "decode 2 argument argument 3"
+assert "" "$four" "decode 2 argument argument 4"
# Test trailing empty arguments with data
encode_args data "1" "" "" "x"
@@ -158,6 +168,11 @@ assert "*" "$two" "decode 3 trailing arguments x argument 2"
assert " * " "$three" "decode 3 trailing arguments x argument 3"
assert " 4" "$four" "decode 3 trailing arguments x argument 4"
+decode_args_vars "${data}" one two
+assert 0 "$?" "decode_args_vars"
+assert "1" "$one" "decode 3 trailing arguments x argument 1"
+assert "* * 4" "$two" "decode 3 trailing arguments x argument 2"
+
# Test parsing safety
# $()