X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=sys_shared.c;h=5b81ce0ea877c19e7fbb8eed83bbe09c50d2bdf7;hb=af8286fa99958a1ac89a091f09bc48e1ee225e65;hp=719bce792de45867ada0b19aee1bc1c788c5ed82;hpb=0f4297bb7875109e0ebb376790b0561fd1287d2c;p=xonotic%2Fdarkplaces.git diff --git a/sys_shared.c b/sys_shared.c index 719bce79..5b81ce0e 100644 --- a/sys_shared.c +++ b/sys_shared.c @@ -1,10 +1,14 @@ #include "quakedef.h" #include -#ifndef WIN32 +#ifdef WIN32 +#include +#else +#include #include #include #endif +#include extern cvar_t timestamps; extern cvar_t timeformat; @@ -43,7 +47,7 @@ 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', '{', '|', '}', '~', '<' }; @@ -53,7 +57,7 @@ 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 @@ -79,7 +83,7 @@ void Sys_Printf (char *fmt, ...) if (sys_nostdout) return; - if (timestamps.value) + if (timestamps.integer) { mytime = time (NULL); local = localtime (&mytime); @@ -100,26 +104,159 @@ void Sys_Printf (char *fmt, ...) #else printf("%s", final); #endif -// for (p = (unsigned char *) final; *p; p++) -// putc (qfont_table[*p], stdout); -//#ifndef WIN32 -// fflush (stdout); -//#endif } -void Sys_Shared_Init(void) +// LordHavoc: 256 pak files (was 10) +#define MAX_HANDLES 256 +QFile *sys_handles[MAX_HANDLES]; + +int findhandle (void) { - if (COM_CheckParm("-nostdout")) - sys_nostdout = 1; + int i; + + for (i = 1;i < MAX_HANDLES;i++) + if (!sys_handles[i]) + return i; + Sys_Error ("out of handles"); + return -1; +} + +/* +================ +Sys_FileLength +================ +*/ +int Sys_FileLength (QFile *f) +{ + int pos, end; + + pos = Qtell (f); + Qseek (f, 0, SEEK_END); + end = Qtell (f); + Qseek (f, pos, SEEK_SET); + + return end; +} + +int Sys_FileOpenRead (const char *path, int *handle) +{ + QFile *f; + int i, retval; + + i = findhandle (); + + f = Qopen(path, "rbz"); + + if (!f) + { + *handle = -1; + retval = -1; + } else { + sys_handles[i] = f; + *handle = i; + retval = Sys_FileLength(f); + } + + return retval; +} + +int Sys_FileOpenWrite (const char *path) +{ + QFile *f; + int i; + + i = findhandle (); + + f = Qopen(path, "wb"); + if (!f) + { + Con_Printf("Sys_FileOpenWrite: Error opening %s: %s", path, strerror(errno)); + return 0; + } + sys_handles[i] = f; + + return i; +} + +void Sys_FileClose (int handle) +{ + Qclose (sys_handles[handle]); + sys_handles[handle] = NULL; +} + +void Sys_FileSeek (int handle, int position) +{ + Qseek (sys_handles[handle], position, SEEK_SET); +} + +int Sys_FileRead (int handle, void *dest, int count) +{ + return Qread (sys_handles[handle], dest, count); +} + +int Sys_FileWrite (int handle, void *data, int count) +{ + return Qwrite (sys_handles[handle], data, count); +} + +int Sys_FileTime (const char *path) +{ +#if WIN32 + QFile *f; + + f = Qopen(path, "rb"); + if (f) + { + Qclose(f); + return 1; + } + + return -1; +#else + struct stat buf; + + if (stat (path,&buf) == -1) + return -1; + + return buf.st_mtime; +#endif +} + +void Sys_mkdir (const char *path) +{ +#if WIN32 + _mkdir (path); +#else + mkdir (path, 0777); +#endif +} + +char engineversion[128]; + +void Sys_Shared_EarlyInit(void) +{ + Memory_Init (); + + COM_InitArgv(); + COM_InitGameType(); + #if defined(__linux__) - fcntl(0, F_SETFL, fcntl (0, F_GETFL, 0) | FNDELAY); - printf ("DarkPlaces Linux GL %.2f build %3i", (float) VERSION, buildnumber); + sprintf (engineversion, "%s Linux %s", gamename, buildstring); #elif defined(WIN32) - printf ("DarkPlaces Windows GL %.2f build %3i", (float) VERSION, buildnumber); + sprintf (engineversion, "%s Windows %s", gamename, buildstring); #else - printf ("DarkPlaces Unknown GL %.2f build %3i", (float) VERSION, buildnumber); + sprintf (engineversion, "%s Unknown %s", gamename, buildstring); #endif - } + + if (COM_CheckParm("-nostdout")) + sys_nostdout = 1; + else + printf("%s\n", engineversion); } + +void Sys_Shared_LateInit(void) +{ +} +