X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=mount-latest-subvol;h=026f490025538ffd1361217380b336836fe61c2c;hb=165008e5b82c81ebff1061c8f8294c3bc6e9dced;hp=ea1d1f89195cc26420e68aa462671d1288eef5c4;hpb=3c86472e219aaf3c97b1f878b4a818644b282aba;p=distro-setup diff --git a/mount-latest-subvol b/mount-latest-subvol index ea1d1f8..026f490 100644 --- a/mount-latest-subvol +++ b/mount-latest-subvol @@ -17,6 +17,7 @@ script=$(readlink -f -- "$BASH_SOURCE") cd / [[ $EUID == 0 ]] || exec sudo -E "$script" "$@" +source /usr/local/lib/err usage() { cat <&2 - set +x - echo "${BASH_SOURCE[1]}:${BASH_LINENO[0]}:in \`$BASH_COMMAND' returned $err" - bash-trace 2 - echo "$0: exiting with code $err" - exit $err - } - trap _err-trap ERR - set -o pipefail -} -bash-trace() { - local -i argc_index=0 frame i start=${1:-1} max_indent=8 indent - local source - local extdebug=false - if [[ $(shopt -p extdebug) == *-s* ]]; then - extdebug=true - fi - - for ((frame=0; frame < ${#FUNCNAME[@]}-1; frame++)); do - argc=${BASH_ARGC[frame]} - argc_index+=$argc - ((frame < start)) && continue - if (( ${#BASH_SOURCE[@]} > 1 )); then - source="${BASH_SOURCE[frame+1]}:${BASH_LINENO[frame]}:" - fi - indent=$((frame-start+1)) - indent=$((indent < max_indent ? indent : max_indent)) - printf "%${indent}s↳%sin \`%s" '' "$source" "${FUNCNAME[frame]}" - if $extdebug; then - for ((i=argc_index-1; i >= argc_index-argc; i--)); do - printf " %s" "${BASH_ARGV[i]}" - done - fi - echo \' - done -} -errcatch - tu() { while read -r line; do file="$1" @@ -283,7 +242,7 @@ for vol in q a o i; do if m umount -R $dir; then unmounted+=($dir) else - if ! kill-dir TERM TERM TERM INT INT HUP HUP; then + if ! kill-dir TERM TERM TERM INT INT HUP HUP TERM TERM TERM INT INT HUP HUP; then if $force; then kill-dir KILL; fi fi