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);
}
Exemple #2
0
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);
	}
}
Exemple #3
0
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);
}
Exemple #4
0
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);
}