mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2024-11-26 22:31:05 +00:00
use the dynamic buffer for both curses and stdout
This commit is contained in:
parent
9ffe53178c
commit
3909176957
1 changed files with 18 additions and 20 deletions
|
@ -174,24 +174,26 @@ C_Shutdown (void)
|
|||
static void
|
||||
C_Print (const char *fmt, va_list args)
|
||||
{
|
||||
static unsigned char *buffer;
|
||||
unsigned char *txt;
|
||||
int size;
|
||||
static int buffer_size;
|
||||
|
||||
size = vsnprintf (buffer, buffer_size, fmt, args);
|
||||
if (size + 1 > buffer_size) {
|
||||
buffer_size = ((size + 1 + 1024) / 1024) * 1024; // 1k multiples
|
||||
buffer = realloc (buffer, buffer_size);
|
||||
if (!buffer)
|
||||
Sys_Error ("console: could not allocate %d bytes\n",
|
||||
buffer_size);
|
||||
vsnprintf (buffer, buffer_size, fmt, args);
|
||||
}
|
||||
|
||||
txt = buffer;
|
||||
#ifdef HAVE_CURSES_H
|
||||
if (use_curses) {
|
||||
char *txt;
|
||||
static char *buffer;
|
||||
int size;
|
||||
static int buffer_size;
|
||||
chtype ch;
|
||||
|
||||
size = vsnprintf (buffer, buffer_size, fmt, args);
|
||||
if (size + 1 > buffer_size) {
|
||||
buffer_size = ((size + 1 + 1024) / 1024) * 1024; // 1k multiples
|
||||
buffer = realloc (buffer, buffer_size);
|
||||
if (!buffer)
|
||||
Sys_Error ("console: could not allocate %d bytes\n",
|
||||
buffer_size);
|
||||
vsnprintf (buffer, buffer_size, fmt, args);
|
||||
}
|
||||
|
||||
txt = buffer;
|
||||
|
||||
while ((ch = (byte)*txt++)) {
|
||||
|
@ -203,12 +205,8 @@ C_Print (const char *fmt, va_list args)
|
|||
} else
|
||||
#endif
|
||||
{
|
||||
char msg[4096];
|
||||
unsigned char *p;
|
||||
|
||||
vsnprintf (msg, sizeof (msg), fmt, args);
|
||||
for (p = (unsigned char *) msg; *p; p++)
|
||||
putc (sys_char_map[*p], stdout);
|
||||
while (*txt)
|
||||
putc (sys_char_map[*txt++], stdout);
|
||||
fflush (stdout);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue