qboolean con_initialized;
// used for server replies to rcon command
-qboolean rcon_redirect = false;
+lhnetsocket_t *rcon_redirect_sock = NULL;
+lhnetaddress_t *rcon_redirect_dest = NULL;
int rcon_redirect_bufferpos = 0;
char rcon_redirect_buffer[1400];
{
static char timestamp [128];
time_t crt_time;
- const struct tm *crt_tm;
+#if _MSC_VER >= 1400
+ struct tm crt_tm;
+#else
+ struct tm *crt_tm;
+#endif
char timestring [64];
// Build the time stamp (ex: "Wed Jun 30 21:49:08 1993");
time (&crt_time);
+#if _MSC_VER >= 1400
+ localtime_s (&crt_tm, &crt_time);
+ strftime (timestring, sizeof (timestring), "%a %b %d %H:%M:%S %Y", &crt_tm);
+#else
crt_tm = localtime (&crt_time);
strftime (timestring, sizeof (timestring), "%a %b %d %H:%M:%S %Y", crt_tm);
+#endif
if (desc != NULL)
dpsnprintf (timestamp, sizeof (timestamp), "====== %s (%s) ======\n", desc, timestring);
if (logfile != NULL || log_file.string[0] == '\0')
return;
- logfile = FS_Open (log_file.string, "ab", false, false);
+ logfile = FS_OpenRealFile(log_file.string, "a", false);
if (logfile != NULL)
{
strlcpy (crt_log_file, log_file.string, sizeof (crt_log_file));
{
qfile_t *file;
- file = FS_Open (logfilename, "ab", true, false);
+ file = FS_OpenRealFile(logfilename, "a", true);
if (file != NULL)
{
va_list argptr;
Con_Printf("usage: condump <filename>\n");
return;
}
- file = FS_Open(Cmd_Argv(1), "wb", false, false);
+ file = FS_OpenRealFile(Cmd_Argv(1), "w", false);
if (!file)
{
Con_Printf("condump: unable to write file \"%s\"\n", Cmd_Argv(1));
'x', 'y', 'z', '{', '|', '}', '~', '<'
};
+void Con_Rcon_Redirect_Init(lhnetsocket_t *sock, lhnetaddress_t *dest)
+{
+ rcon_redirect_sock = sock;
+ rcon_redirect_dest = dest;
+ memcpy(rcon_redirect_buffer, "\377\377\377\377n", 5); // QW rcon print
+ rcon_redirect_bufferpos = 5;
+}
+
+void Con_Rcon_Redirect_Flush()
+{
+ rcon_redirect_buffer[rcon_redirect_bufferpos] = 0;
+ NetConn_WriteString(rcon_redirect_sock, rcon_redirect_buffer, rcon_redirect_dest);
+ memcpy(rcon_redirect_buffer, "\377\377\377\377n", 5); // QW rcon print
+ rcon_redirect_bufferpos = 5;
+}
+
+void Con_Rcon_Redirect_End()
+{
+ Con_Rcon_Redirect_Flush();
+ rcon_redirect_dest = NULL;
+ rcon_redirect_sock = NULL;
+}
+
+void Con_Rcon_Redirect_Abort()
+{
+ rcon_redirect_dest = NULL;
+ rcon_redirect_sock = NULL;
+}
+
/*
================
Con_Rcon_AddChar
// 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)
+ if (rcon_redirect_dest)
+ {
rcon_redirect_buffer[rcon_redirect_bufferpos++] = c;
+ if(rcon_redirect_bufferpos >= (int)sizeof(rcon_redirect_buffer) - 1)
+ Con_Rcon_Redirect_Flush();
+ }
else if(*log_dest_udp.string) // don't duplicate rcon command responses here, these are sent another way
{
if(log_dest_buffer_pos == 0)
if(w == NULL)
{
ti->colorindex = -1;
- return ti->fontsize * ti->font->width_of[0];
+ return ti->fontsize * ti->font->maxwidth;
}
if(maxWidth >= 0)
return DrawQ_TextWidth_Font_UntilWidth(w, length, false, ti->font, maxWidth / ti->fontsize) * ti->fontsize;
// LordHavoc: speedup, and other improvements
if (chat_team)
- sprintf(temptext, "say_team:%s%c", chat_buffer, (int) 10+((int)(realtime*con_cursorspeed)&1));
+ dpsnprintf(temptext, sizeof(temptext), "say_team:%s%c", chat_buffer, (int) 10+((int)(realtime*con_cursorspeed)&1));
else
- sprintf(temptext, "say:%s%c", chat_buffer, (int) 10+((int)(realtime*con_cursorspeed)&1));
+ dpsnprintf(temptext, sizeof(temptext), "say:%s%c", chat_buffer, (int) 10+((int)(realtime*con_cursorspeed)&1));
// FIXME word wrap
inputsize = (numChatlines ? con_chatsize : con_notifysize).value;
qboolean GetMapList (const char *s, char *completedname, int completednamebufferlength)
{
fssearch_t *t;
- char message[64];
+ char message[1024];
int i, k, max, p, o, min;
unsigned char *len;
qfile_t *f;
unsigned char buf[1024];
- sprintf(message, "maps/%s*.bsp", s);
+ dpsnprintf(message, sizeof(message), "maps/%s*.bsp", s);
t = FS_Search(message, 1, true);
if(!t)
return false;
char entfilename[MAX_QPATH];
strlcpy(message, "^1**ERROR**^7", sizeof(message));
p = 0;
- f = FS_Open(t->filenames[i], "rb", true, false);
+ f = FS_OpenVirtualFile(t->filenames[i], true);
if(f)
{
memset(buf, 0, 1024);