diff main.d @ 25:3f834bed4f13

FWindows linking issues fixed
author korDen
date Tue, 13 Apr 2010 00:38:04 +0400
parents fd4acc376c45
children 544b922227c7
line wrap: on
line diff
--- a/main.d	Mon Apr 12 17:02:32 2010 +0100
+++ b/main.d	Tue Apr 13 00:38:04 2010 +0400
@@ -60,92 +60,93 @@
 version (Windows)
 {
    import win32.windows;
-}
-/* Link to druntimes main() */
-/+
-extern (C) int main(int argc, char **argv)
-{
-    char[][] args;
-    int result;
+
+	/* Link to druntimes main() */
+
+	extern (C) int main(int argc, char **argv)
+	{
+		char[][] args;
+		int result;
 
-    version (OSX)
-    {   /* OSX does not provide a way to get at the top of the
-         * stack, except for the magic value 0xC0000000.
-         * But as far as the gc is concerned, argv is at the top
-         * of the main thread's stack, so save the address of that.
-         */
-        __osx_stack_end = cast(void*)&argv;
-    }
+		version (OSX)
+		{   /* OSX does not provide a way to get at the top of the
+			 * stack, except for the magic value 0xC0000000.
+			 * But as far as the gc is concerned, argv is at the top
+			 * of the main thread's stack, so save the address of that.
+			 */
+			__osx_stack_end = cast(void*)&argv;
+		}
 
-    version (Posix)
-    {
-        _STI_monitor_staticctor();
-        _STI_critical_init();
-    }
+		version (Posix)
+		{
+			_STI_monitor_staticctor();
+			_STI_critical_init();
+		}
 
-    version (Windows)
-    {
-        wchar_t*  wcbuf = GetCommandLineW();
-        size_t    wclen = wcslen(wcbuf);
-        int       wargc = 0;
-        wchar_t** wargs = CommandLineToArgvW(wcbuf, &wargc);
-        assert(wargc == argc);
+		version (Windows)
+		{
+			wchar_t*  wcbuf = GetCommandLineW();
+			size_t    wclen = wcslen(wcbuf);
+			int       wargc = 0;
+			wchar_t** wargs = CommandLineToArgvW(wcbuf, &wargc);
+			assert(wargc == argc);
 
-        char*     cargp = null;
-        size_t    cargl = WideCharToMultiByte(65001, 0, wcbuf, wclen, null, 0, null, null);
+			char*     cargp = null;
+			size_t    cargl = WideCharToMultiByte(65001, 0, wcbuf, wclen, null, 0, null, null);
 
-        cargp = cast(char*) alloca(cargl);
-        args  = ((cast(char[]*) alloca(wargc * (char[]).sizeof)))[0 .. wargc];
+			cargp = cast(char*) alloca(cargl);
+			args  = ((cast(char[]*) alloca(wargc * (char[]).sizeof)))[0 .. wargc];
 
-        for (size_t i = 0, p = 0; i < wargc; i++)
-        {
-            int wlen = wcslen(wargs[i]);
-            int clen = WideCharToMultiByte(65001, 0, &wargs[i][0], wlen, null, 0, null, null);
-            args[i]  = cargp[p .. p+clen];
-            p += clen; assert(p <= cargl);
-            WideCharToMultiByte(65001, 0, &wargs[i][0], wlen, &args[i][0], clen, null, null);
-        }
-        LocalFree(cast(HANDLE)wargs);
-        wargs = null;
-        wargc = 0;
-    }
-    else version (Posix)
-    {
-        char[]* am = cast(char[]*) malloc(argc * (char[]).sizeof);
-        scope(exit) free(am);
+			for (size_t i = 0, p = 0; i < wargc; i++)
+			{
+				int wlen = wcslen(wargs[i]);
+				int clen = WideCharToMultiByte(65001, 0, &wargs[i][0], wlen, null, 0, null, null);
+				args[i]  = cargp[p .. p+clen];
+				p += clen; assert(p <= cargl);
+				WideCharToMultiByte(65001, 0, &wargs[i][0], wlen, &args[i][0], clen, null, null);
+			}
+			LocalFree(cast(HANDLE)wargs);
+			wargs = null;
+			wargc = 0;
+		}
+		else version (Posix)
+		{
+			char[]* am = cast(char[]*) malloc(argc * (char[]).sizeof);
+			scope(exit) free(am);
 
-        for (size_t i = 0; i < argc; i++)
-        {
-            auto len = strlen(argv[i]);
-            am[i] = argv[i][0 .. len];
-        }
-        args = am[0 .. argc];
-    }
+			for (size_t i = 0; i < argc; i++)
+			{
+				auto len = strlen(argv[i]);
+				am[i] = argv[i][0 .. len];
+			}
+			args = am[0 .. argc];
+		}
 
-	gc_init();
-	version (Windows)
-		_minit();
-	_moduleCtor();
-	
-	GC.disable();
-	CrashHandlerInit();
+		gc_init();
+		version (Windows)
+			_minit();
+		_moduleCtor();
+		
+		GC.disable();
+		CrashHandlerInit();
 
-	result = main(cast(string[])args);
-	
-	thread_joinAll();
-	_d_isHalting = true;
-	_moduleDtor();
-	gc_term();
+		result = main(cast(string[])args);
+		
+		thread_joinAll();
+		_d_isHalting = true;
+		_moduleDtor();
+		gc_term();
 
-    version (Posix)
-    {
-        _STD_critical_term();
-        _STD_monitor_staticdtor();
-    }
+		version (Posix)
+		{
+			_STD_critical_term();
+			_STD_monitor_staticdtor();
+		}
 
-    return result;
+		return result;
+	}
 }
-+/
+
 int main(string[] args)
 {
     GC.disable();