Mercurial > hgrepos > FreeBSD > ports > sysutils > local-bsdtools
changeset 742:5ba94d373199
farray.sh: FIX: allow proper token value usage for farray_splice(), farray_merge(), falist_keys(), falist_values() and falist_items()
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Tue, 08 Oct 2024 09:52:29 +0200 |
| parents | 446c175cfb48 |
| children | 6fcf7da87981 |
| files | share/local-bsdtools/farray.sh tests/farray-array.t |
| diffstat | 2 files changed, 27 insertions(+), 21 deletions(-) [+] |
line wrap: on
line diff
--- a/share/local-bsdtools/farray.sh Tue Oct 08 09:07:45 2024 +0200 +++ b/share/local-bsdtools/farray.sh Tue Oct 08 09:52:29 2024 +0200 @@ -987,10 +987,12 @@ #: farray_splice "" ARRAY 1 1 #: farray_splice() { + local __farr_del_array __farr_l_name __farr_index __farr_length + local __farr_r_name + local __farr_del_name __farr_del_token __farr_del_gvrname __farr_del_len - local __farr_l_name __farr_l_token __farr_l_gvrname __farr_l_len - local __farr_index __farr_length - local __farr_r_name __farr_r_token __farr_r_gvrname __farr_r_len + local __farr_l_token __farr_l_gvrname __farr_l_len + local __farr_r_token __farr_r_gvrname __farr_r_len # # Dynamically scoped variables for _farr_array_tryget_meta_nonfatal() @@ -1004,6 +1006,7 @@ __farr_del_name='' if [ -n "${1}" ] && _farr_array_tryget_meta "${1}"; then + __farr_del_array="${1}" __farr_del_name="${__farr_name}" __farr_del_token="${__farr_token}" __farr_del_gvrname="${__farr_gvrname}" @@ -1044,8 +1047,8 @@ __farr_off=0 while [ ${__farr_off} -lt ${__farr_length} ]; do eval __farr_v=\"\$\{${__farr_l_gvrname}_$((__farr_index + __farr_off))\}\" - if [ -n "${__farr_del_name}" ]; then - farray_append "${__farr_del_name}" "${__farr_v}" + 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))\}\" @@ -1059,8 +1062,8 @@ __farr_off=0 while [ ${__farr_off} -lt ${__farr_r_len} ]; do eval __farr_v=\"\$\{${__farr_l_gvrname}_$((__farr_index + __farr_off))\}\" - if [ -n "${__farr_del_name}" ]; then - farray_append "${__farr_del_name}" "${__farr_v}" + 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))\}\" @@ -1071,8 +1074,8 @@ # 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))\}\" - if [ -n "${__farr_del_name}" ]; then - farray_append "${__farr_del_name}" "${__farr_v}" + 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)) @@ -1097,8 +1100,8 @@ while [ ${__farr_off} -lt ${__farr_length} ]; do eval __farr_v=\"\$\{${__farr_l_gvrname}_$((__farr_index + __farr_off))\}\" - if [ -n "${__farr_del_name}" ]; then - farray_append "${__farr_del_name}" "${__farr_v}" + 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))\}\" @@ -2854,10 +2857,10 @@ #: $2 (str): The name of the alist from where to get the keys. #: falist_keys() { - local __farr_l_name __farr_r_name + local __farr_l_result __farr_r_name local __farr_r_token __farr_r_objname __farr_r_keyname __farr_r_valname __farr_r_len - local __farr_l_token __farr_l_gvrname __farr_l_len + local __farr_l_name __farr_l_token __farr_l_gvrname __farr_l_len local __farr_name __farr_token __farr_gvrname __farr_objname local __farr_keyname __farr_valname __farr_len @@ -2866,6 +2869,7 @@ # Try to get the array metadata here to provide an early error message [ $# -lt 1 ] && _ferr_fatal "missing target array" _farr_array_get_meta "$1" + __farr_l_result="$1" __farr_l_name="${__farr_name}" __farr_l_token="${__farr_token}" __farr_l_gvrname="${__farr_gvrname}" @@ -2884,7 +2888,7 @@ eval __farr_key=\"\$\{${__farr_r_keyname}_${__farr_idx}+SET\}\" if [ -n "${__farr_key}" ]; then eval __farr_key=\"\$\{${__farr_r_keyname}_${__farr_idx}\}\" - farray_append "${__farr_l_name}" "${__farr_key}" + farray_append "${__farr_l_result}" "${__farr_key}" else _farr_fatal "alist \`${__farr_r_name}': missing key index" fi @@ -2902,10 +2906,10 @@ #: $2 (str): The name of the alist from where to get the values. #: falist_values() { - local __farr_l_name __farr_r_name + local __farr_l_result __farr_r_name local __farr_r_token __farr_r_objname __farr_r_keyname __farr_r_valname __farr_r_len - local __farr_l_token __farr_l_gvrname __farr_l_len + local __farr_l_name __farr_l_token __farr_l_gvrname __farr_l_len local __farr_name __farr_token __farr_gvrname __farr_objname local __farr_keyname __farr_valname __farr_len @@ -2914,6 +2918,7 @@ # Try to get the array metadata here to provide an early error message [ $# -lt 1 ] && _ferr_fatal "missing target array" _farr_array_get_meta "$1" + __farr_l_result="$1" __farr_l_name="${__farr_name}" __farr_l_token="${__farr_token}" __farr_l_gvrname="${__farr_gvrname}" @@ -2932,7 +2937,7 @@ eval __farr_value=\"\$\{${__farr_r_valname}_${__farr_idx}+SET\}\" if [ -n "${__farr_value}" ]; then eval __farr_value=\"\$\{${__farr_r_valname}_${__farr_idx}\}\" - farray_append "${__farr_l_name}" "${__farr_value}" + farray_append "${__farr_l_result}" "${__farr_value}" else _farr_fatal "alist \`${__farr_r_name}': missing value index" fi @@ -2951,10 +2956,10 @@ #: $2 (str): The name of the alist from where to get the items. #: falist_items() { - local __farr_l_name __farr_r_name + local __farr_l_result __farr_r_name local __farr_r_token __farr_r_objname __farr_r_keyname __farr_r_valname __farr_r_len - local __farr_l_token __farr_l_gvrname __farr_l_len + local __farr_l_name __farr_l_token __farr_l_gvrname __farr_l_len local __farr_name __farr_token __farr_gvrname __farr_objname local __farr_keyname __farr_valname __farr_len @@ -2963,6 +2968,7 @@ # Try to get the array metadata here to provide an early error message [ $# -lt 1 ] && _ferr_fatal "missing target array" _farr_array_get_meta "$1" + __farr_l_result="$1" __farr_l_name="${__farr_name}" __farr_l_token="${__farr_token}" __farr_l_gvrname="${__farr_gvrname}" @@ -2984,7 +2990,7 @@ eval __farr_value=\"\$\{${__farr_r_valname}_${__farr_idx}+SET\}\" if [ -n "${__farr_value}" ]; then eval __farr_value=\"\$\{${__farr_r_valname}_${__farr_idx}\}\" - farray_append "${__farr_l_name}" "${__farr_key}" "${__farr_value}" + farray_append "${__farr_l_result}" "${__farr_key}" "${__farr_value}" else _farr_fatal "alist \`${__farr_r_name}': missing value index" fi
--- a/tests/farray-array.t Tue Oct 08 09:07:45 2024 +0200 +++ b/tests/farray-array.t Tue Oct 08 09:52:29 2024 +0200 @@ -356,7 +356,7 @@ $ farray_create DELETED $ farray_create INSERTED ' I 1 ' ' I 2 ' ' I 3 ' $ farray_create TEST ' v 1 ' ' v 2 ' ' v 3 ' ' v 4 ' ' v 5 ' ' v 6 ' ' v 7 ' ' v 8 ' ' v 9 ' - $ farray_splice DELETED TEST 1 "" INSERTED + $ farray_splice "$DELETED" TEST 1 "" "$INSERTED" $ farray_debug DELETED DEBUG: array `DELETED' has length 9 DEBUG: the items:
