changeset 514:5da57fa5009f

array.sh: REFACTOR: Rename all local variables to have a __farr_ prefix. This is to hinder name collisions when using "eval" with user-provided names -- many of them may be common: _l, l, _i, i, _idx, idx.
author Franz Glasner <fzglas.hg@dom66.de>
date Sun, 01 Sep 2024 13:58:01 +0200
parents fb4ee1fab046
children 7c2ffcc92df6
files share/local-bsdtools/array.sh
diffstat 1 files changed, 183 insertions(+), 183 deletions(-) [+]
line wrap: on
line diff
--- a/share/local-bsdtools/array.sh	Sun Sep 01 11:58:21 2024 +0200
+++ b/share/local-bsdtools/array.sh	Sun Sep 01 13:58:01 2024 +0200
@@ -94,24 +94,24 @@
 #:   Iff the array already exists.
 #:
 array_create() {
-    local _name
+    local __farr_name
 
-    local _gvrname _el _l
+    local __farr_gvrname __farr_el __farr_l
 
     [ $# -lt 1 ] && _farr_fatal "missing array name"
-    _name=$1
-    _gvrname=${_farr_global_prefix}$1
+    __farr_name=$1
+    __farr_gvrname=${_farr_global_prefix}$1
     shift
 
     # Check whether the variable already exists
-    eval _l=\${${_gvrname}__:-${_farr_unset}}
+    eval __farr_l=\${${__farr_gvrname}__:-${_farr_unset}}
 
-    [ "${_l}" != ${_farr_unset} ] && _farr_fatal "array \`${_name}' already exists"
+    [ "${__farr_l}" != ${_farr_unset} ] && _farr_fatal "array \`${__farr_name}' already exists"
     # Really create
-    eval ${_gvrname}__=0
+    eval ${__farr_gvrname}__=0
 
-    for _el in "$@"; do
-	array_append ${_name} "${_el}"
+    for __farr_el in "$@"; do
+	array_append ${__farr_name} "${__farr_el}"
     done
 }
 
@@ -135,7 +135,6 @@
 }
 
 
-
 #:
 #: Get the length of an array and put it into a variable
 #:
@@ -148,23 +147,23 @@
 #:   1 (falsy) if the array does not exist
 #:
 array_length() {
-    local _varname _name
+    local __farr_varname __farr_name
 
-    local _gvrname _l
+    local __farr_gvrname __farr_l
 
     [ $# -lt 1 ] && _farr_fatal "missing variable name"
-    _varname=$1
+    __farr_varname=$1
     [ $# -lt 2 ] && _farr_fatal "missing array name"
-    _name=$2
-    _gvrname=${_farr_global_prefix}$2
+    __farr_name=$2
+    __farr_gvrname=${_farr_global_prefix}$2
 
     # Check whether the variable already exists
-    eval _l=\${${_gvrname}__:-${_farr_unset}}
+    eval __farr_l=\${${__farr_gvrname}__:-${_farr_unset}}
 
-    if [ "${_l}" = ${_farr_unset} ]; then
+    if [ "${__farr_l}" = ${_farr_unset} ]; then
 	return 1
     else
-        eval ${_varname}=${_l}
+        eval ${__farr_varname}=${__farr_l}
         return 0
     fi
 }
@@ -181,15 +180,15 @@
 #:   If the array does not exist the output is -1.
 #:
 array_print_length() {
-    local _name
+    local __farr_name
 
-    local _vn
+    local __farr_vn
 
     [ $# -lt 1 ] && _farr_fatal "missing array name"
-    _name=$1
+    __farr_name=$1
 
-    if array_length _vn ${_name}; then
-        printf "%s" "${_vn}"
+    if array_length __farr_vn ${__farr_name}; then
+        printf "%s" "${__farr_vn}"
         return 0
     else
         printf "%s" "-1"
@@ -207,33 +206,33 @@
 #:                  will be appended.
 #:
 array_append() {
-    local _name _value
+    local __farr_name __farr_value
 
-    local _gvrname _l _l1
+    local __farr_gvrname __farr_l __farr_l_1
 
     [ $# -lt 1 ] && _farr_fatal "missing array name"
-    _name=$1
-    _gvrname=${_farr_global_prefix}$1
-    _value="${2-}"
+    __farr_name=$1
+    __farr_gvrname=${_farr_global_prefix}$1
+    __farr_value="${2-}"
 
     # Check whether the variable already exists
-    eval _l=\${${_gvrname}__:-${_farr_unset}}
-    if [ "${_l}" = ${_farr_unset} ]; then
-	_farr_fatal "array \`${_name}' does not exist"
+    eval __farr_l=\${${__farr_gvrname}__:-${_farr_unset}}
+    if [ "${__farr_l}" = ${_farr_unset} ]; then
+	_farr_fatal "array \`${__farr_name}' does not exist"
     fi
 
-    _l1=$((${_l} + 1))
+    __farr_l_1=$((${__farr_l} + 1))
 
     #
     # Set value
     # Escape properly: use $' ' and escape any backslashes and single quotes.
     #
-    eval ${_gvrname}_${_l1}=\$\'"$(_farr_quote_for_eval_dsq "${_value}")"\'
+    eval ${__farr_gvrname}_${__farr_l_1}=\$\'"$(_farr_quote_for_eval_dsq "${__farr_value}")"\'
     # the implementation below line does not escape properly
-    #   eval ${_gvrname}_${_l1}="\"${_value}\""
+    #   eval ${__farr_gvrname}_${__farr_l_1}="\"${__farr_value}\""
 
     # Set new array length
-    eval ${_gvrname}__=${_l1}
+    eval ${__farr_gvrname}__=${__farr_l_1}
 }
 
 
@@ -251,34 +250,34 @@
 #: is exactly the current length + 1.
 #:
 array_set() {
-    local _name _index _value
+    local __farr_name __farr_index __farr_value
 
-    local _gvrname _l _l1
+    local __farr_gvrname __farr_l __farr_l_1
 
     [ $# -lt 1 ] && _farr_fatal "missing array name"
-    _name=$1
-    _gvrname=${_farr_global_prefix}$1
+    __farr_name=$1
+    __farr_gvrname=${_farr_global_prefix}$1
     [ $# -lt 2 ] && _farr_fatal "missing array index"
-    _index=$2
-    _value="${3-}"
+    __farr_index=$2
+    __farr_value="${3-}"
 
     # Check whether the variable already exists
-    eval _l=\${${_gvrname}__:-${_farr_unset}}
-    if [ "${_l}" = ${_farr_unset} ]; then
-	_farr_fatal "array \`${_name}' does not exist"
+    eval __farr_l=\${${__farr_gvrname}__:-${_farr_unset}}
+    if [ "${__farr_l}" = ${_farr_unset} ]; then
+	_farr_fatal "array \`${__farr_name}' does not exist"
     fi
 
     # For proper quoting: see array_append
-    if [ \( ${_index} -ge 1 \) -a \( ${_index} -le ${_l} \) ]; then
+    if [ \( ${__farr_index} -ge 1 \) -a \( ${__farr_index} -le ${__farr_l} \) ]; then
         # replace a value at an existing index
-        eval ${_gvrname}_${_l}=\$\'"$(_farr_quote_for_eval_dsq "${_value}")"\'
+        eval ${__farr_gvrname}_${__farr_l}=\$\'"$(_farr_quote_for_eval_dsq "${__farr_value}")"\'
     else
-        _l1=$((${_l} + 1))
-        if [ ${_index} -eq ${_l1} ]; then
+        __farr_l_1=$((${__farr_l} + 1))
+        if [ ${__farr_index} -eq ${__farr_l_1} ]; then
             # append value
-            eval ${_gvrname}_${_l1}=\$\'"$(_farr_quote_for_eval_dsq "${_value}")"\'
+            eval ${__farr_gvrname}_${__farr_l_1}=\$\'"$(_farr_quote_for_eval_dsq "${__farr_value}")"\'
             # and set new length
-            eval ${_gvrname}__=${_l1}
+            eval ${__farr_gvrname}__=${__farr_l_1}
         else
             _farr_fatal "array index out of bounds (cannot create holes)"
         fi
@@ -295,30 +294,30 @@
 #:   $3 (int): The index
 #:
 array_get() {
-    local _varname _name _index
+    local __farr_varname __farr_name __farr_index
 
-    local _gvrname _l _value
+    local __farr_gvrname __farr_l
 
     [ $# -lt 1 ] && _farr_fatal "missing variable name"
-    _varname=$1
+    __farr_varname=$1
     [ $# -lt 2 ] && _farr_fatal "missing array name"
-    _name=$2
-    _gvrname=${_farr_global_prefix}$2
+    __farr_name=$2
+    __farr_gvrname=${_farr_global_prefix}$2
     [ $# -lt 3 ] && _farr_fatal "missing array index"
-    _index=$3
+    __farr_index=$3
 
     # Check whether the variable already exists
-    eval _l=\${${_gvrname}__:-${_farr_unset}}
-    if [ "${_l}" = ${_farr_unset} ]; then
-	_farr_fatal "array \`${_name}' does not exist"
+    eval __farr_l=\${${__farr_gvrname}__:-${_farr_unset}}
+    if [ "${__farr_l}" = ${_farr_unset} ]; then
+	_farr_fatal "array \`${__farr_name}' does not exist"
     fi
 
     # check index range
-    if [ \( "${_index}" -lt 1 \) -o \( "${_index}" -gt ${_l} \) ]; then
+    if [ \( "${__farr_index}" -lt 1 \) -o \( "${__farr_index}" -gt ${__farr_l} \) ]; then
 	_farr_fatal "array index out of bounds"
     fi
 
-    eval ${_varname}=\"\${${_gvrname}_${_index}}\"
+    eval ${__farr_varname}=\"\${${__farr_gvrname}_${__farr_index}}\"
 }
 
 
@@ -339,30 +338,30 @@
 #:   fatal and call `_farr_fatal` (i.e. `exit`).
 #:
 array_tryget() {
-    local _varname _name _index
+    local __farr_varname __farr_name __farr_index
 
-    local _gvrname _l _value
+    local __farr_gvrname __farr_l
 
     [ $# -lt 1 ] && _farr_fatal "missing variable name"
-    _varname=$1
+    __farr_varname=$1
     [ $# -lt 2 ] && _farr_fatal "missing array name"
-    _name=$2
-    _gvrname=${_farr_global_prefix}$2
+    __farr_name=$2
+    __farr_gvrname=${_farr_global_prefix}$2
     [ $# -lt 3 ] && _farr_fatal "missing array index"
-    _index=$3
+    __farr_index=$3
 
     # Check whether the variable already exists
-    eval _l=\${${_gvrname}__:-${_farr_unset}}
-    if [ "${_l}" = ${_farr_unset} ]; then
-	_farr_fatal "array \`${_name}' does not exist"
+    eval __farr_l=\${${__farr_gvrname}__:-${_farr_unset}}
+    if [ "${__farr_l}" = ${_farr_unset} ]; then
+	_farr_fatal "array \`${__farr_name}' does not exist"
     fi
 
     # check index range
-    if [ \( "${_index}" -lt 1 \) -o \( "${_index}" -gt ${_l} \) ]; then
+    if [ \( "${__farr_index}" -lt 1 \) -o \( "${__farr_index}" -gt ${__farr_l} \) ]; then
 	return 1
     fi
 
-    eval ${_varname}=\"\${${_gvrname}_${_index}}\"
+    eval ${__farr_varname}=\"\${${__farr_gvrname}_${__farr_index}}\"
     return 0
 }
 
@@ -375,41 +374,42 @@
 #:   $2 (int): The index to delete to
 #:
 array_del() {
-    local _name _index
+    local __farr_name __farr_index
 
-    local _gvrname _l _new_l _idx _idx1 _value
+    local __farr_gvrname __farr_l __farr_new_l
+    local __farr_idx __farr_idx_1 __farr_value
 
     [ $# -lt 1 ] && _farr_fatal "missing array name"
-    _name=$1
-    _gvrname=${_farr_global_prefix}$1
+    __farr_name=$1
+    __farr_gvrname=${_farr_global_prefix}$1
     [ $# -lt 2 ] && _farr_fatal "missing array index"
-    _index=$2
+    __farr_index=$2
 
     # Check whether the variable already exists
-    eval _l=\${${_gvrname}__:-${_farr_unset}}
-    if [ "${_l}" = ${_farr_unset} ]; then
-	_farr_fatal "array \`${_name}' does not exist"
+    eval __farr_l=\${${__farr_gvrname}__:-${_farr_unset}}
+    if [ "${__farr_l}" = ${_farr_unset} ]; then
+	_farr_fatal "array \`${__farr_name}' does not exist"
     fi
 
     # check index range
-    if [ \( "${_index}" -lt 1 \) -o \( "${_index}" -gt ${_l} \) ]; then
+    if [ \( "${__farr_index}" -lt 1 \) -o \( "${__farr_index}" -gt ${__farr_l} \) ]; then
 	_farr_fatal "array index out of bounds"
     fi
 
-    _new_l=$((${_l} - 1))
-    _idx=${_index}
-    _idx1=$((${_idx} + 1))
-    while [ ${_idx} -lt ${_l} ]; do
+    __farr_new_l=$((${__farr_l} - 1))
+    __farr_idx=${__farr_index}
+    __farr_idx_1=$((${__farr_idx} + 1))
+    while [ ${__farr_idx} -lt ${__farr_l} ]; do
         # copy the following value to the current index
-        eval _value=\"\${${_gvrname}_${_idx1}}\"
-        eval ${_gvrname}_${_idx}=\$\'"$(_farr_quote_for_eval_dsq "${_value}")"\'
-        _idx=$((${_idx} + 1))
-        _idx1=$((${_idx} + 1))
+        eval __farr_value=\"\${${__farr_gvrname}_${__farr_idx_1}}\"
+        eval ${__farr_gvrname}_${__farr_idx}=\$\'"$(_farr_quote_for_eval_dsq "${__farr_value}")"\'
+        __farr_idx=$((${__farr_idx} + 1))
+        __farr_idx_1=$((${__farr_idx} + 1))
     done
     # Drop the last item
-    eval unset unset ${_gvrname}_${_idx}
+    eval unset unset ${__farr_gvrname}_${__farr_idx}
     # Set the new length
-    eval ${_gvrname}__=${_new_l}
+    eval ${__farr_gvrname}__=${__farr_new_l}
 }
 
 
@@ -420,28 +420,28 @@
 #:   $1 (str): The name of the existing array
 #:
 array_clear() {
-    local _name
+    local __farr_name
 
-    local _gvrname _l _idx
+    local __farr_gvrname __farr_l __farr_idx
 
     [ $# -lt 1 ] && _farr_fatal "missing array name"
-    _name=$1
-    _gvrname=${_farr_global_prefix}$1
+    __farr_name=$1
+    __farr_gvrname=${_farr_global_prefix}$1
 
     # Check whether the variable already exists
-    eval _l=\${${_gvrname}__:-${_farr_unset}}
-    if [ "${_l}" = ${_farr_unset} ]; then
-	_farr_fatal "array \`${_name}' does not exist"
+    eval __farr_l=\${${__farr_gvrname}__:-${_farr_unset}}
+    if [ "${__farr_l}" = ${_farr_unset} ]; then
+	_farr_fatal "array \`${__farr_name}' does not exist"
     fi
 
-    _idx=1
-    while [ ${_idx} -le ${_l} ]; do
-	eval unset ${_gvrname}_${_idx}
-	_idx=$((${_idx} + 1))
+    __farr_idx=1
+    while [ ${__farr_idx} -le ${__farr_l} ]; do
+	eval unset ${__farr_gvrname}_${__farr_idx}
+	__farr_idx=$((${__farr_idx} + 1))
     done
 
     # Length is now zero
-    eval ${_gvrname}__=0
+    eval ${__farr_gvrname}__=0
 }
 
 
@@ -456,27 +456,27 @@
 #:   - A falsy value if the array does not exist
 #:
 array_destroy() {
-    local _name
+    local __farr_name
 
-    local _gvrname _l _idx
+    local __farr_gvrname __farr_l __farr_idx
 
     [ $# -lt 1 ] && _farr_fatal "missing array name"
-    _name=$1
-    _gvrname=${_farr_global_prefix}$1
+    __farr_name=$1
+    __farr_gvrname=${_farr_global_prefix}$1
 
     # Handle non-existing array names
-    eval _l=\${${_gvrname}__:-${_farr_unset}}
-    if [ "${_l}" = ${_farr_unset} ]; then
+    eval __farr_l=\${${__farr_gvrname}__:-${_farr_unset}}
+    if [ "${__farr_l}" = ${_farr_unset} ]; then
 	return 1
     fi
-    _idx=1
-    while [ ${_idx} -le ${_l} ]; do
-	eval unset ${_gvrname}_${_idx}
-	_idx=$((${_idx} + 1))
+    __farr_idx=1
+    while [ ${__farr_idx} -le ${__farr_l} ]; do
+	eval unset ${__farr_gvrname}_${__farr_idx}
+	__farr_idx=$((${__farr_idx} + 1))
     done
 
     # Remove
-    eval unset ${_gvrname}__
+    eval unset ${__farr_gvrname}__
 }
 
 
@@ -492,27 +492,27 @@
 #:   1 (falsy) otherwise
 #:
 array_contains() {
-    local _name _searched_value
+    local __farr_name __farr_searched_value
 
-    local _gvrname _l _idx _existing_value
+    local __farr_gvrname __farr_l __farr_idx __farr_existing_value
 
     [ $# -lt 1 ] && _farr_fatal "missing array name"
-    _name=$1
-    _gvrname=${_farr_global_prefix}$1
+    __farr_name=$1
+    __farr_gvrname=${_farr_global_prefix}$1
     [ $# -ne 2 ] && _farr_fatal "missing value to search for"
-    _searched_value="$2"
+    __farr_searched_value="$2"
 
     # Check whether the variable already exists
-    eval _l=\${${_gvrname}__:-${_farr_unset}}
-    if [ "${_l}" = ${_farr_unset} ]; then
-	_farr_fatal "array \`${_name}' does not exist"
+    eval __farr_l=\${${__farr_gvrname}__:-${_farr_unset}}
+    if [ "${__farr_l}" = ${_farr_unset} ]; then
+	_farr_fatal "array \`${__farr_name}' does not exist"
     fi
 
-    _idx=1
-    while [ ${_idx} -le ${_l} ]; do
-        eval _existing_value=\"\${${_gvrname}_${_idx}}\"
-        [ "${_existing_value}" = "${_searched_value}" ] && return 0
-	_idx=$((${_idx} + 1))
+    __farr_idx=1
+    while [ ${__farr_idx} -le ${__farr_l} ]; do
+        eval __farr_existing_value=\"\${${__farr_gvrname}_${__farr_idx}}\"
+        [ "${__farr_existing_value}" = "${__farr_searched_value}" ] && return 0
+	__farr_idx=$((${__farr_idx} + 1))
     done
     return 1
 }
@@ -537,36 +537,36 @@
 #:   - 1 (falsy) otherwise
 #:
 array_find() {
-    local _varname _name _searched_value _start _end
+    local __farr_varname __farr_name __farr_searched_value __farr_start __farr_end
 
-    local _gvrname _l _sidx _existing_value
+    local __farr_gvrname __farr_l __farr_cur_idx __farr_existing_value
 
     [ $# -lt 1 ] && _farr_fatal "missing variable name"
-    _varname=$1
+    __farr_varname=$1
     [ $# -lt 2 ] && _farr_fatal "missing array name"
-    _name=$2
-    _gvrname=${_farr_global_prefix}$2
+    __farr_name=$2
+    __farr_gvrname=${_farr_global_prefix}$2
     [ $# -lt 3 ] && _farr_fatal "missing value to search for"
-    _searched_value="$3"
+    __farr_searched_value="$3"
 
     # Check whether the variable already exists
-    eval _l=\${${_gvrname}__:-${_farr_unset}}
-    if [ "${_l}" = ${_farr_unset} ]; then
-	_farr_fatal "array \`${_name}' does not exist"
+    eval __farr_l=\${${__farr_gvrname}__:-${_farr_unset}}
+    if [ "${__farr_l}" = ${_farr_unset} ]; then
+	_farr_fatal "array \`${__farr_name}' does not exist"
     fi
 
-    _start=${4-1}
-    _end=${5-${_l}}
+    __farr_start=${4-1}
+    __farr_end=${5-${__farr_l}}
 
-    _sidx=${_start}
-    while [ ${_sidx} -le ${_end} ]; do
-        eval _existing_value=\"\${${_gvrname}_${_sidx}}\"
-        if [ "${_existing_value}" = "${_searched_value}" ]; then
-            #printf "%d" ${_isdx}
-            eval ${_varname}=${_sidx}
+    __farr_cur_idx=${__farr_start}
+    while [ ${__farr_cur_idx} -le ${__farr_end} ]; do
+        eval __farr_existing_value=\"\${${__farr_gvrname}_${__farr_cur_idx}}\"
+        if [ "${__farr_existing_value}" = "${__farr_searched_value}" ]; then
+            #printf "%d" ${__farr_cur_idx}
+            eval ${__farr_varname}=${__farr_cur_idx}
             return 0
         fi
-	_sidx=$((${_sidx} + 1))
+	__farr_cur_idx=$((${__farr_cur_idx} + 1))
     done
     return 1
 }
@@ -593,28 +593,28 @@
 #:   at the start of execution.
 #:
 array_for_each() {
-    local _name _cb
+    local __farr_name __farr_callback
 
-    local _gvrname _l _idx _value _rv
+    local __farr_gvrname __farr_l __farr_idx __farr_rv
 
     [ $# -lt 1 ] && _farr_fatal "missing array name"
-    _name=$1
-    _gvrname=${_farr_global_prefix}$1
+    __farr_name=$1
+    __farr_gvrname=${_farr_global_prefix}$1
     [ $# -lt 2 ] && _farr_fatal "missing callback function name"
-    _cb="$2"
+    __farr_callback="$2"
 
     # Check whether the variable already exists
-    eval _l=\${${_gvrname}__:-${_farr_unset}}
-    if [ "${_l}" = ${_farr_unset} ]; then
-	_farr_fatal "array \`${_name}' does not exist"
+    eval __farr_l=\${${__farr_gvrname}__:-${_farr_unset}}
+    if [ "${__farr_l}" = ${_farr_unset} ]; then
+	_farr_fatal "array \`${__farr_name}' does not exist"
     fi
 
-    _idx=1
-    while [ ${_idx} -le ${_l} ]; do
-	eval "${_cb} ${_name} ${_idx} \"\${${_gvrname}_${_idx}}\""
-	_rv=$?
-	[ ${_rv} -ne 0 ] && return ${_rv}
-	_idx=$((${_idx} + 1))
+    __farr_idx=1
+    while [ ${__farr_idx} -le ${__farr_l} ]; do
+	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))
     done
     return 0
 }
@@ -625,28 +625,28 @@
 #: beginning with the last index.
 #:
 array_reversed_for_each() {
-    local _name _cb
+    local __farr_name __farr_callback
 
-    local _gvrname _l _idx _value _rv
+    local __farr_gvrname __farr_l __farr_idx __farr_rv
 
     [ $# -lt 1 ] && _farr_fatal "missing array name"
-    _name=$1
-    _gvrname=${_farr_global_prefix}$1
+    __farr_name=$1
+    __farr_gvrname=${_farr_global_prefix}$1
     [ $# -lt 2 ] && _farr_fatal "missing callback function name"
-    _cb="$2"
+    __farr_callback="$2"
 
     # Check whether the variable already exists
-    eval _l=\${${_gvrname}__:-${_farr_unset}}
-    if [ "${_l}" = ${_farr_unset} ]; then
-	_farr_fatal "array \`${_name}' does not exist"
+    eval __farr_l=\${${__farr_gvrname}__:-${_farr_unset}}
+    if [ "${__farr_l}" = ${_farr_unset} ]; then
+	_farr_fatal "array \`${__farr_name}' does not exist"
     fi
 
-    _idx=${_l}
-    while [ ${_idx} -gt 0 ]; do
-	eval "${_cb} ${_name} ${_idx} \"\${${_gvrname}_${_idx}}\""
-	_rv=$?
-	[ ${_rv} -ne 0 ] && return ${_rv}
-	_idx=$((${_idx} - 1))
+    __farr_idx=${__farr_l}
+    while [ ${__farr_idx} -gt 0 ]; do
+	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))
     done
     return 0
 }
@@ -662,24 +662,24 @@
 #:   0
 #:
 array_debug() {
-    local _name
+    local __farr_name
 
-    local _gvrname _l
+    local __farr_gvrname __farr_l
 
     [ $# -lt 1 ] && _farr_fatal "missing array name"
-    _name=$1
-    _gvrname=${_farr_global_prefix}$1
+    __farr_name=$1
+    __farr_gvrname=${_farr_global_prefix}$1
 
     # Check whether the variable already exists
-    eval _l=\${${_gvrname}__:-${_farr_unset}}
-    if [ "${_l}" = ${_farr_unset} ]; then
-	echo "DEBUG: array \`${_name}' does not exist" 1>&2
+    eval __farr_l=\${${__farr_gvrname}__:-${_farr_unset}}
+    if [ "${__farr_l}" = ${_farr_unset} ]; then
+	echo "DEBUG: array \`${__farr_name}' does not exist" 1>&2
         return 0
     fi
-    echo "DEBUG: array \`${_name}' has length ${_l}" 1>&2
-    if [ ${_l} -gt 0 ]; then
+    echo "DEBUG: array \`${__farr_name}' has length ${__farr_l}" 1>&2
+    if [ ${__farr_l} -gt 0 ]; then
         echo "DEBUG:   its contents:" 1>&2
-        array_for_each ${_name} _array_debug_print_value
+        array_for_each ${__farr_name} _array_debug_print_value
     fi
     return 0
 }