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