#include <precomp.h> #include <internal/atexit.h> extern void _atexit_cleanup(void); struct __atexit *__atexit_ptr = 0; /* * @implemented */ void exit(int status) { //int i; /* if (__stdio_cleanup_hook) __stdio_cleanup_hook(); for (i=0; i<djgpp_last_dtor-djgpp_first_dtor; i++) djgpp_first_dtor[i](); */ /* in case the program set it this way */ _setmode(0, _O_TEXT); _atexit_cleanup(); _exit(status); for(;;); } /* * @implemented */ void _exit(int _status) { // FIXME: _exit and _c_exit should prevent atexit routines from being called during DLL unload ExitProcess(_status); for(;;); } /* * @unimplemented */ void _cexit( void ) { _atexit_cleanup(); // flush } /* * @unimplemented */ void _c_exit( void ) { // FIXME: _exit and _c_exit should prevent atexit routines from being called during DLL unload // reset interup vectors }