[Windows] Use CRLF in the terminal prints.
This commit is contained in:
parent
daa81bbb7d
commit
497f65fa50
|
@ -42,20 +42,30 @@ void WindowsTerminalLogger::logv(const char *p_format, va_list p_list, bool p_er
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const unsigned int BUFFER_SIZE = 16384;
|
const int static_buffer_size = 1024;
|
||||||
char buf[BUFFER_SIZE + 1]; // +1 for the terminating character
|
char static_buf[static_buffer_size];
|
||||||
int len = vsnprintf(buf, BUFFER_SIZE, p_format, p_list);
|
char *buf = static_buf;
|
||||||
if (len <= 0) {
|
va_list list_copy;
|
||||||
|
va_copy(list_copy, p_list);
|
||||||
|
int len = vsnprintf(buf, static_buffer_size, p_format, p_list);
|
||||||
|
if (len >= static_buffer_size) {
|
||||||
|
buf = (char *)memalloc(len + 1);
|
||||||
|
len = vsnprintf(buf, len + 1, p_format, list_copy);
|
||||||
|
}
|
||||||
|
va_end(list_copy);
|
||||||
|
|
||||||
|
String str_buf = String::utf8(buf, len).replace("\r\n", "\n").replace("\n", "\r\n");
|
||||||
|
if (len >= static_buffer_size) {
|
||||||
|
memfree(buf);
|
||||||
|
}
|
||||||
|
CharString cstr_buf = str_buf.utf8();
|
||||||
|
if (cstr_buf.length() == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ((unsigned int)len >= BUFFER_SIZE) {
|
|
||||||
len = BUFFER_SIZE; // Output is too big, will be truncated
|
|
||||||
}
|
|
||||||
buf[len] = 0;
|
|
||||||
|
|
||||||
DWORD written = 0;
|
DWORD written = 0;
|
||||||
HANDLE h = p_err ? GetStdHandle(STD_ERROR_HANDLE) : GetStdHandle(STD_OUTPUT_HANDLE);
|
HANDLE h = p_err ? GetStdHandle(STD_ERROR_HANDLE) : GetStdHandle(STD_OUTPUT_HANDLE);
|
||||||
WriteFile(h, &buf[0], len, &written, nullptr);
|
WriteFile(h, cstr_buf.ptr(), cstr_buf.length(), &written, nullptr);
|
||||||
|
|
||||||
#ifdef DEBUG_ENABLED
|
#ifdef DEBUG_ENABLED
|
||||||
FlushFileBuffers(h);
|
FlushFileBuffers(h);
|
||||||
|
|
Loading…
Reference in New Issue