# shellcheck shell=dash
xrc:mod:lib    mklink   win ln
# poxis: ln
# windows: mklink

___x_cmd_mklink___main(){
    [ "$#" -gt 0 ] ||   set -- --help

    case "$1" in
        -h|--help)          shift;  ___x_cmd help -m mklink     "$@" ; return $?   ;;
        --nopriv)           shift;  ___x_cmd_mklink___nopriv    "$@" ; return $?   ;;
        *)                  ;;
    esac

    if ___x_cmd os is win; then
        ___x_cmd_mklink___win   "$@"
    else
        ___x_cmd_mklink___ln    "$@"
    fi
}

___x_cmd_mklink___nopriv(){
    ___x_cmd os is win || return 0

    local nopriv_fp="$___X_CMD_ROOT_DATA/mklink/nopriv"
    if [ -f "$nopriv_fp" ]; then
        local x_
        read -r x_<"$nopriv_fp"
        return $?
    fi

    ___x_cmd ensurefp "$nopriv_fp"
    if ___x_cmd_mklink___win -j "$___X_CMD_ROOT/bin" "$___X_CMD_ROOT_TMP/mklink/bin_softlink" >/dev/null 2>&1; then
        printf "yes\n"
        return 0
    else
        printf ""
        return 1
    fi >"$nopriv_fp"
}
