From 09cae06eca10c138fd7d8f71d860903b32ceb355 Mon Sep 17 00:00:00 2001 From: Bradley Bell Date: Tue, 30 Dec 2014 01:21:55 -0800 Subject: [PATCH] handle newlines in console better --- main/console.c | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/main/console.c b/main/console.c index a66194ce..1a8802bb 100644 --- a/main/console.c +++ b/main/console.c @@ -851,15 +851,27 @@ void CON_Out(const char *str, ...) { // width so we have to cut it into several pieces if(console->ConsoleLines) { - while(strlen(ptemp) > console->VChars) { - CON_NewLineConsole(); - strncpy(console->ConsoleLines[0], ptemp, console->VChars); + char *p = ptemp; + + while (*p) { + if (*p == '\n') { + *p = '\0'; + CON_NewLineConsole(); + strcat(console->ConsoleLines[0], ptemp); + ptemp = p+1; + } + if (p - ptemp > console->VChars - strlen(console->ConsoleLines[0])) { + CON_NewLineConsole(); + strncat(console->ConsoleLines[0], ptemp, console->VChars - strlen(console->ConsoleLines[0])); + console->ConsoleLines[0][console->VChars] = '\0'; + ptemp = p; + } + p++; + } + if (strlen(ptemp)) { + strncat(console->ConsoleLines[0], ptemp, console->VChars - strlen(console->ConsoleLines[0])); console->ConsoleLines[0][console->VChars] = '\0'; - ptemp = &ptemp[console->VChars]; } - CON_NewLineConsole(); - strncpy(console->ConsoleLines[0], ptemp, console->VChars); - console->ConsoleLines[0][console->VChars] = '\0'; CON_UpdateConsole(); } } -- 2.39.2