]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - sys_shared.c
r_font_postprocess_* cvars to render fonts similar to mplayer subtitles with a blurre...
[xonotic/darkplaces.git] / sys_shared.c
index 64ca6abfb29961211dbfb9854c03b3aa03e412f5..b917e60dabc6899d535e35d4d0443f6ba829f9cf 100644 (file)
@@ -1,16 +1,27 @@
 #include "quakedef.h"
+
+#define SUPPORTDLL
+
 # include <time.h>
 #ifndef WIN32
 # include <unistd.h>
 # include <fcntl.h>
+#ifdef SUPPORTDLL
 # include <dlfcn.h>
 #endif
+#endif
 
 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;
 }
 
@@ -18,11 +29,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
+}
+
+
 /*
 ===============================================================================
 
@@ -33,6 +61,7 @@ DLL MANAGEMENT
 
 qboolean Sys_LoadLibrary (const char** dllnames, dllhandle_t* handle, const dllfunction_t *fcts)
 {
+#ifdef SUPPORTDLL
        const dllfunction_t *func;
        dllhandle_t dllhandle = 0;
        unsigned int i;
@@ -51,7 +80,7 @@ qboolean Sys_LoadLibrary (const char** dllnames, dllhandle_t* handle, const dllf
                                dlclose(dllhandle);
                                goto notfound;
                        }
-               Con_Printf ("All of %s's functions were already linked in! Not loading dynamically...\n", dllnames[0]);
+               Con_DPrintf ("All of %s's functions were already linked in! Not loading dynamically...\n", dllnames[0]);
                *handle = dllhandle;
                return true;
        }
@@ -64,10 +93,10 @@ notfound:
                *func->funcvariable = NULL;
 
        // Try every possible name
-       Con_Printf ("Trying to load library...");
+       Con_DPrintf ("Trying to load library...");
        for (i = 0; dllnames[i] != NULL; i++)
        {
-               Con_Printf (" \"%s\"", dllnames[i]);
+               Con_DPrintf (" \"%s\"", dllnames[i]);
 #ifdef WIN32
                dllhandle = LoadLibrary (dllnames[i]);
 #else
@@ -89,7 +118,7 @@ notfound:
                        char temp[MAX_OSPATH];
                        strlcpy(temp, path, sizeof(temp));
                        strlcat(temp, dllnames[i], sizeof(temp));
-                       Con_Printf (" \"%s\"", temp);
+                       Con_DPrintf (" \"%s\"", temp);
 #ifdef WIN32
                        dllhandle = LoadLibrary (temp);
 #else
@@ -103,27 +132,31 @@ notfound:
        // No DLL found
        if (! dllhandle)
        {
-               Con_Printf(" - failed.\n");
+               Con_DPrintf(" - failed.\n");
                return false;
        }
 
-       Con_Printf(" - loaded.\n");
+       Con_DPrintf(" - loaded.\n");
 
        // Get the function adresses
        for (func = fcts; func && func->name != NULL; func++)
                if (!(*func->funcvariable = (void *) Sys_GetProcAddress (dllhandle, func->name)))
                {
-                       Con_Printf ("Missing function \"%s\" - broken library!\n", func->name);
+                       Con_DPrintf ("Missing function \"%s\" - broken library!\n", func->name);
                        Sys_UnloadLibrary (&dllhandle);
                        return false;
                }
 
        *handle = dllhandle;
        return true;
+#else
+       return false;
+#endif
 }
 
 void Sys_UnloadLibrary (dllhandle_t* handle)
 {
+#ifdef SUPPORTDLL
        if (handle == NULL || *handle == NULL)
                return;
 
@@ -134,14 +167,19 @@ void Sys_UnloadLibrary (dllhandle_t* handle)
 #endif
 
        *handle = NULL;
+#endif
 }
 
 void* Sys_GetProcAddress (dllhandle_t handle, const char* name)
 {
+#ifdef SUPPORTDLL
 #ifdef WIN32
        return (void *)GetProcAddress (handle, name);
 #else
        return (void *)dlsym (handle, name);
 #endif
+#else
+       return NULL;
+#endif
 }