# HG changeset patch # User Franz Glasner # Date 1729433383 -7200 # Node ID 6f3f1bb9502cdd48de4224c63afbcb893ae30664 # Parent 7ead30e3b2f99a0535b72d63c80e7fe44816f57e farray.sh: Use a more strict quoting. Note: The previous quoting style was not wrong. diff -r 7ead30e3b2f9 -r 6f3f1bb9502c share/local-bsdtools/farray.sh --- a/share/local-bsdtools/farray.sh Sun Oct 20 14:43:50 2024 +0200 +++ b/share/local-bsdtools/farray.sh Sun Oct 20 16:09:43 2024 +0200 @@ -273,7 +273,7 @@ if [ -z "${__farr_mi_index}" ]; then if [ -n "${__farr_mi_length}" ]; then - eval "${__farr_mi_varname}"="\$((__farr_mi_length + 1))" + setvar "${__farr_mi_varname}" $((__farr_mi_length + 1)) else _farr_fatal "length not given: cannot autocompute index" fi @@ -281,12 +281,12 @@ _farr_is_decimal_number "${__farr_mi_index}" || _farr_fatal "given index is not a valid decimal number" if [ "${__farr_mi_index}" -le 0 ]; then if [ -n "${__farr_mi_length}" ]; then - eval "${__farr_mi_varname}"="\$((__farr_mi_length + __farr_mi_index))" + setvar "${__farr_mi_varname}" $((__farr_mi_length + __farr_mi_index)) else _farr_fatal "cannot compute effective index because no length is given" fi else - eval "${__farr_mi_varname}"=\$\{__farr_mi_index\} + setvar "${__farr_mi_varname}" "${__farr_mi_index}" fi fi } @@ -409,10 +409,10 @@ #: -#: Quote the given input string for eval and produce a strictly posixly correct -#: encoding. -#: -#: It does not use FreeBSD's ``$'...'`` shell feature. +#: Quote the given input string for `eval` and produce a strictly posixly +#: correct encoding. +#: +#: It does not use FreeBSD's ``$'...'`` feature in its :command:`/bin/sh`. #: #: If the argument contains a ``'`` character then a proper "Single-Quotes" #: combination is used. @@ -536,18 +536,18 @@ __farr_token="$(/usr/bin/hexdump -v -e '/1 "%02x"' -n 16 '/dev/urandom')" - __farr_gvrname=${_farr_array_prefix}${__farr_token} + __farr_gvrname="${_farr_array_prefix}${__farr_token}" # Check whether the variable already exists - eval __farr_len=\$\{${__farr_gvrname}__+SET\} + eval __farr_len=\"\$\{"${__farr_gvrname}"__+SET\}\" [ -n "${__farr_len}" ] && _farr_fatal "farray \`${__farr_name}' already exists: existing token \`${__farr_token}'" # Really create the storage by initializing its length ... - eval ${__farr_gvrname}__=0 + setvar "${__farr_gvrname}__" 0 # ... and its reference count - eval ${__farr_gvrname}_C=1 + setvar "${__farr_gvrname}_C" 1 # And associate the token with the array name - eval "${__farr_name}=\"\${_farr_array_token_prefix}\${__farr_token}\"" + setvar "${__farr_name}" "${_farr_array_token_prefix}${__farr_token}" # # When there are values to populate the array with. @@ -613,11 +613,11 @@ esac __farr_gvrname="${_farr_array_prefix}${__farr_token}" - eval __farr_len=\$\{${__farr_gvrname}__:+SET\} + eval __farr_len=\"\$\{"${__farr_gvrname}"__:+SET\}\" [ -z "${__farr_len}" ] && _farr_fatal "farray \`${__farr_name:-"${__farr_gm_name_or_value}"}' not created properly: no storage for token \`${__farr_token}'" - eval __farr_tmp_refcount=\$\{${__farr_gvrname}_C:+SET\} + eval __farr_tmp_refcount=\"\$\{"${__farr_gvrname}"_C:+SET\}\" [ -z "${__farr_tmp_refcount}" ] && _farr_fatal "farray \`${__farr_name:-"${__farr_gm_name_or_value}"}' not created properly: no refcnt for token \`${__farr_token}'" - eval __farr_len=\"\$\{${__farr_gvrname}__\}\" + eval __farr_len=\"\$\{"${__farr_gvrname}"__\}\" return 0 } @@ -683,17 +683,17 @@ esac __farr_gvrname="${_farr_array_prefix}${__farr_token}" - eval __farr_len=\$\{${__farr_gvrname}__:+SET\} + eval __farr_len=\"\$\{"${__farr_gvrname}"__:+SET\}\" if [ -z "${__farr_len}" ] ; then _farr_err "farray \`${__farr_name:-"${__farr_gm_name_or_value}"}' not created properly: no storage for token \`${__farr_token}'" return 1 fi - eval __farr_tmp_refcount=\$\{${__farr_gvrname}_C:+SET\} + eval __farr_tmp_refcount=\"\$\{"${__farr_gvrname}"_C:+SET\}\" if [ -z "${__farr_tmp_refcount}" ] ; then _farr_err "farray \`${__farr_name:-"${__farr_gm_name_or_value}"}' not created properly: no refcnt for token \`${__farr_token}'" return 1 fi - eval __farr_len=\"\$\{${__farr_gvrname}__\}\" + eval __farr_len=\"\$\{"${__farr_gvrname}"__\}\" return 0 } @@ -764,11 +764,11 @@ esac __farr_gvrname="${_farr_array_prefix}${__farr_token}" - eval __farr_len=\$\{${__farr_gvrname}__:+SET\} + eval __farr_len=\"\$\{"${__farr_gvrname}"__:+SET\}\" [ -z "${__farr_len}" ] && return 1 - eval __farr_tmp_refcount=\$\{${__farr_gvrname}_C:+SET\} + eval __farr_tmp_refcount=\"\$\{"${__farr_gvrname}"_C:+SET\}\" [ -z "${__farr_tmp_refcount}" ] && return 1 - eval __farr_len=\"\$\{${__farr_gvrname}__\}\" + eval __farr_len=\"\$\{"${__farr_gvrname}"__\}\" return 0 } @@ -789,7 +789,7 @@ [ -z "${__farr_varname}" ] && _farr_fatal "missing variable name" shift _farr_array_get_meta "$@" - eval "${__farr_varname}"=${__farr_len} + setvar "${__farr_varname}" "${__farr_len}" } @@ -809,8 +809,8 @@ farray_print_length() { local __farr_vn - ( farray_length __farr_vn "$@" && printf "%s" "${__farr_vn}"; ) \ - || printf "%s" "-1" + ( farray_length __farr_vn "$@" && printf '%s' "${__farr_vn}"; ) \ + || printf '%s' "-1" } @@ -838,15 +838,15 @@ # backslashes and single quotes. # _farr_acquire_object "${__farr_newval}" - eval ${__farr_gvrname}_${__farr_len_1}=\"\$\{__farr_newval\}\" + setvar "${__farr_gvrname}_${__farr_len_1}" "${__farr_newval}" # the implementation below line does not escape properly # eval ${__farr_gvrname}_${__farr_len_1}="\"${__farr_value}\"" # Set new array length # ... persistently in the array data storage - eval ${__farr_gvrname}__=${__farr_len_1} + setvar "${__farr_gvrname}__" "${__farr_len_1}" # ... and locally - __farr_len=${__farr_len_1} + __farr_len="${__farr_len_1}" done } @@ -873,24 +873,24 @@ _farr_array_get_meta "$@" _farr_make_index __farr_index "${2-}" "${__farr_len}" # first check - [ ${__farr_index} -lt 1 ] && _farr_fatal "index must be >= 1" + [ "${__farr_index}" -lt 1 ] && _farr_fatal "index must be >= 1" __farr_value="${3-}" # For proper quoting: see farray_append - if [ \( ${__farr_index} -ge 1 \) -a \( ${__farr_index} -le ${__farr_len} \) ]; then + if [ \( "${__farr_index}" -ge 1 \) -a \( "${__farr_index}" -le "${__farr_len}" \) ]; then _farr_acquire_object "${__farr_value}" # replace a value at an existing index - eval __farr_old_value=\"\$\{${__farr_gvrname}_${__farr_index}\}\" + eval __farr_old_value=\"\$\{"${__farr_gvrname}"_"${__farr_index}"\}\" _farr_release_object "${__farr_old_value}" - eval ${__farr_gvrname}_${__farr_index}=\"\$\{__farr_value\}\" + setvar "${__farr_gvrname}_${__farr_index}" "${__farr_value}" else __farr_len_1=$((__farr_len + 1)) - if [ ${__farr_index} -eq ${__farr_len_1} ]; then + if [ "${__farr_index}" -eq "${__farr_len_1}" ]; then _farr_acquire_object "${__farr_value}" # append value - eval ${__farr_gvrname}_${__farr_len_1}=\"\$\{__farr_value\}\" + setvar "${__farr_gvrname}_${__farr_len_1}" "${__farr_value}" # and set new length - eval ${__farr_gvrname}__=${__farr_len_1} + setvar "${__farr_gvrname}__" "${__farr_len_1}" else _farr_fatal "array index out of bounds (cannot create holes)" fi @@ -918,13 +918,13 @@ _farr_array_get_meta "$@" _farr_make_index __farr_index "${2-}" "${__farr_len}" # check index range - if [ \( "${__farr_index}" -lt 1 \) -o \( "${__farr_index}" -gt ${__farr_len} \) ]; then + if [ \( "${__farr_index}" -lt 1 \) -o \( "${__farr_index}" -gt "${__farr_len}" \) ]; then _farr_fatal "array index out of bounds" fi - eval __farr_get_value=\"\$\{${__farr_gvrname}_${__farr_index}\}\" + eval __farr_get_value=\"\$\{"${__farr_gvrname}"_"${__farr_index}"\}\" _farr_acquire_object "${__farr_get_value}" - eval "${__farr_varname}"=\"\$\{__farr_get_value\}\" + setvar "${__farr_varname}" "${__farr_get_value}" } @@ -957,13 +957,13 @@ _farr_array_get_meta "$@" _farr_make_index __farr_index "${2-}" "${__farr_len}" # check index range - if [ \( "${__farr_index}" -lt 1 \) -o \( "${__farr_index}" -gt ${__farr_len} \) ]; then + if [ \( "${__farr_index}" -lt 1 \) -o \( "${__farr_index}" -gt "${__farr_len}" \) ]; then return 1 fi - eval __farr_get_value=\"\$\{${__farr_gvrname}_${__farr_index}\}\" + eval __farr_get_value=\"\$\{"${__farr_gvrname}"_"${__farr_index}"\}\" _farr_acquire_object "${__farr_get_value}" - eval "${__farr_varname}"=\"\$\{__farr_get_value\}\" + setvar "${__farr_varname}" "${__farr_get_value}" return 0 } @@ -984,25 +984,25 @@ _farr_array_get_meta "$@" _farr_make_index __farr_index "${2-}" "${__farr_len}" # check index range - if [ \( "${__farr_index}" -lt 1 \) -o \( "${__farr_index}" -gt ${__farr_len} \) ]; then + if [ \( "${__farr_index}" -lt 1 \) -o \( "${__farr_index}" -gt "${__farr_len}" \) ]; then _farr_fatal "array index out of bounds" fi # Release the item at index - eval __farr_del_value=\"\$\{${__farr_gvrname}_${__farr_index}\}\" + eval __farr_del_value=\"\$\{"${__farr_gvrname}"_"${__farr_index}"\}\" _farr_release_object "${__farr_del_value}" # Move all other items down by one - __farr_idx=${__farr_index} - while [ ${__farr_idx} -lt ${__farr_len} ]; do + __farr_idx="${__farr_index}" + while [ "${__farr_idx}" -lt "${__farr_len}" ]; do # copy the following value to the current index - eval ${__farr_gvrname}_${__farr_idx}=\"\$\{${__farr_gvrname}_$((__farr_idx + 1))\}\" + eval "${__farr_gvrname}"_"${__farr_idx}"=\"\$\{"${__farr_gvrname}"_$((__farr_idx + 1))\}\" __farr_idx=$((__farr_idx + 1)) done # Drop the last item - eval unset ${__farr_gvrname}_${__farr_idx} + eval unset "${__farr_gvrname}"_"${__farr_idx}" # Set the new length - eval ${__farr_gvrname}__=$((__farr_len - 1)) + setvar "${__farr_gvrname}__" $((__farr_len - 1)) } @@ -1114,73 +1114,73 @@ __farr_length="$((__farr_l_len - __farr_index + 1))" else _farr_is_decimal_number "${__farr_length}" || _farr_fatal "given length is not a valid number" - [ \( "${__farr_length}" -lt 0 \) -o \( "${__farr_length}" -gt "$((__farr_l_len - __farr_index + 1))" \) ] && _farr_fatal "length out of valid range" + [ \( "${__farr_length}" -lt 0 \) -o \( "${__farr_length}" -gt $((__farr_l_len - __farr_index + 1)) \) ] && _farr_fatal "length out of valid range" fi - if [ ${__farr_length} -eq ${__farr_r_len} ]; then + if [ "${__farr_length}" -eq "${__farr_r_len}" ]; then # Just replace __farr_off=0 - while [ ${__farr_off} -lt ${__farr_length} ]; do - eval __farr_v=\"\$\{${__farr_l_gvrname}_$((__farr_index + __farr_off))\}\" + while [ "${__farr_off}" -lt "${__farr_length}" ]; do + eval __farr_v=\"\$\{"${__farr_l_gvrname}"_$((__farr_index + __farr_off))\}\" if [ -n "${__farr_del_array}" ]; then farray_append "${__farr_del_array}" "${__farr_v}" fi _farr_release_object "${__farr_v}" - eval __farr_v=\"\$\{${__farr_r_gvrname}_$((__farr_off + 1))\}\" + eval __farr_v=\"\$\{"${__farr_r_gvrname}"_$((__farr_off + 1))\}\" _farr_acquire_object "${__farr_v}" - eval ${__farr_l_gvrname}_$((__farr_index + __farr_off))=\"\$\{__farr_v\}\" + setvar "${__farr_l_gvrname}"_$((__farr_index + __farr_off)) "${__farr_v}" __farr_off=$((__farr_off + 1)) done - elif [ ${__farr_length} -gt ${__farr_r_len} ]; then + elif [ "${__farr_length}" -gt "${__farr_r_len}" ]; then # More to delete than to copy: the resulting array shrinks __farr_delta=$((__farr_length - __farr_r_len)) __farr_off=0 - while [ ${__farr_off} -lt ${__farr_r_len} ]; do - eval __farr_v=\"\$\{${__farr_l_gvrname}_$((__farr_index + __farr_off))\}\" + while [ "${__farr_off}" -lt "${__farr_r_len}" ]; do + eval __farr_v=\"\$\{"${__farr_l_gvrname}"_$((__farr_index + __farr_off))\}\" if [ -n "${__farr_del_array}" ]; then farray_append "${__farr_del_array}" "${__farr_v}" fi _farr_release_object "${__farr_v}" - eval __farr_v=\"\$\{${__farr_r_gvrname}_$((__farr_off + 1))\}\" + eval __farr_v=\"\$\{"${__farr_r_gvrname}"_$((__farr_off + 1))\}\" _farr_acquire_object "${__farr_v}" - eval ${__farr_l_gvrname}_$((__farr_index + __farr_off))=\"\$\{__farr_v\}\" + setvar "${__farr_l_gvrname}"_$((__farr_index + __farr_off)) "${__farr_v}" __farr_off=$((__farr_off + 1)) done # Copy / unset the rest that is to delete - while [ ${__farr_off} -lt ${__farr_length} ]; do - eval __farr_v=\"\$\{${__farr_l_gvrname}_$((__farr_index + __farr_off))\}\" + while [ "${__farr_off}" -lt "${__farr_length}" ]; do + eval __farr_v=\"\$\{"${__farr_l_gvrname}"_$((__farr_index + __farr_off))\}\" if [ -n "${__farr_del_array}" ]; then farray_append "${__farr_del_array}" "${__farr_v}" fi _farr_release_object "${__farr_v}" - eval unset ${__farr_l_gvrname}_$((__farr_index + __farr_off)) + eval unset "${__farr_l_gvrname}"_$((__farr_index + __farr_off)) __farr_off=$((__farr_off + 1)) done # Move the rest -- here no refcount changes __farr_src_idx=$((__farr_index + __farr_length)) __farr_dst_idx=$((__farr_index + __farr_r_len)) - while [ ${__farr_src_idx} -le ${__farr_l_len} ]; do - eval __farr_v=\"\$\{${__farr_l_gvrname}_${__farr_src_idx}\}\" - eval ${__farr_l_gvrname}_${__farr_dst_idx}=\"\$\{__farr_v\}\" - eval unset ${__farr_l_gvrname}_${__farr_src_idx} + while [ "${__farr_src_idx}" -le "${__farr_l_len}" ]; do + eval __farr_v=\"\$\{"${__farr_l_gvrname}"_"${__farr_src_idx}"\}\" + setvar "${__farr_l_gvrname}"_"${__farr_dst_idx}" "${__farr_v}" + eval unset "${__farr_l_gvrname}"_"${__farr_src_idx}" __farr_src_idx=$((__farr_src_idx + 1)) __farr_dst_idx=$((__farr_dst_idx + 1)) done # Adjust the length - eval ${__farr_l_gvrname}__=$((__farr_l_len - __farr_delta)) + setvar "${__farr_l_gvrname}__" $((__farr_l_len - __farr_delta)) else # More to copy than to delete: the resulting array grows __farr_delta=$((__farr_r_len - __farr_length)) __farr_off=0 - while [ ${__farr_off} -lt ${__farr_length} ]; do - eval __farr_v=\"\$\{${__farr_l_gvrname}_$((__farr_index + __farr_off))\}\" + while [ "${__farr_off}" -lt "${__farr_length}" ]; do + eval __farr_v=\"\$\{"${__farr_l_gvrname}"_$((__farr_index + __farr_off))\}\" if [ -n "${__farr_del_array}" ]; then farray_append "${__farr_del_array}" "${__farr_v}" fi _farr_release_object "${__farr_v}" - eval __farr_v=\"\$\{${__farr_r_gvrname}_$((__farr_off + 1))\}\" + eval __farr_v=\"\$\{"${__farr_r_gvrname}"_$((__farr_off + 1))\}\" _farr_acquire_object "${__farr_v}" - eval ${__farr_l_gvrname}_$((__farr_index + __farr_off))=\"\$\{__farr_v\}\" + setvar "${__farr_l_gvrname}"_$((__farr_index + __farr_off)) "${__farr_v}" __farr_off=$((__farr_off + 1)) done # @@ -1189,9 +1189,9 @@ # __farr_src_idx=${__farr_l_len} __farr_dst_idx=$((__farr_src_idx + __farr_delta)) - while [ ${__farr_src_idx} -ge $((__farr_index + __farr_length)) ]; do - eval __farr_v=\"\$\{${__farr_l_gvrname}_${__farr_src_idx}\}\" - eval ${__farr_l_gvrname}_${__farr_dst_idx}=\"\$\{__farr_v\}\" + while [ "${__farr_src_idx}" -ge $((__farr_index + __farr_length)) ]; do + eval __farr_v=\"\$\{"${__farr_l_gvrname}"_"${__farr_src_idx}"\}\" + setvar "${__farr_l_gvrname}"_"${__farr_dst_idx}" "${__farr_v}" __farr_src_idx=$((__farr_src_idx - 1)) __farr_dst_idx=$((__farr_dst_idx - 1)) done @@ -1201,14 +1201,14 @@ # NOTE: The offset variable __farr_off from above is NOT changed in # between and valid here! # - while [ ${__farr_off} -lt ${__farr_r_len} ]; do - eval __farr_v=\"\$\{${__farr_r_gvrname}_$((__farr_off + 1))\}\" + while [ "${__farr_off}" -lt "${__farr_r_len}" ]; do + eval __farr_v=\"\$\{"${__farr_r_gvrname}"_$((__farr_off + 1))\}\" _farr_acquire_object "${__farr_v}" - eval ${__farr_l_gvrname}_$((__farr_index + __farr_off))=\"\$\{__farr_v\}\" + setvar "${__farr_l_gvrname}"_$((__farr_index + __farr_off)) "${__farr_v}" __farr_off=$((__farr_off + 1)) done # Adjust the length - eval ${__farr_l_gvrname}__=$((__farr_l_len + __farr_delta)) + setvar "${__farr_l_gvrname}"__ $((__farr_l_len + __farr_delta)) fi return 0 } @@ -1250,35 +1250,35 @@ __farr_idx_1=1 if [ "${__farr_idx_1}" -le "${__farr_len_1}" ]; then - eval __farr_item_1=\"\$\{${__farr_gvrname_1}_${__farr_idx_1}\}\" + eval __farr_item_1=\"\$\{"${__farr_gvrname_1}"_"${__farr_idx_1}"\}\" fi __farr_idx_2=1 if [ "${__farr_idx_2}" -le "${__farr_len_2}" ]; then - eval __farr_item_2=\"\$\{${__farr_gvrname_2}_${__farr_idx_2}\}\" + eval __farr_item_2=\"\$\{"${__farr_gvrname_2}"_"${__farr_idx_2}"\}\" fi while [ \( "${__farr_idx_1}" -le "${__farr_len_1}" \) -a \( "${__farr_idx_2}" -le "${__farr_len_2}" \) ]; do if [ \( "${__farr_item_1}" '<' "${__farr_item_2}" \) -o \( "${__farr_item_1}" '=' "${__farr_item_2}" \) ] ; then farray_append "${__farr_result}" "${__farr_item_1}" __farr_idx_1=$((__farr_idx_1 + 1)) if [ "${__farr_idx_1}" -le "${__farr_len_1}" ]; then - eval __farr_item_1=\"\$\{${__farr_gvrname_1}_${__farr_idx_1}\}\" + eval __farr_item_1=\"\$\{"${__farr_gvrname_1}"_"${__farr_idx_1}"\}\" fi else farray_append "${__farr_result}" "${__farr_item_2}" __farr_idx_2=$((__farr_idx_2 + 1)) if [ "${__farr_idx_2}" -le "${__farr_len_2}" ]; then - eval __farr_item_2=\"\$\{${__farr_gvrname_2}_${__farr_idx_2}\}\" + eval __farr_item_2=\"\$\{"${__farr_gvrname_2}"_"${__farr_idx_2}"\}\" fi fi done # Only one of the two while-loops below will be entered while [ "${__farr_idx_1}" -le "${__farr_len_1}" ]; do - eval __farr_item_1=\"\$\{${__farr_gvrname_1}_${__farr_idx_1}\}\" + eval __farr_item_1=\"\$\{"${__farr_gvrname_1}"_"${__farr_idx_1}"\}\" farray_append "${__farr_result}" "${__farr_item_1}" __farr_idx_1=$((__farr_idx_1 + 1)) done while [ "${__farr_idx_2}" -le "${__farr_len_2}" ]; do - eval __farr_item_2=\"\$\{${__farr_gvrname_2}_${__farr_idx_2}\}\" + eval __farr_item_2=\"\$\{"${__farr_gvrname_2}"_"${__farr_idx_2}"\}\" farray_append "${__farr_result}" "${__farr_item_2}" __farr_idx_2=$((__farr_idx_2 + 1)) done @@ -1300,15 +1300,15 @@ _farr_array_get_meta "$@" __farr_idx=1 - while [ ${__farr_idx} -le ${__farr_len} ]; do - eval __farr_del_value=\"\$\{${__farr_gvrname}_${__farr_idx}\}\" + while [ "${__farr_idx}" -le "${__farr_len}" ]; do + eval __farr_del_value=\"\$\{"${__farr_gvrname}"_"${__farr_idx}"\}\" _farr_release_object "${__farr_del_value}" - eval unset ${__farr_gvrname}_${__farr_idx} + eval unset "${__farr_gvrname}"_"${__farr_idx}" __farr_idx=$((__farr_idx + 1)) done # Length is now zero - eval ${__farr_gvrname}__=0 + setvar "${__farr_gvrname}"__ 0 } @@ -1339,9 +1339,9 @@ # Note that the existence of the reference count proper is already # checked by `_farr_array_tryget_meta`. # - eval __farr_refcnt=\$\{${__farr_gvrname}_C\} + eval __farr_refcnt=\"\$\{"${__farr_gvrname}"_C\}\" __farr_refcnt=$((__farr_refcnt - 1)) - eval ${__farr_gvrname}_C=\$\{__farr_refcnt\} + setvar "${__farr_gvrname}"_C "${__farr_refcnt}" if [ "${__farr_refcnt}" -ne 0 ] ; then # Clean out the array name from the token always [ -n "${__farr_name}" ] && eval "${__farr_name}=''" @@ -1350,19 +1350,19 @@ # Remove "storage" because the reference count is 0 __farr_idx=1 - while [ ${__farr_idx} -le ${__farr_len} ]; do - eval __farr_del_value=\"\$\{${__farr_gvrname}_${__farr_idx}\}\" + while [ "${__farr_idx}" -le "${__farr_len}" ]; do + eval __farr_del_value=\"\$\{"${__farr_gvrname}"_"${__farr_idx}"\}\" _farr_release_object "${__farr_del_value}" - eval unset ${__farr_gvrname}_${__farr_idx} + eval unset "${__farr_gvrname}"_"${__farr_idx}" __farr_idx=$((__farr_idx + 1)) done # Remove length itself ... - eval unset ${__farr_gvrname}__ + eval unset "${__farr_gvrname}__" # ... and the reference count - eval unset ${__farr_gvrname}_C + eval unset "${__farr_gvrname}_C" # Clean out the array name from the token - [ -n "${__farr_name}" ] && eval "${__farr_name}=''" + [ -n "${__farr_name}" ] && setvar "${__farr_name}" '' return 0 } @@ -1414,8 +1414,8 @@ [ $# -lt 1 ] && _farr_fatal "no search value given" for __farr_searched_value in "$@"; do __farr_idx=1 - while [ ${__farr_idx} -le ${__farr_len} ]; do - eval __farr_existing_value=\"\$\{${__farr_gvrname}_${__farr_idx}\}\" + while [ "${__farr_idx}" -le "${__farr_len}" ]; do + eval __farr_existing_value=\"\$\{"${__farr_gvrname}"_"${__farr_idx}"\}\" [ "${__farr_existing_value}" = "${__farr_searched_value}" ] && return 0 __farr_idx=$((__farr_idx + 1)) done @@ -1462,19 +1462,19 @@ __farr_start="${3-}" [ -z "${__farr_start}" ] && __farr_start=1 _farr_make_index __farr_start "${__farr_start}" "${__farr_len}" - [ ${__farr_start} -lt 1 ] && _farr_fatal "start index must be >= 1" + [ "${__farr_start}" -lt 1 ] && _farr_fatal "start index must be >= 1" __farr_end="${4-}" [ -z "${__farr_end}" ] && __farr_end="${__farr_len}" _farr_make_index __farr_end "${__farr_end}" "${__farr_len}" - [ ${__farr_end} -lt 1 ] && [ ${__farr_len} -gt 0 ] && _farr_fatal "end index must be >= 1" - [ ${__farr_end} -gt "${__farr_len}" ] && _farr_fatal "end index exceeds array length" - - __farr_cur_find_idx=${__farr_start} - while [ ${__farr_cur_find_idx} -le ${__farr_end} ]; do - eval __farr_existing_value=\"\$\{${__farr_gvrname}_${__farr_cur_find_idx}\}\" + [ "${__farr_end}" -lt 1 ] && [ "${__farr_len}" -gt 0 ] && _farr_fatal "end index must be >= 1" + [ "${__farr_end}" -gt "${__farr_len}" ] && _farr_fatal "end index exceeds array length" + + __farr_cur_find_idx="${__farr_start}" + while [ "${__farr_cur_find_idx}" -le "${__farr_end}" ]; do + eval __farr_existing_value=\"\$\{"${__farr_gvrname}"_"${__farr_cur_find_idx}"\}\" if [ "${__farr_existing_value}" = "${__farr_searched_value}" ]; then #printf "%d" ${__farr_cur_find_idx} - eval "${__farr_varname}"=${__farr_cur_find_idx} + setvar "${__farr_varname}" "${__farr_cur_find_idx}" return 0 fi __farr_cur_find_idx=$((__farr_cur_find_idx + 1)) @@ -1503,12 +1503,12 @@ _farr_array_get_meta "$@" __farr_pos=1 - while [ ${__farr_pos} -le "${__farr_len}" ]; do - if [ ${__farr_pos} -eq 1 ]; then + while [ "${__farr_pos}" -le "${__farr_len}" ]; do + if [ "${__farr_pos}" -eq 1 ]; then __farr_pos=$((__farr_pos + 1)) else - eval __farr_val=\"\$\{${__farr_gvrname}_${__farr_pos}\}\" - eval __farr_val_1=\"\$\{${__farr_gvrname}_$((__farr_pos - 1))\}\" + eval __farr_val=\"\$\{"${__farr_gvrname}"_"${__farr_pos}"\}\" + eval __farr_val_1=\"\$\{"${__farr_gvrname}"_$((__farr_pos - 1))\}\" if [ "${__farr_val}" '>' "${__farr_val_1}" ] || [ "${__farr_val}" '=' "${__farr_val_1}" ] ; then __farr_pos=$((__farr_pos + 1)) else @@ -1563,24 +1563,24 @@ __farr_start="${3-}" [ -z "${__farr_start}" ] && __farr_start=1 _farr_make_index __farr_start "${__farr_start}" "${__farr_len}" - [ ${__farr_start} -lt 1 ] && _farr_fatal "start index must be >= 1" + [ "${__farr_start}" -lt 1 ] && _farr_fatal "start index must be >= 1" __farr_end="${4-}" [ -z "${__farr_end}" ] && __farr_end="${__farr_len}" _farr_make_index __farr_end "${__farr_end}" "${__farr_len}" - [ ${__farr_end} -lt 1 ] && [ ${__farr_len} -gt 0 ] && _farr_fatal "end index must be >= 1" - [ ${__farr_end} -gt "${__farr_len}" ] && _farr_fatal "end index exceeds array length" + [ "${__farr_end}" -lt 1 ] && [ "${__farr_len}" -gt 0 ] && _farr_fatal "end index must be >= 1" + [ "${__farr_end}" -gt "${__farr_len}" ] && _farr_fatal "end index exceeds array length" __farr_lo="${__farr_start}" __farr_hi="${__farr_end}" while [ "${__farr_lo}" -le "${__farr_hi}" ]; do __farr_mid=$((__farr_lo + ((__farr_hi-__farr_lo)/2) )) - eval __farr_mid_value=\"\$\{${__farr_gvrname}_${__farr_mid}\}\" + eval __farr_mid_value=\"\$\{"${__farr_gvrname}"_"${__farr_mid}"\}\" if [ "${__farr_searched_value}" '<' "${__farr_mid_value}" ]; then __farr_hi=$((__farr_mid - 1)) elif [ "${__farr_searched_value}" '>' "${__farr_mid_value}" ]; then __farr_lo=$((__farr_mid + 1)) else # found - eval "${__farr_varname}"=${__farr_mid} + setvar "${__farr_varname}" "${__farr_mid}" return 0 fi done @@ -1628,14 +1628,14 @@ __farr_hi=$((__farr_len + 1)) while [ "${__farr_lo}" -lt "${__farr_hi}" ]; do __farr_mid=$((__farr_lo + ((__farr_hi-__farr_lo)/2) )) - eval __farr_mid_value=\"\$\{${__farr_gvrname}_${__farr_mid}\}\" + eval __farr_mid_value=\"\$\{"${__farr_gvrname}"_"${__farr_mid}"\}\" if [ "${__farr_searched_value}" '>' "${__farr_mid_value}" ]; then __farr_lo=$((__farr_mid + 1)) else __farr_hi=${__farr_mid} fi done - eval "${__farr_varname}"=${__farr_lo} + setvar "${__farr_varname}" "${__farr_lo}" return 0 } @@ -1663,17 +1663,17 @@ __farr_separator="${2-" "}" - __farr_real_separator="" - __farr_command="" + __farr_real_separator='' + __farr_command='' __farr_join_idx=1 - while [ ${__farr_join_idx} -le ${__farr_len} ]; do - eval __farr_current_value=\"\$\{${__farr_gvrname}_${__farr_join_idx}\}\" + while [ "${__farr_join_idx}" -le "${__farr_len}" ]; do + eval __farr_current_value=\"\$\{"${__farr_gvrname}"_"${__farr_join_idx}"\}\" __farr_command="${__farr_command}${__farr_real_separator}${__farr_current_value}" __farr_real_separator="${__farr_separator}" __farr_join_idx=$((__farr_join_idx + 1)) done - eval "${__farr_varname}"=\"\$\{__farr_command\}\" + setvar "${__farr_varname}" "${__farr_command}" } @@ -1707,17 +1707,17 @@ _farr_array_get_meta "$@" - __farr_real_separator="" - __farr_command="" + __farr_real_separator='' + __farr_command='' __farr_join_idx=1 - while [ ${__farr_join_idx} -le ${__farr_len} ]; do - eval __farr_current_value=\"\$\{${__farr_gvrname}_${__farr_join_idx}\}\" + while [ "${__farr_join_idx}" -le "${__farr_len}" ]; do + eval __farr_current_value=\"\$\{"${__farr_gvrname}"_"${__farr_join_idx}"\}\" __farr_command="${__farr_command}${__farr_real_separator}$(_farr_quote_for_eval "${__farr_current_value}")" __farr_real_separator=' ' __farr_join_idx=$((__farr_join_idx + 1)) done - eval "${__farr_varname}"=\"\$\{__farr_command\}\" + setvar "${__farr_varname}" "${__farr_command}" } @@ -1744,12 +1744,12 @@ _farr_array_get_meta "$@" __farr_join_idx=1 - while [ ${__farr_join_idx} -le ${__farr_len} ]; do - eval __farr_current_value=\"\$\{${__farr_gvrname}_${__farr_join_idx}\}\" - if [ ${__farr_join_idx} -gt 1 ]; then - printf "%s" " " + while [ "${__farr_join_idx}" -le "${__farr_len}" ]; do + eval __farr_current_value=\"\$\{"${__farr_gvrname}"_"${__farr_join_idx}"\}\" + if [ "${__farr_join_idx}" -gt 1 ]; then + printf '%s' " " fi - printf "%s" "$(_farr_quote_for_eval "${__farr_current_value}")" + printf '%s' "$(_farr_quote_for_eval "${__farr_current_value}")" __farr_join_idx=$((__farr_join_idx + 1)) done } @@ -1791,12 +1791,12 @@ __farr_r_gvrname="${__farr_gvrname}" __farr_r_len="${__farr_len}" - [ ${__farr_l_len} -ne ${__farr_r_len} ] && return 1 + [ "${__farr_l_len}" -ne "${__farr_r_len}" ] && return 1 __farr_idx=1 - while [ ${__farr_idx} -le ${__farr_l_len} ]; do - eval __farr_vl=\"\$\{${__farr_l_gvrname}_${__farr_idx}\}\" - eval __farr_vr=\"\$\{${__farr_r_gvrname}_${__farr_idx}\}\" + while [ "${__farr_idx}" -le "${__farr_l_len}" ]; do + eval __farr_vl=\"\$\{"${__farr_l_gvrname}"_"${__farr_idx}"\}\" + eval __farr_vr=\"\$\{"${__farr_r_gvrname}"_"${__farr_idx}"\}\" [ "${__farr_vl}" != "${__farr_vr}" ] && return 1 __farr_idx=$((__farr_idx + 1)) done @@ -1843,13 +1843,13 @@ shift 2 __farr_idx=1 - while [ ${__farr_idx} -le ${__farr_len} ]; do - eval __farr_feval=\"\$\{${__farr_gvrname}_${__farr_idx}\}\" + while [ "${__farr_idx}" -le "${__farr_len}" ]; do + eval __farr_feval=\"\$\{"${__farr_gvrname}"_"${__farr_idx}"\}\" _farr_acquire_object "${__farr_feval}" eval "${__farr_callback} \"\${__farr_name:-\"\${__farr_gm_name_or_value}\"}\" \"\${__farr_idx}\" \"\${__farr_feval}\" \"\$@\"" __farr_rv=$? _farr_release_object "${__farr_feval}" - [ ${__farr_rv} -ne 0 ] && return ${__farr_rv} + [ "${__farr_rv}" -ne 0 ] && return "${__farr_rv}" __farr_idx=$((__farr_idx + 1)) done return 0 @@ -1874,14 +1874,14 @@ shift 2 - __farr_idx=${__farr_len} - while [ ${__farr_idx} -gt 0 ]; do - eval __farr_feval=\"\$\{${__farr_gvrname}_${__farr_idx}\}\" + __farr_idx="${__farr_len}" + while [ "${__farr_idx}" -gt 0 ]; do + eval __farr_feval=\"\$\{"${__farr_gvrname}"_"${__farr_idx}"\}\" _farr_acquire_object "${__farr_feval}" eval "${__farr_callback} \"\${__farr_name:-\"\${__farr_gm_name_or_value}\"}\" \"\${__farr_idx}\" \"\${__farr_feval}\" \"\$@\"" __farr_rv=$? _farr_release_object "${__farr_feval}" - [ ${__farr_rv} -ne 0 ] && return ${__farr_rv} + [ "${__farr_rv}" -ne 0 ] && return ${__farr_rv} __farr_idx=$((__farr_idx - 1)) done return 0 @@ -1929,7 +1929,7 @@ else printf "%sDEBUG: array with token \`%s' has length %s\\n" "${__farr_debug_indent}" "${__farr_token}" "${__farr_len}" 1>&2 fi - if [ ${__farr_len} -gt 0 ]; then + if [ "${__farr_len}" -gt 0 ]; then printf '%sDEBUG: the items:\n' "${__farr_debug_indent}" 1>&2 farray_for_each "${__farr_name_or_token}" _farr_debug_print_value "${__farr_debug_indent}" || true fi