dd_bool DD_Unix_Init(void) { dd_bool failed = true; memset(&app, 0, sizeof(app)); // We wish to use U.S. English formatting for time and numbers. setlocale(LC_ALL, "en_US.UTF-8"); DD_InitCommandLine(); Library_Init(); // Determine our basedir and other global paths. determineGlobalPaths(&app); if(!DD_EarlyInit()) { Sys_MessageBox(MBT_ERROR, DOOMSDAY_NICENAME, "Error during early init.", 0); } #ifdef __CLIENT__ else if(!initDGL()) { Sys_MessageBox(MBT_ERROR, DOOMSDAY_NICENAME, "Error initializing DGL.", 0); } #endif else { // Everything okay so far. failed = false; } return !failed; }
static LIB_BASE_T *LibOpen(void) { LIB_BASE_T *LibBase = (LIB_BASE_T *) REG_A6; LIB_BASE_T *result = LibBase; ObtainSemaphore(&LibBase->LockSemaphore); LibBase->LibNode.lib_Flags &= ~LIBF_DELEXP; if (++LibBase->LibNode.lib_OpenCnt == 1) { if (!Library_Init(LibBase)) { Library_Exit(LibBase); LibBase->LibNode.lib_OpenCnt--; result = NULL; } } ReleaseSemaphore(&LibBase->LockSemaphore); return result; }