X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=sys_shared.c;h=f636ff310285ba8a06405f31e96b9f58ba3b271b;hb=bba5486f1a7a3d9942fc6632b662003e300e7309;hp=6cd86758ad9d76a0edda0257ddfb8ac8b3603de9;hpb=182f5dd46097dc11b3643dc2376b4dd6a4fa42c7;p=xonotic%2Fdarkplaces.git diff --git a/sys_shared.c b/sys_shared.c index 6cd86758..f636ff31 100644 --- a/sys_shared.c +++ b/sys_shared.c @@ -17,11 +17,11 @@ char *Sys_TimeString(const char *timeformat) extern qboolean host_shuttingdown; -void Sys_Quit (void) +void Sys_Quit (int returnvalue) { host_shuttingdown = true; Host_Shutdown(); - exit(0); + exit(returnvalue); } /* @@ -46,24 +46,50 @@ qboolean Sys_LoadLibrary (const char** dllnames, dllhandle_t* handle, const dllf *func->funcvariable = NULL; // Try every possible name + Con_Printf ("Trying to load library..."); for (i = 0; dllnames[i] != NULL; i++) { + Con_Printf (" \"%s\"", dllnames[i]); #ifdef WIN32 dllhandle = LoadLibrary (dllnames[i]); #else - dllhandle = dlopen (dllnames[i], RTLD_LAZY); + dllhandle = dlopen (dllnames[i], RTLD_LAZY | RTLD_GLOBAL); #endif if (dllhandle) break; + } - Con_Printf ("Can't load \"%s\".\n", dllnames[i]); + // see if the names can be loaded relative to the executable path + // (this is for Mac OSX which does not check next to the executable) + if (!dllhandle && strrchr(com_argv[0], '/')) + { + char path[MAX_OSPATH]; + strlcpy(path, com_argv[0], sizeof(path)); + strrchr(path, '/')[1] = 0; + for (i = 0; dllnames[i] != NULL; i++) + { + char temp[MAX_OSPATH]; + strlcpy(temp, path, sizeof(temp)); + strlcat(temp, dllnames[i], sizeof(temp)); + Con_Printf (" \"%s\"", temp); +#ifdef WIN32 + dllhandle = LoadLibrary (temp); +#else + dllhandle = dlopen (temp, RTLD_LAZY | RTLD_GLOBAL); +#endif + if (dllhandle) + break; + } } // No DLL found if (! dllhandle) + { + Con_Printf(" - failed.\n"); return false; + } - Con_Printf("\"%s\" loaded.\n", dllnames[i]); + Con_Printf(" - loaded.\n"); // Get the function adresses for (func = fcts; func && func->name != NULL; func++)