div0 fixed the bug that caused huge console prints to the terminal to be truncated...
authorhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Thu, 23 Feb 2006 01:48:09 +0000 (01:48 +0000)
committerhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Thu, 23 Feb 2006 01:48:09 +0000 (01:48 +0000)
git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@6005 d7cf8633-e32d-0410-b094-e92efae38249

sys_linux.c
sys_sdl.c

index 0515c93..13bc04f 100644 (file)
@@ -51,7 +51,22 @@ void Sys_Error (const char *error, ...)
 
 void Sys_PrintToTerminal(const char *text)
 {
-       fprintf(stdout, "%s", text);
+#ifndef WIN32
+       // BUG: for some reason, NDELAY also affects stdout (1) when used on stdin (0).
+       int origflags = fcntl (1, F_GETFL, 0);
+       fcntl (1, F_SETFL, origflags & ~FNDELAY);
+#endif
+       while(*text)
+       {
+               ssize_t written = write(1, text, strlen(text));
+               if(written <= 0)
+                       break; // sorry, I cannot do anything about this error - without an output
+               text += written;
+       }
+#ifndef WIN32
+       fcntl (1, F_SETFL, origflags);
+#endif
+       //fprintf(stdout, "%s", text);
 }
 
 double Sys_DoubleTime (void)
index 4187d52..3833fda 100644 (file)
--- a/sys_sdl.c
+++ b/sys_sdl.c
@@ -49,7 +49,22 @@ void Sys_Error (const char *error, ...)
 
 void Sys_PrintToTerminal(const char *text)
 {
-       fprintf(stdout, "%s", text);
+#ifndef WIN32
+       // BUG: for some reason, NDELAY also affects stdout (1) when used on stdin (0).
+       int origflags = fcntl (1, F_GETFL, 0);
+       fcntl (1, F_SETFL, origflags & ~FNDELAY);
+#endif
+       while(*text)
+       {
+               ssize_t written = write(1, text, strlen(text));
+               if(written <= 0)
+                       break; // sorry, I cannot do anything about this error - without an output
+               text += written;
+       }
+#ifndef WIN32
+       fcntl (1, F_SETFL, origflags);
+#endif
+       //fprintf(stdout, "%s", text);
 }
 
 double Sys_DoubleTime (void)