# HG changeset patch # User Franz Glasner # Date 1728132389 -7200 # Node ID 47620b3c10803b21928154a84c121f39ceb8d745 # Parent b2757e72b5171150ac23971bb7d5364f7837b4fe farray.sh: Provide extra arguments that may be forwarded to all the "for each"-callbacks diff -r b2757e72b517 -r 47620b3c1080 share/local-bsdtools/farray.sh --- a/share/local-bsdtools/farray.sh Fri Oct 04 23:18:10 2024 +0200 +++ b/share/local-bsdtools/farray.sh Sat Oct 05 14:46:29 2024 +0200 @@ -1454,12 +1454,15 @@ #: - the array name #: - the current index #: - the element value at the current index +#: - all the extra arguments (`$3`, `$4`, ...) given as arguments are +#: forwarded also #: #: The iteration stops if the called function returns a falsy value. #: #: Args: #: $1 (str): The name of an existing array. #: $2 (str): The name of a function to be called with three arguments. +#: $3... (optional): Extra arguments forwared to `$2` also #: #: Warning: #: If the number of elements changes while being in `farray_for_each` then @@ -1477,9 +1480,11 @@ __farr_callback="${2-}" [ -z "${__farr_callback}" ] && _farr_fatal "missing callback function name" + shift 2 + __farr_idx=1 while [ ${__farr_idx} -le ${__farr_len} ]; do - eval "${__farr_callback} ${__farr_name} ${__farr_idx} \"\${${__farr_gvrname}_${__farr_idx}}\"" + eval "${__farr_callback} ${__farr_name} ${__farr_idx} \"\${${__farr_gvrname}_${__farr_idx}}\" \"\$@\"" __farr_rv=$? [ ${__farr_rv} -ne 0 ] && return ${__farr_rv} __farr_idx=$((__farr_idx + 1)) @@ -1500,9 +1505,11 @@ __farr_callback="${2-}" [ -z "${__farr_callback}" ] && _farr_fatal "missing callback function name" + shift 2 + __farr_idx=${__farr_len} while [ ${__farr_idx} -gt 0 ]; do - eval "${__farr_callback} ${__farr_name} ${__farr_idx} \"\${${__farr_gvrname}_${__farr_idx}}\"" + eval "${__farr_callback} ${__farr_name} ${__farr_idx} \"\${${__farr_gvrname}_${__farr_idx}}\" \"\$@\"" __farr_rv=$? [ ${__farr_rv} -ne 0 ] && return ${__farr_rv} __farr_idx=$((__farr_idx - 1)) @@ -2775,12 +2782,15 @@ #: - the element key at the current index #: - the element value at the current index #: - the current index +#: - all the extra arguments (`$3`, `$4`, ...) given as arguments are +#: forwarded also #: #: The iteration stops if the called function returns a falsy value. #: #: Args: #: $1 (str): The name of an existing array. #: $2 (str): The name of a function to be called with four arguments. +#: $3... (optional): Extra arguments forwared to `$2` also #: #: Warning: #: If the number of elements changes while being in `falist_for_each` then @@ -2798,6 +2808,8 @@ __farr_callback="${2-}" [ -z "${__farr_callback}" ] && _farr_fatal "missing callback function name" + shift 2 + __farr_feidx=1 while [ ${__farr_feidx} -le ${__farr_len} ]; do eval __farr_fekey=\"\$\{${__farr_keyname}_${__farr_feidx}+SET\}\" @@ -2806,7 +2818,7 @@ eval __farr_feval=\"\$\{${__farr_valname}_${__farr_feidx}+SET\}\" if [ -n "${__farr_feval}" ]; then eval __farr_feval=\"\$\{${__farr_valname}_${__farr_feidx}\}\" - eval "${__farr_callback} ${__farr_name} \"\${__farr_fekey}\" \"\${__farr_feval}\" ${__farr_feidx}" + eval "${__farr_callback} ${__farr_name} \"\${__farr_fekey}\" \"\${__farr_feval}\" ${__farr_feidx} \"\$@\"" __farr_rv=$? [ ${__farr_rv} -ne 0 ] && return ${__farr_rv} else