#!/bin/sh

fatal()
{
    echo "Error: $*" >&2
    exit 1
}


register_cpcsp_proxy(){
    W_SYSTEM32_DLLS_WIN="C:\\windows\\syswow64"    # path to access 32-bit dlls on win32/win64
    W_SYSTEM64_DLLS_WIN64="C:\\windows\\system32"  # path to access 64-bit dlls from 64-bit apps

    if [ -n "$WINEARCH" ] ; then
        PREFIXARCH="$WINEARCH"
    else
        [ -e "$WINEPREFIX/system.reg" ] || wineboot -i
        PREFIXARCH="$(grep '#arch' "$WINEPREFIX/system.reg" | cut -d "=" -f2)"
    fi

    WINE64="$WINE"
    # support old wow64 mode
    [ -f "${WINE}64" ] && WINE64="${WINE}64" && echo "Use $WINE64 in old wow64 mode"

    case $PREFIXARCH in
        win64)
            echo "Registering 64-bit cpcsp_proxy.dll ..."
            "$WINE64" regsvr32 /s /n /i cpcsp_proxy.dll || fatal "64-bit cpcsp_proxy.dll has NOT been registered"
            echo "64-bit cpcsp_proxy.dll has been registered"

            echo "Registering 32-bit cpcsp_proxy.dll ..."
            "$WINE" "${W_SYSTEM32_DLLS_WIN}\\regsvr32.exe" /s /n /i cpcsp_proxy.dll || fatal "32-bit cpcsp_proxy.dll has NOT been registered"
            echo "32-bit cpcsp_proxy.dll has been registered"
            ;;
        *)
            echo "Pure 32-bit prefix: Registering 32-bit cpcsp_proxy.dll ..."
            "$WINE" regsvr32 /s /n /i cpcsp_proxy.dll || fatal "32-bit cpcsp_proxy.dll has NOT been registered"
            echo "32-bit cpcsp_proxy.dll has been registered"
            ;;
    esac
}

# Использование стандартного пути к wine, если он не был задан
[ -n "$WINE" ] || export WINE="/usr/bin/wine"

# Использование стандартного пути к префиксу wine, если он не был задан
[ -n "$WINEPREFIX" ] || export WINEPREFIX="$HOME/.wine"

# Если ещё не сохранён system.reg, завершаем wineserver
[ -e "$WINEPREFIX/system.reg" ] || wineserver -k

register_cpcsp_proxy
