void write_log (const TCHAR *format, ...) { int count; TCHAR buffer[WRITE_LOG_BUF_SIZE], *ts; int bufsize = WRITE_LOG_BUF_SIZE; TCHAR *bufp; va_list parms; if (!cs_init) return; premsg (); if (!_tcsicmp (format, _T("*"))) count = 0; EnterCriticalSection (&cs); va_start (parms, format); bufp = buffer; for (;;) { count = _vsntprintf (bufp, bufsize - 1, format, parms); if (count < 0) { bufsize *= 10; if (bufp != buffer) xfree (bufp); bufp = xmalloc (TCHAR, bufsize); continue; } break; } bufp[bufsize - 1] = 0; if (!_tcsncmp (bufp, _T("write "), 6)) bufsize--; ts = writets (); if (bufp[0] == '*') count++; if (SHOW_CONSOLE || console_logging) { if (lfdetected && ts) writeconsole (ts); writeconsole (bufp); } if (debugfile) { if (lfdetected && ts) _ftprintf (debugfile, _T("%s"), ts); _ftprintf (debugfile, _T("%s"), bufp); } lfdetected = 0; if (_tcslen (bufp) > 0 && bufp[_tcslen (bufp) - 1] == '\n') lfdetected = 1; va_end (parms); if (bufp != buffer) xfree (bufp); if (always_flush_log) flush_log (); LeaveCriticalSection (&cs); }
static void console_put (const TCHAR *buffer) { if (console_buffer) { if (_tcslen (console_buffer) + _tcslen (buffer) < console_buffer_size) _tcscat (console_buffer, buffer); } else { openconsole (); writeconsole (buffer); } }
void f_out (void *f, const TCHAR *format, ...) { int count; TCHAR buffer[WRITE_LOG_BUF_SIZE]; va_list parms; va_start (parms, format); if (f == NULL) return; count = _vsntprintf (buffer, WRITE_LOG_BUF_SIZE - 1, format, parms); openconsole (); writeconsole (buffer); va_end (parms); }
void jit_abort (const TCHAR *format,...) { static int happened; int count; TCHAR buffer[WRITE_LOG_BUF_SIZE]; va_list parms; va_start (parms, format); count = _vsntprintf (buffer, WRITE_LOG_BUF_SIZE - 1, format, parms); writeconsole (buffer); va_end (parms); if (!happened) gui_message (_T("JIT: Serious error:\n%s"), buffer); happened = 1; uae_reset (1, 0); }