Explorar o código

vlmcsd-1103-2016-11-05-Hotbird64

Wind4 %!s(int64=9) %!d(string=hai) anos
pai
achega
b8fdaf9a6b

+ 1 - 0
GNUmakefile

@@ -190,6 +190,7 @@ help:
 	@echo "    -DNO_EXTENDED_PRODUCT_LIST   Don't compile the detailed product list."
 	@echo "    -DNO_BASIC_PRODUCT_LIST      Don't compile the basic product list."
 	@echo "    -DNO_STRICT_MODES            Don't support enhanced emulator detection prevention."
+	@echo "    -DNO_CLIENT_LIST		Don't support maintaining a client list (CMIDs)."
 	@echo "    -DNO_VERBOSE_LOG             Don't support verbose logging. Removes -v option."
 	@echo "    -DNO_LOG                     Don't add support for logging. Implies -DNO_VERBOSE_LOG -DNO_EXTENDED_PRODUCT_LIST and -DNO_BASIC_PRODUCT_LIST."
 	@echo "    -DNO_RANDOM_EPID             Don't support random ePIDs."

+ 2 - 0
VisualStudio/msvcrt.lib

@@ -152,6 +152,7 @@
       <TerminalServerAware>true</TerminalServerAware>
       <SwapRunFromCD>true</SwapRunFromCD>
       <SwapRunFromNET>true</SwapRunFromNET>
+      <EntryPointSymbol>WinStartUp</EntryPointSymbol>
     </Link>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@@ -191,6 +192,7 @@
       <SwapRunFromCD>true</SwapRunFromCD>
       <SwapRunFromNET>true</SwapRunFromNET>
       <MinimumRequiredVersion>5.02</MinimumRequiredVersion>
+      <EntryPointSymbol>WinStartUp</EntryPointSymbol>
     </Link>
   </ItemDefinitionGroup>
   <ItemGroup>

+ 2 - 0
VisualStudio/vlmcsd.sln

@@ -155,6 +155,7 @@
       <SwapRunFromNET>true</SwapRunFromNET>
       <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
       <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
+      <EntryPointSymbol>WinStartUp</EntryPointSymbol>
     </Link>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@@ -195,6 +196,7 @@
       <TerminalServerAware>true</TerminalServerAware>
       <SwapRunFromCD>true</SwapRunFromCD>
       <SwapRunFromNET>true</SwapRunFromNET>
+      <EntryPointSymbol>WinStartUp</EntryPointSymbol>
     </Link>
   </ItemDefinitionGroup>
   <ItemGroup>

+ 2 - 0
VisualStudio/vlmcsdmulti/vlmcsdmulti.vcxproj

@@ -152,6 +152,7 @@
       <TerminalServerAware>true</TerminalServerAware>
       <SwapRunFromCD>true</SwapRunFromCD>
       <SwapRunFromNET>true</SwapRunFromNET>
+      <EntryPointSymbol>WinStartUp</EntryPointSymbol>
     </Link>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@@ -190,6 +191,7 @@
       <SwapRunFromCD>true</SwapRunFromCD>
       <SwapRunFromNET>true</SwapRunFromNET>
       <MinimumRequiredVersion>5.02</MinimumRequiredVersion>
+      <EntryPointSymbol>WinStartUp</EntryPointSymbol>
     </Link>
   </ItemDefinitionGroup>
   <ItemGroup>

+ 4 - 0
bin/.gitignore

@@ -0,0 +1,4 @@
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore

+ 4 - 0
build/.gitignore

@@ -0,0 +1,4 @@
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore

BIN=BIN
floppy/floppy144.vfd


+ 1 - 1
hotbird64-mass-build/make_dragonfly

@@ -1,6 +1,6 @@
 #!/usr/local/bin/bash
 
-export VLMCSD_VERSION="svn`svnversion`"
+export VLMCSD_VERSION=$(git describe)
 
 cd "$( dirname "$0" )"
 gmake -C .. clean

+ 1 - 1
hotbird64-mass-build/make_freebsd

@@ -1,6 +1,6 @@
 #!/usr/local/bin/bash
 
-export VLMCSD_VERSION="svn`svnversion`"
+export VLMCSD_VERSION=$(git describe)
 export VERBOSE=3
 export DNS_PARSER=OS
 

+ 1 - 1
hotbird64-mass-build/make_hurd

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-export VLMCSD_VERSION="svn`svnversion`"
+export VLMCSD_VERSION=$(git describe)
 export VERBOSE=3
 export DNS_PARSER=OS
 

+ 1 - 1
hotbird64-mass-build/make_kfreebsd

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-export VLMCSD_VERSION="svn`svnversion`"
+export VLMCSD_VERSION=$(git describe)
 export VERBOSE=3
 export DNS_PARSER=OS
 

+ 62 - 8
hotbird64-mass-build/make_linux

@@ -2,7 +2,7 @@
 
 cd "$( dirname "$0" )"
 
-export VLMCSD_VERSION="svn`svnversion`"
+export VLMCSD_VERSION=$(git describe)
 
 export VERBOSE=3
 export DNS_PARSER=internal
@@ -400,7 +400,7 @@ fi
 export CLIENT_NAME=../binaries/Linux/ppc/big-endian/glibc/vlmcs-ppc-glibc
 export PROGRAM_NAME=../binaries/Linux/ppc/big-endian/glibc/vlmcsd-ppc-glibc
 export MULTI_NAME=../binaries/Linux/ppc/big-endian/glibc/vlmcsdmulti-ppc-glibc
-export CC=~/openwrt/staging_dir/toolchain-powerpc_405_gcc-4.8-linaro_eglibc-2.19/bin/powerpc-openwrt-linux-gcc
+export CC=/opt/toolchains/ppc-openwrt-eglibc-2.19-gcc-4.8/bin/powerpc-openwrt-linux-gcc
 export CFLAGS="$SMALLCC"
 export PLATFORMFLAGS="-flto=16 -fwhole-program --sysroot=/opt/simplebuild/toolchains/powerpc -L/opt/simplebuild/toolchains/powerpc/lib -L/opt/simplebuild/toolchains/powerpc/usr/lib"
 export LDFLAGS="$SMALLLD"
@@ -484,6 +484,60 @@ fi
 
 
 
+# armv7 glibc 2.22 gcc 5.3 OpenWRT toolchain
+
+export CC=/opt/toolchains/armelv7-OpenWRT-BCM47xx_53xx-gcc-5.3.0-glibc-2.22/bin/arm-openwrt-linux-gcc
+export CLIENT_NAME=../binaries/Linux/arm/little-endian/glibc/vlmcs-armelv7-bcm47xx_53xx-openwrt-glibc
+export PROGRAM_NAME=../binaries/Linux/arm/little-endian/glibc/vlmcsd-armelv7-bcm47xx_53xx-openwrt-glibc
+export MULTI_NAME=../binaries/Linux/arm/little-endian/glibc/vlmcsdmulti-armelv7-bcm47xx_53xx-openwrt-glibc
+export CFLAGS="$SMALLCC"
+export PLATFORMFLAGS="-flto=16 -fwhole-program -march=armv7-a -mthumb -mtune=cortex-a9"
+export LDFLAGS="$SMALLLD -static-libgcc"
+export THREADS=0
+export DNS_PARSER=internal
+
+make $MAKEFLAGS allmulti
+
+if [ $? != 0 ]; then
+  echo Error creating $MULTI_NAME, $CLIENT_NAME and/or $PROGRAM_NAME
+  exit $?
+fi
+
+
+
+
+# armv7 glibc 2.22 gcc 5.3 OpenWRT toolchain
+
+export CC=/opt/toolchains/armelv7-OpenWRT-BCM47xx_53xx-gcc-5.3.0-musl-1.14/bin/arm-openwrt-linux-gcc
+export CLIENT_NAME=../binaries/Linux/arm/little-endian/musl/vlmcs-armelv7-bcm47xx_53xx-openwrt-musl
+export PROGRAM_NAME=../binaries/Linux/arm/little-endian/musl/vlmcsd-armelv7-bcm47xx_53xx-openwrt-musl
+export MULTI_NAME=../binaries/Linux/arm/little-endian/musl/vlmcsdmulti-armelv7-bcm47xx_53xx-openwrt-musl
+export CFLAGS="$SMALLCC"
+export PLATFORMFLAGS="-flto=16 -fwhole-program -march=armv7-a -mthumb -mtune=cortex-a9"
+export LDFLAGS="$SMALLLD -static-libgcc"
+export THREADS=0
+
+make DNS_PARSER=OS $MAKEFLAGS allmulti
+
+if [ $? != 0 ]; then
+  echo Error creating $MULTI_NAME, $CLIENT_NAME and/or $PROGRAM_NAME
+  exit $?
+fi
+
+export CLIENT_NAME=../binaries/Linux/arm/little-endian/static/vlmcs-armelv7-bcm47xx_53xx-openwrt-musl-static
+export PROGRAM_NAME=../binaries/Linux/arm/little-endian/static/vlmcsd-armelv7-bcm47xx_53xx-openwrt-musl-static
+export MULTI_NAME=../binaries/Linux/arm/little-endian/static/vlmcsdmulti-armelv7-bcm47xx_53xx-openwrt-musl-static
+export LDFLAGS="$SMALLLD -static"
+
+make DNS_PARSER=OS $REUSEOBJFLAGS allmulti
+
+if [ $? != 0 ]; then
+  echo Error creating $MULTI_NAME, $CLIENT_NAME and/or $PROGRAM_NAME
+  exit $?
+fi
+
+
+
 
 #Android gcc 4.8 with API Level 3 (Android 1.5 cupcake) armv7
 
@@ -1233,7 +1287,7 @@ fi
 export MULTI_NAME=../binaries/Linux/intel/glibc/vlmcsdmulti-x86-glibc
 export CLIENT_NAME=../binaries/Linux/intel/glibc/vlmcs-x86-glibc
 export PROGRAM_NAME=../binaries/Linux/intel/glibc/vlmcsd-x86-glibc
-export CC=~/openwrt/staging_dir/toolchain-i386_i486_gcc-4.8-linaro_eglibc-2.19/bin/i486-openwrt-linux-gcc
+export CC=/opt/toolchains/toolchain-i386_i486_gcc-4.8-linaro_eglibc-2.19/bin/i486-openwrt-linux-gcc
 export CFLAGS="$SMALLCC"
 export PLATFORMFLAGS="-flto=16 -fwhole-program -m32 -march=i686 -mtune=generic"
 export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu"
@@ -1252,7 +1306,7 @@ fi
 
 # Linux x86 glibc minimum standalone version
 export PROGRAM_NAME=../binaries/Linux/intel/glibc/vlmcsd-x86-glibc-minimum
-export CC=~/openwrt/staging_dir/toolchain-i386_i486_gcc-4.8-linaro_eglibc-2.19/bin/i486-openwrt-linux-gcc
+export CC=/opt/toolchains/toolchain-i386_i486_gcc-4.8-linaro_eglibc-2.19/bin/i486-openwrt-linux-gcc
 export CFLAGS="$SMALLCC"
 export PLATFORMFLAGS="-flto=16 -fwhole-program -m32 -march=i686 -mtune=generic"
 export LDFLAGS="$SMALLLD -Wl,--hash-style=gnu"
@@ -1503,7 +1557,7 @@ fi
 export PROGRAM_NAME=../binaries/Linux/arm/little-endian/glibc/vlmcsd-armv4el-openwrt-glibc
 export CLIENT_NAME=../binaries/Linux/arm/little-endian/glibc/vlmcs-armv4el-openwrt-glibc
 export MULTI_NAME=../binaries/Linux/arm/little-endian/glibc/vlmcsdmulti-armv4el-openwrt-glibc
-export CC=~/openwrt/staging_dir/toolchain-arm_mpcore+vfp_gcc-4.8-linaro_eglibc-2.19_eabi/bin/arm-openwrt-linux-gcc
+export CC=/opt/toolchains/toolchain-arm_mpcore+vfp_gcc-4.8-linaro_eglibc-2.19_eabi/bin/arm-openwrt-linux-gcc
 export PLATFORMFLAGS="-flto=16 -fwhole-program -march=armv4"
 export FEATURES=full
 export CFLAGS="$SMALLCC"
@@ -1528,7 +1582,7 @@ SUFFIX=-armv7el-openwrt-glibc
 export PROGRAM_NAME=${INSTALLDIR}vlmcsd${SUFFIX}
 export CLIENT_NAME=${INSTALLDIR}vlmcs${SUFFIX}
 export MULTI_NAME=${INSTALLDIR}vlmcsdmulti${SUFFIX}
-export CC=~/openwrt/staging_dir/toolchain-arm_mpcore+vfp_gcc-4.8-linaro_eglibc-2.19_eabi/bin/arm-openwrt-linux-gcc
+export CC=/opt/toolchains/toolchain-arm_mpcore+vfp_gcc-4.8-linaro_eglibc-2.19_eabi/bin/arm-openwrt-linux-gcc
 export PLATFORMFLAGS="-flto=16 -fwhole-program -march=armv7 -mthumb"
 export FEATURES=full
 export CFLAGS="$SMALLCC"
@@ -1656,7 +1710,7 @@ SUFFIX=-armv4el-openwrt-uclibc
 export PROGRAM_NAME=${INSTALLDIR}vlmcsd${SUFFIX}
 export CLIENT_NAME=${INSTALLDIR}vlmcs${SUFFIX}
 export MULTI_NAME=${INSTALLDIR}vlmcsdmulti${SUFFIX}
-export CC=~/openwrt/staging_dir/toolchain-arm_mpcore+vfp_gcc-4.8-linaro_uClibc-0.9.33.2_eabi/bin/arm-openwrt-linux-gcc
+export CC=/opt/toolchains/toolchain-arm_mpcore+vfp_gcc-4.8-linaro_uClibc-0.9.33.2_eabi/bin/arm-openwrt-linux-gcc
 export PLATFORMFLAGS="-flto=16 -fwhole-program -march=armv4 -marm"
 export FEATURES=full
 export CFLAGS="$SMALLCC"
@@ -1712,7 +1766,7 @@ SUFFIX=-armv7el-openwrt-uclibc
 export PROGRAM_NAME=${INSTALLDIR}vlmcsd${SUFFIX}
 export CLIENT_NAME=${INSTALLDIR}vlmcs${SUFFIX}
 export MULTI_NAME=${INSTALLDIR}vlmcsdmulti${SUFFIX}
-export CC=~/openwrt/staging_dir/toolchain-arm_mpcore+vfp_gcc-4.8-linaro_uClibc-0.9.33.2_eabi/bin/arm-openwrt-linux-gcc
+export CC=/opt/toolchains/toolchain-arm_mpcore+vfp_gcc-4.8-linaro_uClibc-0.9.33.2_eabi/bin/arm-openwrt-linux-gcc
 export PLATFORMFLAGS="-flto=16 -fwhole-program -march=armv7 -mthumb"
 export FEATURES=full
 export CFLAGS="$SMALLCC"

+ 1 - 3
hotbird64-mass-build/make_minix

@@ -2,9 +2,7 @@
 
 cd ~/vlmcsd/hotbird64-mass-build
 
-export VLMCSD_VERSION=svn$(ssh root@ubuntu64.internal "cd x; svnversion")
-scp -p make_minix root@ubuntu64.internal:x/hotbird64-mass-build
-scp -pr root@ubuntu64.internal:x/* ..
+export VLMCSD_VERSION=$(git describe)
 
 BINDIR="bin"
 cd ..

+ 1 - 1
hotbird64-mass-build/make_multilib_linux

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-export VLMCSD_VERSION="svn`svnversion`"
+export VLMCSD_VERSION=$(git describe)
 SMALLCC="-pipe -fno-common -fno-exceptions -fno-stack-protector -fno-unwind-tables -fno-asynchronous-unwind-tables -fmerge-all-constants"
 SMALLLD="-pipe -Wl,--hash-style=sysv -Wl,-z,norelro -Wl,--build-id=none"
 SMALL="$SMALLCC $SMALLLD"

+ 1 - 1
hotbird64-mass-build/make_netbsd

@@ -1,6 +1,6 @@
 #!/usr/pkg/bin/bash
 
-export VLMCSD_VERSION="svn`svnversion`"
+export VLMCSD_VERSION=$(git describe)
 export VERBOSE=3
 export DNS_PARSER=OS
 

+ 1 - 1
hotbird64-mass-build/make_openbsd

@@ -1,6 +1,6 @@
 #!/usr/local/bin/bash
 
-export VLMCSD_VERSION="svn`svnversion`"
+export VLMCSD_VERSION=$(git describe)
 export VERBOSE=3
 export DNS_PARSER=OS
 

+ 1 - 1
hotbird64-mass-build/make_osx

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-export VLMCSD_VERSION="svn`svnversion`"
+export VLMCSD_VERSION=$(git describe)
 export VERBOSE=3
 export DNS_PARSER=OS
 

+ 1 - 1
hotbird64-mass-build/make_solaris

@@ -1,6 +1,6 @@
 #!/bin/sh
 
-export VLMCSD_VERSION="svn`svnversion`"
+export VLMCSD_VERSION=$(git describe)
 export VERBOSE=3
 export CAT=2
 

+ 1 - 1
hotbird64-mass-build/make_windows

@@ -2,7 +2,7 @@
 
 cd "$( dirname "$0" )"
 
-export VLMCSD_VERSION="svn`svnversion`"
+export VLMCSD_VERSION=$(git describe)
 
 msbuild='/cygdrive/c/Program Files (x86)/MSBuild/14.0/bin/MSBuild.exe'
 version="$VLMCSD_VERSION, built $(date -u '+%Y-%m-%d %H:%M:%S') UTC"

+ 4 - 0
lib/.gitignore

@@ -0,0 +1,4 @@
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore

+ 1 - 1
man/vlmcs.1.html

@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.3 -->
-<!-- CreationDate: Tue Oct 25 06:23:57 2016 -->
+<!-- CreationDate: Fri Nov  4 17:18:01 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>

BIN=BIN
man/vlmcs.1.pdf


+ 1 - 1
man/vlmcsd-floppy.7.html

@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.3 -->
-<!-- CreationDate: Tue Oct 25 06:23:57 2016 -->
+<!-- CreationDate: Fri Nov  4 17:18:01 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>

BIN=BIN
man/vlmcsd-floppy.7.pdf


+ 1 - 1
man/vlmcsd.7.html

@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.3 -->
-<!-- CreationDate: Tue Oct 25 06:23:57 2016 -->
+<!-- CreationDate: Fri Nov  4 17:18:01 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>

BIN=BIN
man/vlmcsd.7.pdf


+ 1 - 1
man/vlmcsd.8.html

@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.3 -->
-<!-- CreationDate: Tue Oct 25 06:23:57 2016 -->
+<!-- CreationDate: Fri Nov  4 17:18:01 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>

BIN=BIN
man/vlmcsd.8.pdf


+ 1 - 1
man/vlmcsd.ini.5.html

@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.3 -->
-<!-- CreationDate: Tue Oct 25 06:23:57 2016 -->
+<!-- CreationDate: Fri Nov  4 17:18:01 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>

BIN=BIN
man/vlmcsd.ini.5.pdf


+ 1 - 1
man/vlmcsdmulti.1.html

@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.3 -->
-<!-- CreationDate: Tue Oct 25 06:23:57 2016 -->
+<!-- CreationDate: Fri Nov  4 17:18:01 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>

BIN=BIN
man/vlmcsdmulti.1.pdf


+ 1 - 1
src/GNUmakefile

@@ -62,7 +62,7 @@ DNS_PARSER ?= OS
 
 # You should supply your own version string here
 
-VLMCSD_VERSION ?= $(shell test -d ../.svn && echo svn`svnversion`)
+VLMCSD_VERSION ?= $(shell test -d ../.git && git describe)
 
 FEATURES ?= full
 VERBOSE ?= NO

+ 4 - 0
src/kms.c

@@ -3,6 +3,10 @@
 #endif // CONFIG
 #include CONFIG
 
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
+#endif
+
 #ifndef _CRT_SECURE_NO_WARNINGS
 #define _CRT_SECURE_NO_WARNINGS
 #endif

+ 22 - 0
src/vlmcs.c

@@ -1432,4 +1432,26 @@ static void CreateRequestBase(REQUEST *Request)
 #	endif // NO_VERBOSE_LOG
 }
 
+#if _MSC_VER && !defined(_DEBUG)&& !MULTI_CALL_BINARY
+int __stdcall WinStartUp(void)
+{
+	WCHAR **szArgList;
+	int argc;
+	szArgList = CommandLineToArgvW(GetCommandLineW(), &argc);
+
+	int i;
+	char **argv = (char**)vlmcsd_malloc(sizeof(char*)*argc);
+
+	for (i = 0; i < argc; i++)
+	{
+		int size = WideCharToMultiByte(CP_UTF8, 0, szArgList[i], -1, argv[i], 0, NULL, NULL);
+		argv[i] = (char*)vlmcsd_malloc(size);
+		WideCharToMultiByte(CP_UTF8, 0, szArgList[i], -1, argv[i], size, NULL, NULL);
+	}
+
+	exit(client_main(argc, argv));
+}
+#endif // _MSC_VER && !defined(_DEBUG)&& !MULTI_CALL_BINARY
+
+
 #endif // IS_LIBRARY

+ 22 - 0
src/vlmcsd.c

@@ -1867,3 +1867,25 @@ int newmain()
 
 	return rc;
 }
+
+
+#if _MSC_VER && !defined(_DEBUG)&& !MULTI_CALL_BINARY
+int __stdcall WinStartUp(void)
+{
+	WCHAR **szArgList;
+	int argc;
+	szArgList = CommandLineToArgvW(GetCommandLineW(), &argc);
+
+	int i;
+	char **argv = (char**)vlmcsd_malloc(sizeof(char*)*argc);
+
+	for (i = 0; i < argc; i++)
+	{
+		int size = WideCharToMultiByte(CP_UTF8, 0, szArgList[i], -1, argv[i], 0, NULL, NULL);
+		argv[i] = (char*)vlmcsd_malloc(size);
+		WideCharToMultiByte(CP_UTF8, 0, szArgList[i], -1, argv[i], size, NULL, NULL);
+	}
+
+	exit(server_main(argc, argv));
+}
+#endif // _MSC_VER && !defined(_DEBUG)&& !MULTI_CALL_BINARY

+ 22 - 0
src/vlmcsdmulti.c

@@ -97,3 +97,25 @@ int main(int argc, CARGV argv)
 
 	return VLMCSD_EINVAL;
 }
+
+
+#if _MSC_VER && !defined(_DEBUG)
+int __stdcall WinStartUp(void)
+{
+	WCHAR **szArgList;
+	int argc;
+	szArgList = CommandLineToArgvW(GetCommandLineW(), &argc);
+
+	int i;
+	char **argv = (char**)vlmcsd_malloc(sizeof(char*)*argc);
+
+	for (i = 0; i < argc; i++)
+	{
+		int size = WideCharToMultiByte(CP_UTF8, 0, szArgList[i], -1, argv[i], 0, NULL, NULL);
+		argv[i] = (char*)vlmcsd_malloc(size);
+		WideCharToMultiByte(CP_UTF8, 0, szArgList[i], -1, argv[i], size, NULL, NULL);
+	}
+
+	exit(main(argc, argv));
+}
+#endif // _MSC_VER && !defined(_DEBUG)&& !MULTI_CALL_BINARY