X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=sys_linux.c;h=24ea6482d515ced9dc5262055acfb2bd64e5990e;hb=7d917e0a7817da5998432cf9b7e779a623ef1bb3;hp=ac2ea61636c7087eb6d6c59be09c039bc9eeebba;hpb=d090340b054029faddb432e2c66085e6e91abcf7;p=xonotic%2Fdarkplaces.git diff --git a/sys_linux.c b/sys_linux.c index ac2ea616..24ea6482 100644 --- a/sys_linux.c +++ b/sys_linux.c @@ -5,23 +5,23 @@ #include #include "conio.h" #else +#include #include #include -#include #endif #include #include "quakedef.h" +sys_t sys; + // ======================================================================= // General routines // ======================================================================= void Sys_Shutdown (void) { -#ifdef FNDELAY - fcntl (0, F_SETFL, fcntl (0, F_GETFL, 0) & ~FNDELAY); -#endif + fcntl (0, F_SETFL, fcntl (0, F_GETFL, 0) & ~O_NDELAY); fflush(stdout); } @@ -31,46 +31,39 @@ void Sys_Error (const char *error, ...) char string[MAX_INPUTLINE]; // change stdin to non blocking -#ifdef FNDELAY - fcntl (0, F_SETFL, fcntl (0, F_GETFL, 0) & ~FNDELAY); -#endif + fcntl (0, F_SETFL, fcntl (0, F_GETFL, 0) & ~O_NDELAY); va_start (argptr,error); dpvsnprintf (string, sizeof (string), error, argptr); va_end (argptr); - Con_Printf ("Quake Error: %s\n", string); + Con_Printf(CON_ERROR "Engine Error: %s\n", string); Host_Shutdown (); exit (1); } -static int outfd = 1; void Sys_PrintToTerminal(const char *text) { - if(outfd < 0) + if(sys.outfd < 0) return; -#ifdef FNDELAY // BUG: for some reason, NDELAY also affects stdout (1) when used on stdin (0). // this is because both go to /dev/tty by default! { - int origflags = fcntl (outfd, F_GETFL, 0); - fcntl (outfd, F_SETFL, origflags & ~FNDELAY); -#endif + int origflags = fcntl (sys.outfd, F_GETFL, 0); + fcntl (sys.outfd, F_SETFL, origflags & ~O_NDELAY); #ifdef WIN32 #define write _write #endif while(*text) { - fs_offset_t written = (fs_offset_t)write(outfd, text, (int)strlen(text)); + fs_offset_t written = (fs_offset_t)write(sys.outfd, text, (int)strlen(text)); if(written <= 0) break; // sorry, I cannot do anything about this error - without an output text += written; } -#ifdef FNDELAY - fcntl (outfd, F_SETFL, origflags); + fcntl (sys.outfd, F_SETFL, origflags); } -#endif //fprintf(stdout, "%s", text); } @@ -149,23 +142,21 @@ void Sys_InitConsole (void) int main (int argc, char **argv) { signal(SIGFPE, SIG_IGN); - - com_argc = argc; - com_argv = (const char **)argv; + sys.selffd = -1; + sys.argc = argc; + sys.argv = (const char **)argv; Sys_ProvideSelfFD(); // COMMANDLINEOPTION: sdl: -noterminal disables console output on stdout if(COM_CheckParm("-noterminal")) - outfd = -1; + sys.outfd = -1; // COMMANDLINEOPTION: sdl: -stderr moves console output to stderr else if(COM_CheckParm("-stderr")) - outfd = 2; + sys.outfd = 2; else - outfd = 1; + sys.outfd = 1; -#ifdef FNDELAY - fcntl(0, F_SETFL, fcntl (0, F_GETFL, 0) | FNDELAY); -#endif + fcntl(0, F_SETFL, fcntl (0, F_GETFL, 0) | O_NDELAY); Host_Main();