X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=console.c;h=b99f7c4b02b0f8a6dde2dba2959d7d873ec668fe;hp=592e338e3ebc4ceb81583c497c57216007a7e297;hb=e3272446d9f13cc12b1822a99b4e7cf512454db9;hpb=5bdc0879026939f551a3ff217064732d59731be2 diff --git a/console.c b/console.c index 592e338e..b99f7c4b 100644 --- a/console.c +++ b/console.c @@ -39,7 +39,7 @@ int con_backscroll; int con_current; // offset in current line for next print int con_x; -char *con_text = 0; +char con_text[CON_TEXTSIZE]; //seconds cvar_t con_notifytime = {CVAR_SAVE, "con_notifytime","3"}; @@ -51,17 +51,8 @@ float con_times[MAX_NOTIFYLINES]; int con_vislines; -#define MAXCMDLINE 256 -extern char key_lines[32][MAXCMDLINE]; -extern int edit_line; -extern int key_linepos; -extern int key_insert; - - qboolean con_initialized; -mempool_t *console_mempool; - /* ============================================================================== @@ -72,7 +63,6 @@ LOGGING */ cvar_t log_file = {0, "log_file",""}; -cvar_t log_sync = {0, "log_sync","0"}; char crt_log_file [MAX_OSPATH] = ""; qfile_t* logfile = NULL; @@ -100,40 +90,14 @@ const char* Log_Timestamp (const char *desc) strftime (timestring, sizeof (timestring), "%a %b %d %H:%M:%S %Y", crt_tm); if (desc != NULL) - snprintf (timestamp, sizeof (timestamp), "====== %s (%s) ======\n", desc, timestring); + dpsnprintf (timestamp, sizeof (timestamp), "====== %s (%s) ======\n", desc, timestring); else - snprintf (timestamp, sizeof (timestamp), "====== %s ======\n", timestring); + dpsnprintf (timestamp, sizeof (timestamp), "====== %s ======\n", timestring); return timestamp; } -/* -==================== -Log_Init -==================== -*/ -void Log_Init (void) -{ - // Allocate a log queue - logq_size = 512; - logqueue = Mem_Alloc (tempmempool, logq_size); - logq_ind = 0; - - Cvar_RegisterVariable (&log_file); - Cvar_RegisterVariable (&log_sync); - - // support for the classic Quake option -// COMMANDLINEOPTION: Console: -condebug logs console messages to qconsole.log with sync on (so it keeps every message up to a crash), see also log_file and log_sync - if (COM_CheckParm ("-condebug") != 0) - { - Cvar_SetQuick (&log_file, "qconsole.log"); - Cvar_SetValueQuick (&log_sync, 1); - unlink (va("%s/qconsole.log", fs_gamedir)); - } -} - - /* ==================== Log_Open @@ -144,7 +108,7 @@ void Log_Open (void) if (logfile != NULL || log_file.string[0] == '\0') return; - logfile = FS_Open (log_file.string, "at", false); + logfile = FS_Open (log_file.string, "ab", false, false); if (logfile != NULL) { strlcpy (crt_log_file, log_file.string, sizeof (crt_log_file)); @@ -202,10 +166,12 @@ Log_ConPrint void Log_ConPrint (const char *msg) { static qboolean inprogress = false; + // don't allow feedback loops with memory error reports if (inprogress) return; inprogress = true; + // Until the host is completely initialized, we maintain a log queue // to store the messages, since the log can't be started before if (logqueue != NULL) @@ -216,7 +182,7 @@ void Log_ConPrint (const char *msg) // If we need to enlarge the log queue if (len > remain) { - unsigned int factor = ((logq_ind + len) / logq_size) + 1; + size_t factor = ((logq_ind + len) / logq_size) + 1; qbyte* newqueue; logq_size *= factor; @@ -242,31 +208,11 @@ void Log_ConPrint (const char *msg) // If a log file is available if (logfile != NULL) - { FS_Print (logfile, msg); - if (log_sync.integer) - FS_Flush (logfile); - } inprogress = false; } -/* -================ -Log_Print -================ -*/ -void Log_Print (const char *logfilename, const char *msg) -{ - qfile_t *file; - file = FS_Open(logfilename, "at", true); - if (file) - { - FS_Print(file, msg); - FS_Close(file); - } -} - /* ================ Log_Printf @@ -276,7 +222,7 @@ void Log_Printf (const char *logfilename, const char *fmt, ...) { qfile_t *file; - file = FS_Open (logfilename, "at", true); + file = FS_Open (logfilename, "ab", true, false); if (file != NULL) { va_list argptr; @@ -372,50 +318,40 @@ void Con_CheckResize (void) int i, j, width, oldwidth, oldtotallines, numlines, numchars; char tbuf[CON_TEXTSIZE]; - width = (vid.conwidth >> 3); + width = (vid_conwidth.integer >> 3); if (width == con_linewidth) return; - if (width < 1) // video hasn't been initialized yet - { - width = 80; - con_linewidth = width; - con_totallines = CON_TEXTSIZE / con_linewidth; - memset (con_text, ' ', CON_TEXTSIZE); - } - else - { - oldwidth = con_linewidth; - con_linewidth = width; - oldtotallines = con_totallines; - con_totallines = CON_TEXTSIZE / con_linewidth; - numlines = oldtotallines; + oldwidth = con_linewidth; + con_linewidth = width; + oldtotallines = con_totallines; + con_totallines = CON_TEXTSIZE / con_linewidth; + numlines = oldtotallines; - if (con_totallines < numlines) - numlines = con_totallines; + if (con_totallines < numlines) + numlines = con_totallines; - numchars = oldwidth; + numchars = oldwidth; - if (con_linewidth < numchars) - numchars = con_linewidth; + if (con_linewidth < numchars) + numchars = con_linewidth; - memcpy (tbuf, con_text, CON_TEXTSIZE); - memset (con_text, ' ', CON_TEXTSIZE); + memcpy (tbuf, con_text, CON_TEXTSIZE); + memset (con_text, ' ', CON_TEXTSIZE); - for (i=0 ; i= (size_t) con_linewidth) + while ((int)strlen(temptext) >= con_linewidth) { - DrawQ_String (0, v, temptext, con_linewidth, 8, 8, 1, 1, 1, 1, 0); + DrawQ_ColoredString( 0, v, temptext, con_linewidth, 8, 8, 1.0, 1.0, 1.0, 1.0, 0, &colorindex ); strcpy(temptext, &temptext[con_linewidth]); v += 8; } if (strlen(temptext) > 0) { - DrawQ_String (0, v, temptext, 0, 8, 8, 1, 1, 1, 1, 0); + DrawQ_ColoredString( 0, v, temptext, 0, 8, 8, 1.0, 1.0, 1.0, 1.0, 0, &colorindex ); v += 8; } } @@ -872,16 +807,17 @@ void Con_DrawConsole (int lines) { int i, y, rows, j; char *text; + int colorindex = -1; if (lines <= 0) return; // draw the background if (scr_conbrightness.value >= 0.01f) - DrawQ_Pic(0, lines - vid.conheight, "gfx/conback", vid.conwidth, vid.conheight, scr_conbrightness.value, scr_conbrightness.value, scr_conbrightness.value, scr_conalpha.value, 0); + DrawQ_Pic(0, lines - vid_conheight.integer, "gfx/conback", vid_conwidth.integer, vid_conheight.integer, scr_conbrightness.value, scr_conbrightness.value, scr_conbrightness.value, scr_conalpha.value, 0); else - DrawQ_Fill(0, lines - vid.conheight, vid.conwidth, vid.conheight, 0, 0, 0, scr_conalpha.value, 0); - DrawQ_String(vid.conwidth - strlen(engineversion) * 8 - 8, lines - 8, engineversion, 0, 8, 8, 1, 0, 0, 1, 0); + DrawQ_Fill(0, lines - vid_conheight.integer, vid_conwidth.integer, vid_conheight.integer, 0, 0, 0, scr_conalpha.value, 0); + DrawQ_String(vid_conwidth.integer - strlen(engineversion) * 8 - 8, lines - 8, engineversion, 0, 8, 8, 1, 0, 0, 1, 0); // draw the text con_vislines = lines; @@ -894,7 +830,7 @@ void Con_DrawConsole (int lines) j = max(i - con_backscroll, 0); text = con_text + (j % con_totallines)*con_linewidth; - DrawQ_String(0, y, text, con_linewidth, 8, 8, 1, 1, 1, 1, 0); + DrawQ_ColoredString( 0, y, text, con_linewidth, 8, 8, 1.0, 1.0, 1.0, 1.0, 0, &colorindex ); } // draw the input prompt, user text, and cursor if desired @@ -915,7 +851,7 @@ void Con_DisplayList(const char **list) const char **walk = list; while (*walk) { - len = strlen(*walk); + len = (int)strlen(*walk); if (len > maxlen) maxlen = len; walk++; @@ -923,7 +859,7 @@ void Con_DisplayList(const char **list) maxlen += 1; while (*list) { - len = strlen(*list); + len = (int)strlen(*list); if (pos + maxlen >= width) { Con_Print("\n"); pos = 0; @@ -973,7 +909,7 @@ void Con_CompleteCommandLine (void) else list[0] = Cmd_CompleteAliasBuildList(s); cmd = *list[0]; - cmd_len = strlen (cmd); + cmd_len = (int)strlen (cmd); } else { if (c) cmd = *(list[0] = Cmd_CompleteBuildList(s)); @@ -982,7 +918,7 @@ void Con_CompleteCommandLine (void) if (a) cmd = *(list[2] = Cmd_CompleteAliasBuildList(s)); - cmd_len = strlen (s); + cmd_len = (int)strlen (s); do { for (i = 0; i < 3; i++) { char ch = cmd[cmd_len];