xref: /haiku/src/system/glue/start_dyn.c (revision fc7456e9b1ec38c941134ed6d01c438cf289381e)
1 /*
2  * Copyright 2003-2007, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
3  * Distributed under the terms of the MIT License.
4  *
5  * Copyright 2001, Travis Geiselbrecht. All rights reserved.
6  * Distributed under the terms of the NewOS License.
7  */
8 
9 
10 #include <user_runtime.h>
11 
12 #include <string.h>
13 #include <stdlib.h>
14 
15 
16 extern int main(int argc, char **argv, char **env);
17 extern void _init_c_library_(int argc, char **argv, char **env);
18 extern void _call_init_routines_(void);
19 
20 int _start(int argc, char **argv, char **env);
21 
22 // these are part of libroot.so, and initialized here
23 extern char **argv_save;
24 extern thread_id __main_thread_id;
25 extern char **environ;
26 
27 bool __gHaikuStartupCode = true;
28 
29 
30 int
31 _start(int argc, char **argv, char **environment)
32 {
33 	int returnCode;
34 
35 	// These are kept here to make our glue code usable under older Haiku versions.
36 	argv_save = argv;
37 	__main_thread_id = find_thread(NULL);
38 
39 #ifdef __HAIKU_BEOS_COMPATIBLE
40 	// These two are called to make our glue code usable under BeOS R5
41 	// - in Haiku, they are both empty.
42 	_init_c_library_(argc, argv, environment);
43 	_call_init_routines_();
44 #endif
45 
46 	returnCode = main(argc, argv, environment);
47 
48 	exit(returnCode);
49 	return 0;
50 }
51 
52