]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - console.c
WIN32: changed stricmp and strnicmp to have an underscore prefix
[xonotic/darkplaces.git] / console.c
index b6f49ee42b8f49fff081b5bd1dfcf2d0c8154179..d7e614a120c221380fd737cc8f314a9cfd2501f8 100644 (file)
--- a/console.c
+++ b/console.c
@@ -77,8 +77,9 @@ LOGGING
 
 cvar_t log_file = {0, "log_file","", "filename to log messages to"};
 cvar_t log_dest_udp = {0, "log_dest_udp","", "UDP address to log messages to (in QW rcon compatible format); multiple destinations can be separated by spaces; DO NOT SPECIFY DNS NAMES HERE"};
-char log_dest_buffer[1500]; // UDP packet
+char log_dest_buffer[1400]; // UDP packet
 size_t log_dest_buffer_pos;
+qboolean log_dest_buffer_appending;
 char crt_log_file [MAX_OSPATH] = "";
 qfile_t* logfile = NULL;
 
@@ -112,10 +113,11 @@ void Log_DestBuffer_Flush()
        qboolean have_opened_temp_sockets = false;
        if(s) if(log_dest_buffer_pos > 5)
        {
+               ++log_dest_buffer_appending;
                log_dest_buffer[log_dest_buffer_pos++] = 0;
 
                if(!NetConn_HaveServerPorts() && !NetConn_HaveClientPorts()) // then temporarily open one
-               {
+               {
                        have_opened_temp_sockets = true;
                        NetConn_OpenServerPorts(true);
                }
@@ -132,6 +134,7 @@ void Log_DestBuffer_Flush()
 
                if(have_opened_temp_sockets)
                        NetConn_CloseServerPorts();
+               --log_dest_buffer_appending;
        }
        log_dest_buffer_pos = 0;
 }
@@ -670,6 +673,38 @@ static char qfont_table[256] = {
        'x',  'y',  'z',  '{',  '|',  '}',  '~',  '<'
 };
 
+/*
+================
+Con_Rcon_AddChar
+
+Adds a character to the rcon buffer
+================
+*/
+void Con_Rcon_AddChar(char c)
+{
+       if(log_dest_buffer_appending)
+               return;
+       ++log_dest_buffer_appending;
+
+       // if this print is in response to an rcon command, add the character
+       // to the rcon redirect buffer
+
+       if (rcon_redirect && rcon_redirect_bufferpos < (int)sizeof(rcon_redirect_buffer) - 1)
+               rcon_redirect_buffer[rcon_redirect_bufferpos++] = c;
+       else if(*log_dest_udp.string) // don't duplicate rcon command responses here, these are sent another way
+       {
+               if(log_dest_buffer_pos == 0)
+                       Log_DestBuffer_Init();
+               log_dest_buffer[log_dest_buffer_pos++] = c;
+               if(log_dest_buffer_pos >= sizeof(log_dest_buffer) - 1) // minus one, to allow for terminating zero
+                       Log_DestBuffer_Flush();
+       }
+       else
+               log_dest_buffer_pos = 0;
+
+       --log_dest_buffer_appending;
+}
+
 /*
 ================
 Con_Print
@@ -682,27 +717,13 @@ extern cvar_t timeformat;
 extern qboolean sys_nostdout;
 void Con_Print(const char *msg)
 {
-       int mask = 0;
+       static int mask = 0;
        static int index = 0;
        static char line[MAX_INPUTLINE];
 
        for (;*msg;msg++)
        {
-               // if this print is in response to an rcon command, add the character
-               // to the rcon redirect buffer
-               if (rcon_redirect && rcon_redirect_bufferpos < (int)sizeof(rcon_redirect_buffer) - 1)
-                       rcon_redirect_buffer[rcon_redirect_bufferpos++] = *msg;
-               else if(*log_dest_udp.string) // don't duplicate rcon command responses here, these are sent another way
-               {
-                       if(log_dest_buffer_pos == 0)
-                               Log_DestBuffer_Init();
-                       log_dest_buffer[log_dest_buffer_pos++] = *msg;
-                       if(log_dest_buffer_pos >= sizeof(log_dest_buffer) - 1) // minus one, to allow for terminating zero
-                               Log_DestBuffer_Flush();
-               }
-               else
-                       log_dest_buffer_pos = 0;
-
+               Con_Rcon_AddChar(*msg);
                // if this is the beginning of a new line, print timestamp
                if (index == 0)
                {
@@ -727,6 +748,7 @@ void Con_Print(const char *msg)
                                line[index++] = STRING_COLOR_TAG;
                                line[index++] = '3';
                                msg++;
+                               Con_Rcon_AddChar(*msg);
                        }
                        // store timestamp
                        for (;*timestamp;index++, timestamp++)