# HG changeset patch # User Franz Glasner # Date 1737297047 -3600 # Node ID 8f144f4e8441cccea6368c7088e5df0972b4523b # Parent 31d5d152126ce79a9ad4f6fb10058adc841e0dbc FIX: farray_tryget_XXX_at_index() does not exist any more: use the new "cookie" functions instead diff -r 31d5d152126c -r 8f144f4e8441 sbin/ftjail --- a/sbin/ftjail Sat Jan 18 16:38:39 2025 +0100 +++ b/sbin/ftjail Sun Jan 19 15:30:47 2025 +0100 @@ -911,7 +911,7 @@ local _tmp _line _log_sock local _root_dataset _root_mountpoint _root_type _root_options local _mnt_device _mnt_mountpoint _mnt_type _mnt_options - local _idx _sn_ds _sn_name _sn_ds_related + local _acookie _sn_ds _sn_name _sn_ds_related local _etcupdate_status _rc=0 @@ -974,8 +974,8 @@ fi # Check snapshotting - _idx=1 - while falist_tryget_item_at_index _sn_ds _sn_name _opt_snapshots ${_idx}; do + _acookie="$(falist_cookie_first _opt_snapshots)" + while falist_tryget_item_at _sn_ds _sn_name "${_acookie}"; do if zfs get -H -o value name "${_sn_ds}" >/dev/null 2>/dev/null; then # yes dataset exists: check that snapshots do not exist while IFS=$'\t' read -r _line; do @@ -988,7 +988,7 @@ else farray_append _errors "dataset for snapshots \`${_sn_ds}' does not exist" fi - _idx=$((_idx + 1)) + _acookie="$(falist_cookie_next "${_acookie}")" done _jailname='' @@ -1079,8 +1079,8 @@ true ;; esac - _idx=1 - while falist_tryget_key_at_index _sn_ds _opt_snapshots ${_idx}; do + _acookie="$(falist_cookie_first _opt_snapshots)" + while falist_tryget_key_at _sn_ds "${_acookie}"; do case "${_mnt_device}" in "${_sn_ds}") _sn_ds_related="yes" @@ -1091,7 +1091,7 @@ *) ;; esac - _idx=$((_idx + 1)) + _acookie="$(falist_cookie_next "${_acookie}")" done done </dev/null 2>/dev/null; then # yes dataset exists: check that snapshots do not exist while IFS=$'\t' read -r _line; do @@ -1217,7 +1217,7 @@ err "dataset for snapshots \`${_sn_ds}' does not exist" return 1 fi - _idx=$((_idx + 1)) + _acookie="$(falist_cookie_next "${_acookie}")" done _dir_basename="$(basename "${_directory}")" @@ -1331,11 +1331,11 @@ _dir_fn_tldir="${_u_tmpdir}/tldirs" LC_ALL=C /usr/bin/find "${_directory}" -depth 1 -type d 2>/dev/null | LC_ALL=C /usr/bin/sort >>"${_dir_fn_tldir}" - _idx=1 - while falist_tryget_item_at_index _sn_ds _sn_name _opt_snapshots ${_idx}; do + _acookie="$(falist_cookie_first _opt_snapshots)" + while falist_tryget_item_at _sn_ds _sn_name "${_acookie}"; do echo "Creating snapshot \`${_sn_ds}@${_sn_name}'" zfs snapshot -r "${_sn_ds}@${_sn_name}" || { err "cannot snapshot \`${_sn_ds}@${_sn_name}'"; return 1; } - _idx=$((_idx + 1)) + _acookie="$(falist_cookie_next "${_acookie}")" done # Unmount in reverse order: unmount can do it for us