# shellcheck shell=dash

___x_cmd_tui_util___acquire_old_trap(){
    case "$___X_CMD_SHELL" in
        bash)   ___X_CMD_TUI_UTIL_TRAP_OLD="$(trap)" ;;
        zsh)    ___X_CMD_TUI_UTIL_TRAP_OLD=; trap | {
                    local l; while read -r l; do
                        ___X_CMD_TUI_UTIL_TRAP_OLD="${___X_CMD_TUI_UTIL_TRAP_OLD}${l}${___X_CMD_UNSEENCHAR_NEWLINE}"
                    done
                }
                ;;
        *)      local fp; fp="$___X_CMD_ROOT_TMP/tui/trap/$$.$(x rand uuid)"
                ___x_cmd ensurefp "$fp";   trap > "$fp"
                ___X_CMD_TUI_UTIL_TRAP_OLD="$(___x_cmd_cmds_cat "$fp")"
                ___x_cmd rmrf "$fp"
                ;;
    esac
}

___x_cmd_tui_util___release_old_trap(){
    if [ -z "$___X_CMD_TUI_UTIL_TRAP_OLD" ]; then
        trap - INT
    else
        eval "$___X_CMD_TUI_UTIL_TRAP_OLD"
    fi
    unset ___X_CMD_TUI_UTIL_TRAP_OLD
}

