From ecf791f3900acd276fcabbca655bb2833dc50173 Mon Sep 17 00:00:00 2001 From: bones_was_here Date: Tue, 2 Jan 2024 16:41:30 +1000 Subject: [PATCH] deduplicate Sys_Print() Signed-off-by: bones_was_here --- sys_sdl.c | 41 ----------------------------------------- sys_shared.c | 48 +++++++++++++++++++++++++++++++++++++++++++----- sys_unix.c | 29 ----------------------------- 3 files changed, 43 insertions(+), 75 deletions(-) diff --git a/sys_sdl.c b/sys_sdl.c index bb9bb2b1..cec67c8f 100644 --- a/sys_sdl.c +++ b/sys_sdl.c @@ -1,15 +1,9 @@ #ifdef WIN32 -#include // Include this BEFORE darkplaces.h because it uses strncpy which trips DP_STATIC_ASSERT #else -#include #include #include #endif -#ifdef __ANDROID__ -#include -#endif - /* * Include this BEFORE darkplaces.h because it breaks wrapping * _Static_assert. Cloudwalk has no idea how or why so don't ask. @@ -52,41 +46,6 @@ void Sys_SDL_Dialog(const char *title, const char *string) SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, title, string, NULL); } -void Sys_Print(const char *text) -{ -#ifdef __ANDROID__ - if (developer.integer > 0) - { - __android_log_write(ANDROID_LOG_DEBUG, sys.argv[0], text); - } -#else - if(sys.outfd < 0) - return; -#ifndef WIN32 - // 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 (sys.outfd, F_GETFL, 0); - fcntl (sys.outfd, F_SETFL, origflags & ~O_NONBLOCK); -#endif -#ifdef WIN32 -#define write _write -#endif - while(*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; - } -#ifndef WIN32 - fcntl (sys.outfd, F_SETFL, origflags); - } -#endif - //fprintf(stdout, "%s", text); -#endif -} - char *Sys_GetClipboardData (void) { char *data = NULL; diff --git a/sys_shared.c b/sys_shared.c index aa028fdd..bb7ce9ce 100644 --- a/sys_shared.c +++ b/sys_shared.c @@ -4,11 +4,6 @@ # endif #endif -#include "quakedef.h" -#include "taskqueue.h" -#include "thread.h" -#include "libcurl.h" - #define SUPPORTDLL #ifdef WIN32 @@ -16,6 +11,7 @@ # include // timeGetTime # include // localtime # include // _kbhit, _getch, _putch +# include // write; Include this BEFORE darkplaces.h because it uses strncpy which trips DP_STATIC_ASSERT #ifdef _MSC_VER #pragma comment(lib, "winmm.lib") #endif @@ -23,6 +19,9 @@ # ifdef __FreeBSD__ # include # endif +# ifdef __ANDROID__ +# include +# endif # include # include # include @@ -34,6 +33,11 @@ #include +#include "quakedef.h" +#include "taskqueue.h" +#include "thread.h" +#include "libcurl.h" + static char sys_timestring[128]; char *Sys_TimeString(const char *timeformat) { @@ -543,6 +547,40 @@ double Sys_Sleep(double time) return (dt < 0 || dt >= 1800) ? 0 : dt; } +void Sys_Print(const char *text) +{ +#ifdef __ANDROID__ + if (developer.integer > 0) + { + __android_log_write(ANDROID_LOG_DEBUG, sys.argv[0], text); + } +#else + if(sys.outfd < 0) + return; + #ifndef WIN32 + // 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 (sys.outfd, F_GETFL, 0); + fcntl (sys.outfd, F_SETFL, origflags & ~O_NONBLOCK); + #else + #define write _write + #endif + while(*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; + } + #ifndef WIN32 + fcntl (sys.outfd, F_SETFL, origflags); + } + #endif + //fprintf(stdout, "%s", text); +#endif +} + void Sys_Printf(const char *fmt, ...) { va_list argptr; diff --git a/sys_unix.c b/sys_unix.c index 86a373c9..e041cce0 100644 --- a/sys_unix.c +++ b/sys_unix.c @@ -2,10 +2,8 @@ #ifdef WIN32 #include #include -#include #else #include -#include #include #endif @@ -28,33 +26,6 @@ void Sys_SDL_Dialog(const char *title, const char *string) { } -void Sys_Print(const char *text) -{ - if(sys.outfd < 0) - return; - // BUG: for some reason, NDELAY also affects stdout (1) when used on stdin (0). - // this is because both go to /dev/tty by default! - { -#ifndef WIN32 - int origflags = fcntl (sys.outfd, F_GETFL, 0); - fcntl (sys.outfd, F_SETFL, origflags & ~O_NONBLOCK); -#else -#define write _write -#endif - while(*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; - } -#ifndef WIN32 - fcntl (sys.outfd, F_SETFL, origflags); -#endif - } - //fprintf(stdout, "%s", text); -} - char *Sys_GetClipboardData (void) { return NULL; -- 2.39.2