aboutsummaryrefslogtreecommitdiff
path: root/tinycc/win32/lib/wincrt1.c
diff options
context:
space:
mode:
authorUneven Prankster <unevenprankster@protonmail.com>2023-07-12 21:05:57 -0300
committerUneven Prankster <unevenprankster@protonmail.com>2023-07-12 21:05:57 -0300
commit111c133b939c15c57c90cd474d55e84928c6307a (patch)
tree3e6ed21eaaf21a8f8f4c5c9933972ea476d37b8e /tinycc/win32/lib/wincrt1.c
parentfa2bdd711212ba6b7a94a20971e8bfa281e73296 (diff)
Officially past the point of no return. C scripting works!
Diffstat (limited to 'tinycc/win32/lib/wincrt1.c')
-rw-r--r--tinycc/win32/lib/wincrt1.c86
1 files changed, 0 insertions, 86 deletions
diff --git a/tinycc/win32/lib/wincrt1.c b/tinycc/win32/lib/wincrt1.c
deleted file mode 100644
index d74a0cf..0000000
--- a/tinycc/win32/lib/wincrt1.c
+++ /dev/null
@@ -1,86 +0,0 @@
-//+---------------------------------------------------------------------------
-
-// _UNICODE for tchar.h, UNICODE for API
-#include <tchar.h>
-
-#include <windows.h>
-#include <stdlib.h>
-
-#define __UNKNOWN_APP 0
-#define __CONSOLE_APP 1
-#define __GUI_APP 2
-void __set_app_type(int);
-void _controlfp(unsigned a, unsigned b);
-
-#ifdef _UNICODE
-#define __tgetmainargs __wgetmainargs
-#define _twinstart _wwinstart
-#define _runtwinmain _runwwinmain
-int APIENTRY wWinMain(HINSTANCE, HINSTANCE, LPWSTR, int);
-#else
-#define __tgetmainargs __getmainargs
-#define _twinstart _winstart
-#define _runtwinmain _runwinmain
-#endif
-
-typedef struct { int newmode; } _startupinfo;
-int __cdecl __tgetmainargs(int *pargc, _TCHAR ***pargv, _TCHAR ***penv, int globb, _startupinfo*);
-
-#include "crtinit.c"
-
-static int go_winmain(TCHAR *arg1)
-{
- STARTUPINFO si;
- _TCHAR *szCmd, *p;
- int fShow;
- int retval;
-
- GetStartupInfo(&si);
- if (si.dwFlags & STARTF_USESHOWWINDOW)
- fShow = si.wShowWindow;
- else
- fShow = SW_SHOWDEFAULT;
-
- szCmd = NULL, p = GetCommandLine();
- if (arg1)
- szCmd = _tcsstr(p, arg1);
- if (NULL == szCmd)
- szCmd = _tcsdup(__T(""));
- else if (szCmd > p && szCmd[-1] == __T('"'))
- --szCmd;
-#if defined __i386__ || defined __x86_64__
- _controlfp(0x10000, 0x30000);
-#endif
- run_ctors(__argc, __targv, _tenviron);
- retval = _tWinMain(GetModuleHandle(NULL), NULL, szCmd, fShow);
- run_dtors();
- return retval;
-}
-
-static LONG WINAPI catch_sig(EXCEPTION_POINTERS *ex)
-{
- return _XcptFilter(ex->ExceptionRecord->ExceptionCode, ex);
-}
-
-int _twinstart(void)
-{
- _startupinfo start_info_con = {0};
- SetUnhandledExceptionFilter(catch_sig);
- __set_app_type(__GUI_APP);
- __tgetmainargs(&__argc, &__targv, &_tenviron, 0, &start_info_con);
- exit(go_winmain(__argc > 1 ? __targv[1] : NULL));
-}
-
-int _runtwinmain(int argc, /* as tcc passed in */ char **argv)
-{
-#ifdef UNICODE
- _startupinfo start_info = {0};
- __tgetmainargs(&__argc, &__targv, &_tenviron, 0, &start_info);
- /* may be wrong when tcc has received wildcards (*.c) */
- if (argc < __argc)
- __targv += __argc - argc, __argc = argc;
-#else
- __argc = argc, __targv = argv;
-#endif
- return go_winmain(__argc > 1 ? __targv[1] : NULL);
-}