

# Section : read
if read -p " " -e ___UI_TMP_TEST 1>/dev/null 2>/dev/null <<A
hi
A
then

___x_cmd_ui_read(){
    local varname="${1:?Provide varname}"
    read -p " " -e -r "$varname"
}

else

___x_cmd_ui_read(){
    local varname="${1:?Provide varname}"
    printf "%s" " "
    read -r "$varname"
}
fi

___UI_TMP_TEST=
# EndSection


# Section other unused
# Maybe not useful

___x_cmd_ui_yesno_degrade() {
    local p
    while true; do
        printf "%s" "$1 (Input 'y' for yes or 'n' for no):"
        ___x_cmd_ui_read p
        # remove space
        case $p in
            y)          return 0 ;;
            n)          return 1 ;;
        esac
    done
}

___x_cmd_ui_yesno_enter() {
    local p
    while true; do
        printf "%s" "$1 (Press Enter or y for yes, otherwise no):"
        ___x_cmd_ui_read p
        # remove space
        case $p in
            y|"")           return 0    ;;
            *)              return 1    ;;
        esac
    done
}

___x_cmd_ui_readint() {
    local min=${1:?Provide min}
    local max=${2:?Provide max}

    local choice
    while true; do
        printf "%s" "${3:-Read integer: }"
        ___x_cmd_ui_read choice
        if [ "$choice" -ge "$min" ] && [ "$choice" -le "$max" ]; then
            printf "%s" "$choice"
            return 0
        fi 2>/dev/null
    done
}
## EndSection
