# shellcheck shell=dash

___x_cmd_tldr_exact___getfile_pages_(){
    ___x_cmd_tldr_pages_prepare || return
    local dirpath="$___X_CMD_TLDR_DIR_DATA/$___X_CMD_TLDR_PAGES_VERSION";   [ -d "$dirpath" ] || return $?
    local x_=;  local i=;   local prefix="${dirpath}/";  x_file=
    [ "$1" != --full ] || { prefix=""; shift; }

    local cmd="$1"; local pages="$2";
    for i in "$dirpath"/*; do
        [ -z "$pages" ] || [ "${i##*/}" = "$pages" ] || continue
        case "$cmd" in
            */*/*)  ___x_cmd_tldr_exact___list_iter_ "\"${dirpath}/${cmd}\"*" "$prefix"
                    x_file="${x_%"${___X_CMD_UNSEENCHAR_NEWLINE}"}"
                    [ -f "${prefix}${x_file}" ]
                    return
                    ;;
            "")     ___x_cmd_tldr_exact___list_iter_ "\"${i}/\"*/*" "$prefix";              x_file="${x_file}${x_}" ;;
            */*)    ___x_cmd_tldr_exact___list_iter_ "\"${i}/${cmd}\"*" "$prefix";          x_file="${x_file}${x_}" ;;
            *)      ___x_cmd_tldr_exact___list_iter_ "\"${i}/\"*\"/${cmd}\"*" "$prefix";    x_file="${x_file}${x_}" ;;
        esac
    done 2>/dev/null
    x_file="${x_file%"${___X_CMD_UNSEENCHAR_NEWLINE}"}"
}

___x_cmd_tldr_exact___list_iter_(){
    local search_path="$1";    local prefix="$2"
    [ -n "$search_path" ] || N=tldr M="Please provide search path" log:ret:64
    x_=; local i; eval "
        for i in $search_path; do
            [ -f \"\$i\" ] || return
            i=\"\${i#\"\$prefix\"}\"
            x_=\"\${x_}\${i}\${___X_CMD_UNSEENCHAR_NEWLINE}\"
        done
    " 2>/dev/null
}

___x_cmd_tldr_exact___getfile_lang_(){
    ___x_cmd_tldr_lang_perpare || return $?
    local lang="${1%%/*}";  local demo="${1#*/}"
    local dir="${___X_CMD_TLDR_DIR_DATA}/lang/${___X_CMD_TLDR_LANG_VERSION}/$lang"
    [ -d "$dir" ] || return $?

    demo="${demo%%.*}"
    tldr:debug "lang[$lang] demo[$demo]"
    for x_file in "$dir"/*; do
        [ "$x_file" = "${x_file#"${dir}/${demo}."}" ] || return 0
    done
    x_file=""
    return 1
}
# EndSection
