Esempio n. 1
0
bool naStringFormatV( std::wstring& rstrOutput, const wchar_t* format, va_list ap)
{
    wchar_t wszLocalBuffer[256];
    va_list vaClone;

    va_copy(vaClone, ap);
    int nOutputSize = _vsnwprintf(wszLocalBuffer, sizeof(wszLocalBuffer)/sizeof(wszLocalBuffer[0]), format, vaClone);
    va_end(vaClone);
    if( nOutputSize < 0 )
        return false;
    if( nOutputSize < (sizeof(wszLocalBuffer)/sizeof(wszLocalBuffer[0]))) {
        rstrOutput.assign( wszLocalBuffer, nOutputSize );
        return true;
    }

    wchar_t* szDynamicBuffer = new wchar_t[nOutputSize+1];
    va_copy(vaClone, ap);
    nOutputSize = _vsnwprintf(szDynamicBuffer, nOutputSize+1, format, vaClone);
    va_end(vaClone);
    if( nOutputSize < 0 ) {
        delete[] szDynamicBuffer;
        return false;
    }
    rstrOutput.append( szDynamicBuffer, nOutputSize );
    delete[] szDynamicBuffer;
    return true;
}
Esempio n. 2
0
void GUI_Laftfont::printgl(int x, int y, int z, const wchar_t *fmt, ...)
{
	wchar_t			text[2048];
	va_list			ap;
	size_t			str_len;

	if ((!listsFont) || (!fmt)) return;

	va_start(ap, fmt);
	#ifdef WIN32
		_vsnwprintf(text, 2048, fmt, ap);
	#else
		vswprintf(text, 2048, fmt, ap);
	#endif
	va_end(ap);
	str_len = wcslen(text);

	// should be in modelview mode
	glPushMatrix();
	glLoadIdentity();
	glEnable(GL_TEXTURE_2D);
	glListBase(listsFont);
	glTranslatef((float)x, (float)y, (float)z);
	glScalef(1.0f, -1.0f, 1.0f);
	#ifdef WIN32
		glCallLists((GLsizei)(str_len), GL_UNSIGNED_SHORT, text);
	#else
		glCallLists((GLsizei)(str_len), GL_UNSIGNED_INT, text);
	#endif
	glDisable(GL_TEXTURE_2D);
	glPopMatrix();

	return;
}
//////////////////////////////////////////////////////////////////
// void InternalTrace
//
//////////////////////////////////////////////////////////////////
void InternalTrace(const WCHAR*	pwszFmt, ...)
{
	va_list		marker;
	WCHAR		wszBuffer[MAX_TRACE_LEN];
	CHAR		szBuffer[MAX_TRACE_LEN];

	// Use format and arguements as input
	//This version will not overwrite the stack, since it only copies
	//upto the max size of the array
	va_start(marker, pwszFmt);
	_vsnwprintf(wszBuffer, MAX_TRACE_LEN, pwszFmt, marker);
	va_end(marker);

	//Make sure there is a NULL Terminator, vsnwprintf will not copy
	//the terminator if length==MAX_TRACE_LEN
	wszBuffer[MAX_TRACE_LEN-2] = L'\n';
	wszBuffer[MAX_TRACE_LEN-1] = L'\0';
	
	//Convert to MBCS
	ConvertToMBCS(wszBuffer, szBuffer, MAX_TRACE_LEN);
	
	//Output to the DebugWindow
	for(ULONG x=0; x <= strlen(szBuffer); x+=1029)
		OutputDebugStringA(szBuffer+x);
}
Esempio n. 4
0
int InfoMessageBox(HWND hWnd, UINT uType, LPCWSTR lpTitle, LPCWSTR lpMessage, ...)
{
    int iRet = 0;
    LPWSTR lpMsgBuf = NULL;

    va_list args = NULL;
    va_start(args, lpMessage);

    if (lpMessage)
    {
        SIZE_T strLen = _vscwprintf(lpMessage, args);

        /* Create a buffer on the heap and zero it out (LPTR) */
        lpMsgBuf = (LPWSTR)LocalAlloc(LPTR, (strLen + 1) * sizeof(WCHAR));
        if (lpMsgBuf)
        {
            _vsnwprintf(lpMsgBuf, strLen, lpMessage, args);
        }
    }

    va_end(args);

    iRet = MessageBoxW(hWnd, (lpMessage && lpMsgBuf ? lpMsgBuf : L"Error displaying info message."), lpTitle, uType);

    if (lpMsgBuf) LocalFree(lpMsgBuf);

    /* Return the MessageBoxW information */
    return iRet;
}
Esempio n. 5
0
bool HkAddConnectLog(uint iClientID, wstring wscReason, ...)
{
	wchar_t wszBuf[1024*8] = L"";
	va_list marker;
	va_start(marker, wscReason);

	_vsnwprintf(wszBuf, (sizeof(wszBuf) / 2) - 1, wscReason.c_str(), marker);

	FILE *f = fopen(("./flhook_logs/flhook_connects.log"), "at");
	if(!f)
		return false;

	const wchar_t *wszCharname = (wchar_t*)Players.GetActiveCharacterName(iClientID);
	if(!wszCharname)
		wszCharname = L"";

	CAccount *acc = Players.FindAccountFromClientID(iClientID);
	wstring wscAccountDir;
	HkGetAccountDirName(acc, wscAccountDir);

	time_t tNow = time(0);
	struct tm *stNow = localtime(&tNow);
	fprintf(f, "%.2d/%.2d/%.4d %.2d:%.2d:%.2d Connect (%s): %s(%s)(%s)\n", stNow->tm_mon + 1, stNow->tm_mday, stNow->tm_year + 1900, stNow->tm_hour, stNow->tm_min, stNow->tm_sec, wstos(wszBuf).c_str(), wstos(wszCharname).c_str(), wstos(wscAccountDir).c_str(), wstos(HkGetAccountID(acc)).c_str());
	fclose(f);
	return true;
}
Esempio n. 6
0
/*
	输  入: lpszFileName(const wchar_t*) - [in]日志文件路径
	输  出: -
	功  能: 将错误调试信息写如日志文件
*/
void LogErrorToFile(const wchar_t* lpszFileName, wchar_t* lpszFormat,...)
{
	errno_t err;
	va_list args;
	va_start(args, lpszFormat);

	// 格式化命令为标准字符串
	const int BUFFER_SIZE = 512;
	wchar_t szBuffer[BUFFER_SIZE];

	// _ASSERT is VC only.If you use gcc,please use assert instead
	int nBuffRet = _vsnwprintf(szBuffer, BUFFER_SIZE, lpszFormat, args);
	_ASSERT(nBuffRet >= 0);	 

	// 使文件流支持Unicode下的中文.
	_wsetlocale(LC_ALL, L"CHS");

	int nWriteRet = WriteFile(lpszFileName, szBuffer);
	_ASSERT(nWriteRet);

	if (!nWriteRet)
	{
		_get_errno(&err);
		wprintf(L"LogFile writes failed.Error code is %d\n", err);
	}

	va_end(args);
}
Esempio n. 7
0
	static void outputDebugStringV(
								const wchar_t*	module,
								const wchar_t*	format,
								va_list			args)
	{
		USES_CONVERSION;
		wchar_t		szBuffer[2048]=L"";
		const int	nBuffer=sizeof(szBuffer)/sizeof(szBuffer[0]);
		int result=0;

		if(0)//if(module)
		{
			const int nCharsToStore=nBuffer/2;
			result=_snwprintf(szBuffer, nCharsToStore, L"%ls: ", module);
			szBuffer[nCharsToStore-1]=0;
			if(result < 0)
				wcscat(szBuffer, L"...\n");
			OutputDebugString(W2CT(szBuffer));
		};
		const int nCharsToStore=nBuffer/2;
		result=_vsnwprintf(szBuffer, nCharsToStore, format, args);
		szBuffer[nCharsToStore-1]=0;
		if(result < 0)
			wcscat(szBuffer, L"...\n");
		OutputDebugString(W2CT(szBuffer));
	};
Esempio n. 8
0
/////////////////////////////////////
// Name:	
// Purpose:	
// Output:	
// Return:	
/////////////////////////////////////
void LogPrintf(u32 flags, const tCHAR *str, ...)
{
	tCHAR buff[512];								// Holds Our String

	//remove first element if line number exceeds
	if(g_lines.size() == LOG_MAX_LINE)
		g_lines.erase(g_lines.begin());

	//do the printf thing
	va_list valist;
	va_start(valist, str);
	_vsnwprintf(buff, sizeof(buff), str, valist);
	va_end(valist);

	g_lines.push_back(buff);

	//debug purpose...
	if(TESTFLAGS(flags, LOG_FILE))
	{
		FILE *fp = _wfopen(L"dbg_log.txt", L"a");
		if(fp)
		{
			fwprintf(fp, L"%s\n", buff);

			fclose(fp);
		}
	}

	if(TESTFLAGS(flags, LOG_ASSERT))
		ASSERT_MSG(0, buff, 0);
}
Esempio n. 9
0
void IIEP::WriteLog(const WORD *pcwsFormat, ...)
{
  WCHAR wcBuffer[0x8000];

  va_list pcArg;

  va_start(pcArg, pcwsFormat);
  _vsnwprintf(wcBuffer, 0x8000, pcwsFormat, pcArg);
  va_end(pcArg);

  FILE *phFile;

  #define LOG_FILE "C:\\IIEP.LOG"

  if (s_bLogFileOpened)
  {
    phFile = fopen(LOG_FILE, "a");
  }
  else
  {
    phFile = fopen(LOG_FILE, "w");

    s_bLogFileOpened = true;
  }

  if (phFile)
  {
    fwprintf(phFile, wcBuffer);
    fclose(phFile);
  }
}
Esempio n. 10
0
//.-.-.-.-.-.-.-.-.-.-.-.-.-.- DtOptException::DtOptException -.-.-.-.-.-.-.-.-.-.-.-.-.-.-
//
DtOptException::DtOptException(const wchar_t* pFormat, ...)
{
    va_list  ArgList;
    va_start(ArgList, pFormat);
    _vsnwprintf(m_ErrorMsg, sizeof(m_ErrorMsg)-1, pFormat, ArgList);
    va_end(ArgList);
};
Esempio n. 11
0
LPWSTR DBGH_vmalprintfW( LPCWSTR pcszFormat, va_list list )
{
  bool  bSuccess = FALSE;

	LPWSTR pszBuffer = reinterpret_cast<LPWSTR>( malloc( g_knDefaultBufferSize * 2 ) );

	int nAllocated = g_knDefaultBufferSize;
	do
  {
		if( _vsnwprintf( pszBuffer, nAllocated - 1, pcszFormat, list ) < 0 )
	  {
			nAllocated *= 2;
			pszBuffer = reinterpret_cast<LPWSTR>( realloc( pszBuffer, nAllocated * 2 ) );
			if( !pszBuffer )
			{
				return NULL;
			}
	  }
    else
		{
      bSuccess = TRUE;
		}
  } while( !bSuccess );

	return pszBuffer;
}
Esempio n. 12
0
void __error_s(
		HWND     hwnd,
		wchar_t *pws_format, 
		int      e_code, 
		...
	)
{
	wchar_t msg[MAX_PATH - 20];
	wchar_t est[20];
	va_list args;

	va_start(args, e_code);
	if ( pws_format != NULL )
	{
		_vsnwprintf(
			msg, sizeof_w(msg), pws_format, args
			);
	} else {
		msg[0] = 0;
	}

	va_end(args);
	if (e_code != ST_OK) 
	{
		_snwprintf(
			est, sizeof_w(est), L"\nError code: %d", e_code
			);

		wcscat(msg, est);
	}
	__msg_e( hwnd, msg );
}
Esempio n. 13
0
CMString& CMString::Format(const WCHAR *fmt,...)
{
    ASSERT(fmt!=NULL);
    if(m_sData)
    {
        delete []m_sData;
        m_sData = NULL;
    }
    va_list va;
    va_start(va, fmt);
    INT32 len = 1023;//vwprintf(NULL,fmt,va);
    m_sData = new WCHAR[len+1];
    ASSERT(m_sData!=NULL);
    _vsnwprintf(m_sData,1023,fmt,va);
	len = wcslen(m_sData);
	if(len < 512)
	{
		WCHAR *pstr = new WCHAR[len+1];
		if(pstr)
		{
			wcscpy(pstr,m_sData);
			delete []m_sData;
			m_sData = pstr;
		}
	}
    va_end(va);
    return *this;
}
Esempio n. 14
0
static int _outputvws_safe(wchar_t* buf, int cnt, const wchar_t* fmt, va_list ap)
{
	int ret;

#if defined(_MSC_VER)
	if (NULL == buf || 0 == cnt)
		return _vscwprintf(fmt, ap);
	#if _MSC_VER >= 1500
	ret = _vsnwprintf_s(buf, cnt, _TRUNCATE, fmt, ap);
	#else
	ret = _vsnwprintf(buf, cnt, fmt, ap);
	#endif
#else
	ret = vsnwprintf(buf, cnt, fmt, ap);
#endif
	
	if (NULL != buf && cnt > 0){
		if (ret < 0)
			buf[cnt-1] = 0;
		else if (ret >= cnt)
			ret = -1;
	}

	return ret;
}
Esempio n. 15
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 = 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 (_vsnwprintf(p, size / sizeof(wchar_t), fmt, vararg) == -1) {
		size += 2048;
		(*sizeAlloced) += 2048;
		*str = (wchar_t *) realloc(*str, *sizeAlloced);
		p = *str + len;
	}
	
	va_end(vararg);
}
Esempio n. 16
0
void CConsoleWindow::WriteFormat(LPCTSTR aFormat, ...)
	{
	va_list args;
	va_start(args, aFormat);
	TCHAR buf[KMaxFormatBuf];
	int length = _vsnwprintf(buf, KMaxFormatBuf, aFormat, args);
	Write(buf, length);
	}
Esempio n. 17
0
int StringBase::format( wchar * pBuffer, int nBufferSize, const wchar * pFormat, va_list va )
{
#if defined(_WIN32) || defined(_XBOX)
	return _vsnwprintf( pBuffer, nBufferSize, pFormat, va );
#else
	return vswprintf( pBuffer, nBufferSize, pFormat, va );
#endif
}
inline int vsnprintfT(wchar_t *dst, size_t count, const wchar_t *format, va_list ap)
{
#if defined(OS_WIN)	
	return _vsnwprintf(dst, count, format, ap);
#else	
	return vswprintf(dst, count, format, ap);
#endif	
}
Esempio n. 19
0
// other
void COMMON_API OutputDebugStringEx(const wchar_t* format, ...) {
	wchar_t buffer[1024*8];
	va_list argptr;
	va_start(argptr, format);
	_vsnwprintf(buffer, 1024*8, format, argptr);
	va_end(argptr);
	OutputDebugString(buffer);
}
Esempio n. 20
0
static void log(const tjs_char *format, ...)
{
	va_list args;
	va_start(args, format);
	tjs_char msg[1024];
	_vsnwprintf(msg, 1024, format, args);
	TVPAddLog(msg);
	va_end(args);
}
Esempio n. 21
0
static void call_varargs(wchar_t* buf, size_t buf_size, int expected_ret, LPCWSTR formatString, ...)
{
    va_list args;
    int ret;
    /* Test the basic functionality */
    va_start(args, formatString);
    ret = _vsnwprintf(buf, buf_size, formatString, args);
    ok(expected_ret == ret, "Test failed: expected %i, got %i.\n", expected_ret, ret);
}
Esempio n. 22
0
wstring format(const wchar_t* format, ...) {
	const u32 len = 0x2000;
	wchar_t buffer[len];
	va_list argptr;
	va_start(argptr, format);
	_vsnwprintf(buffer, len, format, argptr);
	va_end(argptr);
	return wstring(buffer);
}
Esempio n. 23
0
/*******************************************************************************
*   Header Files                                                               *
*******************************************************************************/
#include <windows.h>
#include <tchar.h>
#include <stdio.h>

#include <msi.h>
#include <msiquery.h>


#if (_MSC_VER < 1400) /* Provide swprintf_s to VC < 8.0. */
int swprintf_s(WCHAR *buffer, size_t cbBuffer, const WCHAR *format, ...)
{
    int ret;
    va_list va;
    va_start(va, format);
    ret = _vsnwprintf(buffer, cbBuffer, format, va);
    va_end(va);
    return ret;
}
Esempio n. 24
0
/*
 * Debugging helpers
 */
VOID
PrintStringV(IN LPCWSTR szStr,
             IN va_list args)
{
    WCHAR Buffer[4096];

    _vsnwprintf(Buffer, ARRAYSIZE(Buffer), szStr, args);
    MessageBoxW(Globals.hMainWnd, Buffer, L"Information", MB_OK);
}
Esempio n. 25
0
File: printf.c Progetto: dvdhoo/wine
static int __cdecl _vsnwprintf_wrapper(wchar_t *str, size_t len, const wchar_t *format, ...)
{
    int ret;
    __ms_va_list valist;
    __ms_va_start(valist, format);
    ret = _vsnwprintf(str, len, format, valist);
    __ms_va_end(valist);
    return ret;
}
Esempio n. 26
0
void FormatMsg(WCHAR *format, ...)
{
	WCHAR buf[255];
	va_list argptr;
	va_start(argptr, format);
	_vsnwprintf(buf, sizeof(buf)-1, format, argptr);
	MessageBox(0, buf, L"msg", 0);
	va_end(argptr);
}
Esempio n. 27
0
void FormatBox(HWND hWnd, DWORD Flags, WCHAR *Caption, WCHAR *Format, ...)
{
	WCHAR buf[255];
	va_list argptr;
	va_start(argptr, Format);
	_vsnwprintf(buf, sizeof(buf)-1, Format, argptr);
	MessageBox(hWnd, buf, Caption, Flags);
	va_end(argptr);
}
Esempio n. 28
0
void vmprintf(const WCHAR *fmt,...)
{
	va_list argptr;
	va_start(argptr,fmt);
	WCHAR OutStr[2048];
	_vsnwprintf(OutStr,ARRAYSIZE(OutStr)-1,fmt,argptr);
	VText(OutStr);
	va_end(argptr);
}
Esempio n. 29
0
void m_wprintf(wchar_t *frm,...){
	  va_list list;
	  va_start(list, frm);
	  wchar_t *buf=(wchar_t*)m_malloc(1000*2+2);
	  if (!buf) return ;
	  _vsnwprintf(buf,1000,frm,list);
	  va_end(list);
	  WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE),buf,wcslen(buf),0,0);
	  m_free(buf);
}
Esempio n. 30
-1
void Log::ReallyPrint(LPCTSTR format, va_list ap) 
{

	SYSTEMTIME current;
	GetLocalTime(&current);
	if (memcmp(&m_lastLogT, &current, sizeof(SYSTEMTIME)) != 0)
	{
		m_lastLogT = current;
		TCHAR time_str[50] = {0};
		TCHAR date_str[50] = {0};

		int nRet = GetDateFormat(LOCALE_USER_DEFAULT, NULL, &current, TEXT("dd"),  date_str, sizeof(date_str));
		nRet = GetTimeFormat(LOCALE_USER_DEFAULT,NULL, &current,TEXT("hh:mm:ss"),time_str,sizeof(time_str));
		
		TCHAR time_buf[50];
		wsprintf(time_buf, TEXT("<%s %s>:"),date_str, time_str);		
		ReallyPrintLine(time_buf);
	}


	// Prepare the complete log message
	TCHAR line[LINE_BUFFER_SIZE];
	memset(line, 0, sizeof(line));
	int len = 0;
#ifdef _UNICODE
	_vsnwprintf(line, sizeof(line) - 2 * sizeof(TCHAR), format, ap);
	len = wcslen(line);

#else
	_vsnprintf(line, sizeof(line) - 2 * sizeof(TCHAR), format, ap);
	len = strlen(line);

#endif // _UNICODE
	line[LINE_BUFFER_SIZE-2] = (TCHAR)'\0';
#if (!defined(_UNICODE) && !defined(_MBCS))
	if (len > 0 && len <= sizeof(line) - 2 * sizeof(TCHAR) && line[len-1] == (TCHAR)'\n') {
		// Replace trailing '\n' with MS-DOS style end-of-line.
		line[len-1] = (TCHAR)'\r';
		line[len] =   (TCHAR)'\n';
		line[len+1] = (TCHAR)'\0';
	}
#endif
	
	ReallyPrintLine(line);
	ReallyPrintLine(TEXT("\r\n"));

	//if overfollow create new log
	if (m_tofile)
	{
		nTotalLogWrited += len;
		//max log size = 10m
		if (nTotalLogWrited > 1024*1024*10)
		{
			CloseFile();
			CString strNewFile = m_strOrgFileName;
			SetFile(strNewFile, false);
		}

	}
}