
___x_cmd_readuntil(){
    local ending="$1";  shift

    local IFS=;
    local line
    while [ $# -gt 0 ]; do
        local res=""
        while read -r line; do
            [ "$line" != "$ending" ] || break
            res="${res}${___X_CMD_UNSEENCHAR_NEWLINE}${line}"
        done
        eval "$1"='"${res#?}"'
        shift
    done
}
