X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=sys_shared.c;h=465b322ef71a5b9e82f0810967112051f27fb023;hb=ac98bf077bc6ec661e54210d8b3bc8ce687cede2;hp=85ad4648e8882bbef6ef032a0e4a68219b63e99b;hpb=3bb0dbdc59774142f8e0b7d1222e7489eb3d89f6;p=xonotic%2Fdarkplaces.git diff --git a/sys_shared.c b/sys_shared.c index 85ad4648..465b322e 100644 --- a/sys_shared.c +++ b/sys_shared.c @@ -43,17 +43,14 @@ static char qfont_table[256] = { 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\\', ']', '^', '_', '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', - 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', + 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', '<' }; -#ifdef WIN32 -extern HANDLE hinput, houtput; -#endif #define MAX_PRINT_MSG 16384 -void Sys_Printf (char *fmt, ...) +void Sys_Printf (const char *fmt, ...) { va_list argptr; char start[MAX_PRINT_MSG]; // String we started with @@ -64,60 +61,99 @@ void Sys_Printf (char *fmt, ...) struct tm *local = NULL; unsigned char *p; -#ifdef WIN32 - DWORD dummy; -#endif va_start (argptr, fmt); -#ifdef HAVE_VSNPRINTF vsnprintf (start, sizeof(start), fmt, argptr); -#else - vsprintf (start, fmt, argptr); -#endif va_end (argptr); if (sys_nostdout) return; - if (timestamps.value) + if (timestamps.integer) { mytime = time (NULL); local = localtime (&mytime); strftime (stamp, sizeof (stamp), timeformat.string, local); - + snprintf (final, sizeof (final), "%s%s", stamp, start); } else snprintf (final, sizeof (final), "%s", start); - for (p = (unsigned char *) final; *p; p++) + // LordHavoc: make sure the string is terminated + final[MAX_PRINT_MSG - 1] = 0; + for (p = (unsigned char *) final;*p; p++) *p = qfont_table[*p]; -#ifdef WIN32 - if (cls.state == ca_dedicated) - WriteFile(houtput, final, strlen (final), &dummy, NULL); + Sys_Print(final); +} + + +char engineversion[128]; + +void Sys_Shared_EarlyInit(void) +{ + const char* os; + + Memory_Init (); + + COM_InitArgv(); + COM_InitGameType(); + +#if defined(__linux__) + os = "Linux"; +#elif defined(WIN32) + os = "Windows"; #else - puts(final); + os = "Unknown"; #endif -// for (p = (unsigned char *) final; *p; p++) -// putc (qfont_table[*p], stdout); + snprintf (engineversion, sizeof (engineversion), "%s %s %s", gamename, os, buildstring); + + if (COM_CheckParm("-nostdout")) + sys_nostdout = 1; + else + Con_Printf("%s\n", engineversion); +} + +void Sys_Shared_LateInit(void) +{ +} + +/* +=============================================================================== + +DLL MANAGEMENT + +=============================================================================== +*/ + #ifndef WIN32 - fflush (stdout); +#include +#endif + +dllhandle_t Sys_LoadLibrary (const char* name) +{ +#ifdef WIN32 + return LoadLibrary (name); +#else + return dlopen (name, RTLD_LAZY); #endif } -void Sys_Shared_Init(void) +void Sys_UnloadLibrary (dllhandle_t handle) { - if (COM_CheckParm("-nostdout")) - sys_nostdout = 1; - else - { -#if defined(__linux__) - fcntl(0, F_SETFL, fcntl (0, F_GETFL, 0) | FNDELAY); - printf ("DarkPlaces Linux GL %.2f build %3i", (float) VERSION, buildnumber); -#elif defined(WIN32) - printf ("DarkPlaces Windows GL %.2f build %3i", (float) VERSION, buildnumber); +#ifdef WIN32 + FreeLibrary (handle); #else - printf ("DarkPlaces Unknown GL %.2f build %3i", (float) VERSION, buildnumber); + dlclose (handle); +#endif +} + +void* Sys_GetProcAddress (dllhandle_t handle, const char* name) +{ +#ifdef WIN32 + return (void *)GetProcAddress (handle, name); +#else + return (void *)dlsym (handle, name); #endif - } } +