__getmainargs return int, not void, and on error, it return -1 and let argv untouched...
[tinycc.git] / win32 / lib / crt1.c
blobbb92ba421f8374539081fd4d6a85b97ff10ab51c
1 // =============================================
2 // crt1.c
4 #include <stdlib.h>
6 #define __UNKNOWN_APP 0
7 #define __CONSOLE_APP 1
8 #define __GUI_APP 2
9 void __set_app_type(int);
10 void _controlfp(unsigned a, unsigned b);
12 typedef struct
14 int newmode;
15 } _startupinfo;
17 int __getmainargs(int *pargc, char ***pargv, char ***penv, int globb, _startupinfo*);
18 int main(int argc, char **argv, char **env);
20 int _start(void)
22 __TRY__
23 int argc; char **argv; char **env; int ret;
24 _startupinfo start_info = {0};
26 _controlfp(0x10000, 0x30000);
27 __set_app_type(__CONSOLE_APP);
28 if (__getmainargs(&argc, &argv, &env, 0, &start_info)) {
29 // __getmainargs failed because possible few memory on the heap.
30 fprintf(stderr, "Error getting the main args.");
31 // terminate with exit code of 3, similar to abort()
32 ExitProcess(3);
35 ret = main(argc, argv, env);
36 exit(ret);
39 // =============================================