Esempio n. 1
0
void Utils::appendText(wchar_t **str, int *sizeAlloced, const wchar_t *fmt, ...)
{
    va_list vararg;
    wchar_t *p;
    int size, len;

    if (str == NULL) return;

    if (*str==NULL || *sizeAlloced<=0) {
        *sizeAlloced = size = 2048;
        *str = (wchar_t *) malloc(size);
        len = 0;
    }
    else {
        len = (int)wcslen(*str);
        size = *sizeAlloced - sizeof(wchar_t) * len;
    }

    if (size < 128) {
        size += 2048;
        (*sizeAlloced) += 2048;
        *str = (wchar_t *) realloc(*str, *sizeAlloced);
    }
    p = *str + len;
    va_start(vararg, fmt);
    while (mir_vsnwprintf(p, size / sizeof(wchar_t) - 1, fmt, vararg) == -1) {
        size += 2048;
        (*sizeAlloced) += 2048;
        *str = (wchar_t *) realloc(*str, *sizeAlloced);
        p = *str + len;
    }
    p[ size / sizeof(wchar_t) - 1] = '\0';
    va_end(vararg);
}
Esempio n. 2
0
void _DebugTraceW(const wchar_t *fmt, ...)
{
#ifdef _DEBUG
    wchar_t debug[2048];
    int ibsize = 2047;
    va_list va;
    va_start(va, fmt);

    lstrcpyW(debug, L"CLN: ");

    mir_vsnwprintf(&debug[5], ibsize - 10, fmt, va);
    OutputDebugStringW(debug);
#endif
}
Esempio n. 3
0
void DebugLogW(HANDLE File,const WCHAR *fmt,...)
{
	WCHAR *str;
	char tids[32];
	va_list vararg;
	int strsize;
	DWORD Written;

	va_start(vararg,fmt);
	str=(WCHAR *)malloc((strsize=65536)*sizeof(WCHAR));
	mir_snprintf(tids, "[%x]",GetCurrentThreadId());
	while(mir_vsnwprintf(str, strsize, fmt, vararg)==-1)
		str=(WCHAR *)realloc(str,(strsize+=65536)*sizeof(WCHAR));
	va_end(vararg);
	EnterCriticalSection(&FileAccessCS);
	WriteFile(File,tids,(DWORD)mir_strlen(tids),&Written,NULL);
	WriteFile(File,str,(DWORD)mir_wstrlen(str)*sizeof(WCHAR),&Written,NULL);
	LeaveCriticalSection(&FileAccessCS);
	free(str);
}