X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=sys_shared.c;h=683fe0b13aba7b008e1373ed019ac0a3d6e04374;hb=c4d44b47444f564991cc836ea072e15b77314f93;hp=f636ff310285ba8a06405f31e96b9f58ba3b271b;hpb=6c4d997a497cb5afde74b4bf16f6a9ade5aca37e;p=xonotic%2Fdarkplaces.git diff --git a/sys_shared.c b/sys_shared.c index f636ff31..683fe0b1 100644 --- a/sys_shared.c +++ b/sys_shared.c @@ -1,4 +1,3 @@ - #include "quakedef.h" # include #ifndef WIN32 @@ -11,7 +10,13 @@ static char sys_timestring[128]; char *Sys_TimeString(const char *timeformat) { time_t mytime = time(NULL); +#if _MSC_VER >= 1400 + struct tm mytm; + localtime_s(&mytm, &mytime); + strftime(sys_timestring, sizeof(sys_timestring), timeformat, &mytm); +#else strftime(sys_timestring, sizeof(sys_timestring), timeformat, localtime(&mytime)); +#endif return sys_timestring; } @@ -19,11 +24,28 @@ char *Sys_TimeString(const char *timeformat) extern qboolean host_shuttingdown; void Sys_Quit (int returnvalue) { + if (COM_CheckParm("-profilegameonly")) + Sys_AllowProfiling(false); host_shuttingdown = true; Host_Shutdown(); exit(returnvalue); } +#if defined(__linux__) || defined(__FreeBSD__) +#ifdef __cplusplus +extern "C" +#endif +int moncontrol(int); +#endif + +void Sys_AllowProfiling(qboolean enable) +{ +#if defined(__linux__) || defined(__FreeBSD__) + moncontrol(enable); +#endif +} + + /* =============================================================================== @@ -41,6 +63,25 @@ qboolean Sys_LoadLibrary (const char** dllnames, dllhandle_t* handle, const dllf if (handle == NULL) return false; +#ifndef WIN32 +#ifdef PREFER_PRELOAD + dllhandle = dlopen(NULL, RTLD_LAZY | RTLD_GLOBAL); + if(dllhandle) + { + for (func = fcts; func && func->name != NULL; func++) + if (!(*func->funcvariable = (void *) Sys_GetProcAddress (dllhandle, func->name))) + { + dlclose(dllhandle); + goto notfound; + } + Con_Printf ("All of %s's functions were already linked in! Not loading dynamically...\n", dllnames[0]); + *handle = dllhandle; + return true; + } +notfound: +#endif +#endif + // Initializations for (func = fcts; func && func->name != NULL; func++) *func->funcvariable = NULL;