aboutsummaryrefslogtreecommitdiff
path: root/win32
diff options
context:
space:
mode:
Diffstat (limited to 'win32')
-rw-r--r--win32/lib/crt1.c26
-rw-r--r--win32/lib/wincrt1.c49
2 files changed, 34 insertions, 41 deletions
diff --git a/win32/lib/crt1.c b/win32/lib/crt1.c
index 2cb25c0..53e5545 100644
--- a/win32/lib/crt1.c
+++ b/win32/lib/crt1.c
@@ -44,9 +44,7 @@ int _dowildcard;
void _tstart(void)
{
__TRY__
- int argc, ret;
- _TCHAR **argv;
- _TCHAR **env;
+ int ret;
_startupinfo start_info;
// Sets the current application type
@@ -60,31 +58,31 @@ void _tstart(void)
#endif
start_info.newmode = 0;
- __tgetmainargs( &argc, &argv, &env, _dowildcard, &start_info);
- ret = _tmain(argc, argv, env);
+ __tgetmainargs( &__argc, &__targv, &_tenviron, _dowildcard, &start_info);
+ ret = _tmain(__argc, __targv, _tenviron);
exit(ret);
}
int _runtmain(int argc, /* as tcc passed in */ char **argv)
{
#ifdef UNICODE
- int wargc;
- _TCHAR **wargv, **wenv;
_startupinfo start_info = {0};
- __tgetmainargs(&wargc, &wargv, &wenv, _dowildcard, &start_info);
+ __tgetmainargs(&__argc, &__targv, &_tenviron, _dowildcard, &start_info);
/* may be wrong when tcc has received wildcards (*.c) */
- if (argc < wargc)
- wargv += wargc - argc;
- else
- argc = wargc;
-#define argv wargv
+ if (argc < __argc) {
+ __targv += __argc - argc;
+ __argc = argc;
+ }
+#else
+ __argc = argc;
+ __targv = argv;
#endif
#ifdef __i386
_controlfp(_PC_53, _MCW_PC);
#endif
- return _tmain(argc, argv, _tenviron);
+ return _tmain(__argc, __targv, _tenviron);
}
// =============================================
diff --git a/win32/lib/wincrt1.c b/win32/lib/wincrt1.c
index 0a5036e..83e2f74 100644
--- a/win32/lib/wincrt1.c
+++ b/win32/lib/wincrt1.c
@@ -33,31 +33,25 @@ int __cdecl __tgetmainargs(int *pargc, _TCHAR ***pargv, _TCHAR ***penv, int glob
int _twinstart(void)
{
__TRY__
- _TCHAR *szCmd;
+ _TCHAR *szCmd, *p;
STARTUPINFO startinfo;
+ _startupinfo start_info_con = {0};
int fShow;
int ret;
__set_app_type(__GUI_APP);
_controlfp(0x10000, 0x30000);
- szCmd = GetCommandLine();
- if (szCmd) {
- while (__T(' ') == *szCmd)
- szCmd++;
- if (__T('\"') == *szCmd) {
- while (*++szCmd)
- if (__T('\"') == *szCmd) {
- szCmd++;
- break;
- }
- } else {
- while (*szCmd && __T(' ') != *szCmd)
- szCmd++;
- }
- while (__T(' ') == *szCmd)
- szCmd++;
- }
+ start_info_con.newmode = 0;
+ __tgetmainargs(&__argc, &__targv, &_tenviron, 0, &start_info_con);
+
+ p = GetCommandLine();
+ if (__argc > 1)
+ szCmd = _tcsstr(p, __targv[1]);
+ if (NULL == szCmd)
+ szCmd = __T("");
+ else if (szCmd > p && szCmd[-1] == __T('\"'))
+ --szCmd;
GetStartupInfo(&startinfo);
fShow = startinfo.wShowWindow;
@@ -73,22 +67,23 @@ int _runtwinmain(int argc, /* as tcc passed in */ char **argv)
_TCHAR *szCmd, *p;
#ifdef UNICODE
- int wargc;
- _TCHAR **wargv, **wenv;
_startupinfo start_info = {0};
- __tgetmainargs(&wargc, &wargv, &wenv, 0, &start_info);
- if (argc < wargc)
- wargv += wargc - argc;
- else
- argc = wargc;
-#define argv wargv
+ __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
p = GetCommandLine();
szCmd = NULL;
if (argc > 1)
- szCmd = _tcsstr(p, argv[1]);
+ szCmd = _tcsstr(p, __targv[1]);
if (NULL == szCmd)
szCmd = __T("");
else if (szCmd > p && szCmd[-1] == __T('\"'))