Beispiel #1
0
static void cvt_wprintf(FILE *dest,const wchar *fmt,va_list arglist)
{
  // This buffer is for format string only, not for entire output,
  // so it can be short enough.
  wchar fmtw[1024];
  PrintfPrepareFmt(fmt,fmtw,ASIZE(fmtw));
#ifdef _WIN_ALL
  safebuf wchar Msg[MaxMsgSize];
  if (dest==stdout && StdoutRedirected || dest==stderr && StderrRedirected)
  {
    // Avoid Unicode for redirect in Windows, it does not work with pipes.
    vswprintf(Msg,ASIZE(Msg),fmtw,arglist);
    safebuf char MsgA[MaxMsgSize];
    WideToChar(Msg,MsgA,ASIZE(MsgA));
    CharToOemA(MsgA,MsgA); // Console tools like 'more' expect OEM encoding.

    // We already converted \n to \r\n above, so we use WriteFile instead
    // of C library to avoid unnecessary additional conversion.
    HANDLE hOut=GetStdHandle(dest==stdout ? STD_OUTPUT_HANDLE:STD_ERROR_HANDLE);
    DWORD Written;
    WriteFile(hOut,MsgA,(DWORD)strlen(MsgA),&Written,NULL);
    return;
  }
  // MSVC2008 vfwprintf writes every character to console separately
  // and it is too slow. We use direct WriteConsole call instead.
  vswprintf(Msg,ASIZE(Msg),fmtw,arglist);
  HANDLE hOut=GetStdHandle(dest==stderr ? STD_ERROR_HANDLE:STD_OUTPUT_HANDLE);
  DWORD Written;
  WriteConsole(hOut,Msg,(DWORD)wcslen(Msg),&Written,NULL);
#else
  vfwprintf(dest,fmtw,arglist);
  // We do not use setbuf(NULL) in Unix (see comments in InitConsole).
  fflush(dest);
#endif
}
int ivsprintf(ichar *buffer, size_t max_size, const ichar *format, va_list argptr)
{
#ifdef UNICODE__ICHAR_WIDE
#ifdef _INC_SWPRINTF_INL_
	return  vswprintf(buffer, max_size, format, argptr);
#else
	return  vswprintf(buffer, format, argptr);
#endif
#else
	return  vsprintf(buffer, format, argptr);
#endif	
}
const char16 * FormatVL(const char16 * text, va_list ll)
{
	if (formatString16Position + FORMAT_STRING_MAX_LEN >= FORMAT_STRING_SIZE)
	{
		formatString16Position = 0;
	}
#if defined(_WIN32)
	int32 len = vswprintf((wchar_t *)&formatString16[formatString16Position], (wchar_t *)text, ll);
#else // MAC_OS & other nix systems
	int32 len = vswprintf((wchar_t *)&formatString16[formatString16Position], FORMAT_STRING_MAX_LEN, (wchar_t *)text, ll);
#endif
	
	formatString16Position += (len + 1);
	return &formatString16[formatString16Position - (len + 1)];
}
Beispiel #4
0
void
_testfmt(const char *result, int line, const char *argstr, const char *fmt,...)
{
#define	BUF	100
	wchar_t ws[BUF], wfmt[BUF], wresult[BUF];
	char s[BUF];
	va_list ap, ap2;

	va_start(ap, fmt);
	va_copy(ap2, ap);
	smash_stack();
	vsnprintf(s, sizeof(s), fmt, ap);
	if (strcmp(result, s) != 0) {
		fprintf(stderr,
		    "%d: printf(\"%s\", %s) ==> [%s], expected [%s]\n",
		    line, fmt, argstr, s, result);
		abort();
	}

	smash_stack();
	mbstowcs(ws, s, BUF - 1);
	mbstowcs(wfmt, fmt, BUF - 1);
	mbstowcs(wresult, result, BUF - 1);
	vswprintf(ws, sizeof(ws) / sizeof(ws[0]), wfmt, ap2);
	if (wcscmp(wresult, ws) != 0) {
		fprintf(stderr,
		    "%d: wprintf(\"%ls\", %s) ==> [%ls], expected [%ls]\n",
		    line, wfmt, argstr, ws, wresult);
		abort();
	}	
}
Beispiel #5
0
void
Log(const wchar_t *fmt, ...)
{
#if !defined(SHOW_CONSOLE)
  return;
#endif
  va_list a = nullptr;
  wchar_t szDebugString[1024];
  if(!lstrlenW(fmt))
    return;
  va_start(a,fmt);
  vswprintf(szDebugString, 1024, fmt, a);
  va_end(a);
  if(!lstrlenW(szDebugString))
    return;

  DWORD len;
  WriteConsoleW(sCon, szDebugString, lstrlenW(szDebugString), &len, nullptr);
  WriteConsoleW(sCon, L"\n", 1, &len, nullptr);

  if (IsDebuggerPresent()) {  
    OutputDebugStringW(szDebugString);
    OutputDebugStringW(L"\n");
  }
}
Beispiel #6
0
	void Log::PushLog( ELogType::Type type, const CHAR *pError, ... )
	{
		if ( type > m_logLevel )
			return;

		CHAR *tempMsg;
		SIZE_T len = 0;
		va_list arg_ptr;

		va_start( arg_ptr, pError );
		#if defined(PSX_UNICODE)
				len = _vscwprintf( pError, arg_ptr );
				tempMsg = new CHAR[len + 1];
				vswprintf( tempMsg, pError, arg_ptr );
		#else
				len = _vscprintf( pError, arg_ptr );
				tempMsg = new CHAR[len + 1];
				vsprintf( tempMsg, pError, arg_ptr );
		#endif /* defined(PSX_UNICODE) */

		// Display in output window
		OutputDebugString( tempMsg );
		OutputDebugString( PSX_String("\n") );

		PSX_SafeDeleteArray( tempMsg );
	}
Beispiel #7
0
void reportx(char *msg, int etype, ...)
{
	letter          mbuffer[4096];
	letter          msgbuffer[256];
	va_list         vlist;
	COPYDATASTRUCT  cd;

	if(!reporting_initialized) return;
	if(!reporting_window) return;
	if(!IsWindow(reporting_window))
	{
		reporting_window = 0;
		return;
	}

	va_start(vlist, etype);

	MultiByteToWideChar(CP_ACP, 0, msg, -1, msgbuffer, sizeof(msgbuffer) / sizeof(letter));
	vswprintf(mbuffer, sizeof(mbuffer) / sizeof(letter), msgbuffer, vlist);

	cd.cbData = sizeof(mbuffer);
	cd.dwData = etype;
	cd.lpData = mbuffer;

	SendMessage(reporting_window, WM_COPYDATA, sizeof(letter) /* Unicode */, (LPARAM)&cd);

	va_end(vlist);
}
Beispiel #8
0
void Logger::Logv(eLogLevel ll, const char16* text, va_list li)
{
	wchar_t tmp[4096] = {0};

	vswprintf(tmp, sizeof(tmp)/sizeof(wchar_t) - 2, text, li);
	wcscat(tmp, L"\n");

	// always send log to custom subscribers
	CustomLog(ll, tmp);

	// print platform log or write log to file
	// only if log level is acceptable
	if (ll >= logLevel)
	{
        if(consoleModeEnabled)
        {
            ConsoleLog(ll, tmp);
        }
        else
        {
            PlatformLog(ll, tmp);
        }

		if(!logFilename.IsEmpty())
		{
			FileLog(ll, tmp);
		}

	}
}
Beispiel #9
0
I32 IFXAPI IFXDebugTraceGeneric( const IFXCHAR* pFormatString, ... )
{
#ifndef HAS_NO_WPRINT
	if ( gs_debugLevel >= IFXDEBUG_MESSAGE )
	{
		const IFXCHAR  *pComponentString = 
			_GetStringFromIFXRESULT_Component( IFXRESULT_COMPONENT_GENERIC );

		IFXCHAR pMessage[ _MESSAGE_LENGTH_MAX ];
		wcscpy( pMessage, _PREFIX_STRING );
		if( pComponentString )
			wcscat( pMessage, pComponentString );
		wcscat( pMessage, L" " );
		swprintf( gs_pDebugMessage, _MESSAGE_LENGTH_MAX, pMessage );
		IFXOSOutputDebugString( gs_pDebugMessage );

		va_list args;
		va_start( args, pFormatString );
		vswprintf( gs_pDebugMessage, _MESSAGE_LENGTH_MAX,
			pFormatString, args );
		va_end( args );

		IFXOSOutputDebugString( gs_pDebugMessage );
	}
#endif
	return 0;
}
Beispiel #10
0
int swprintf(wchar_t* wcs, size_t maxlen, const wchar_t* format, ...) {
  va_list ap;
  va_start(ap, format);
  int result = vswprintf(wcs, maxlen, format, ap);
  va_end(ap);
  return result;
}
Beispiel #11
0
_WCRTLINK int swprintf( CHAR_TYPE *dest, size_t n, const CHAR_TYPE *format, ... )
{
    va_list         args;

    va_start( args, format );
    return( vswprintf( dest, n, format, args ) );
}
Beispiel #12
0
void DisplayLoadProgress(const wchar_t *format, ...)
{
#if 0
  va_list args;
  wchar_t wbuf[INFO_BUF];
  char buf[INFO_BUF];

  /* process input */
  va_start(args, format);
  vswprintf(wbuf, format, args);
  va_end(args);

  /* XXX: convert to multibyte */
  wcstombs(buf, wbuf, INFO_BUF);
  printf(buf);
#else
  static unsigned int i = 0;
  i++;
  if (i == 1) printf("\b-");
  else if (i == 2) printf("\b\\");
  else if (i == 3) printf("\b|");
  else {
    printf("\b/");
    i = 0;
  }
#endif
}
Beispiel #13
0
    bool FormatArgsToWstring(wstring& wstr, LPCWSTR format, va_list args)
    {
        bool fRet = false;
        int nCount = 0;
        int nRet = 0;
        WCHAR* pBuffer = NULL;

        wstr.clear();

        nCount = _vscwprintf(format, args);
        if (!nCount)
            goto END;

        pBuffer = new WCHAR[nCount + 1];
        if (!pBuffer)
            goto END;

        memset(pBuffer, 0, sizeof(WCHAR) * (nCount + 1));
        nRet = vswprintf(pBuffer, nCount + 1, format, args);
        if (nRet <= 0)
            goto END;

        wstr = pBuffer;
        fRet = true;
    END:
        if (pBuffer)
            delete[] pBuffer;

        return fRet;
    }
Beispiel #14
0
// Somewhat brute force, but works.  Rewrite if necessary for speed.
IFXString& IFXString::VSPrintf(const IFXCHAR* fmt, va_list ap)
{
	int sz = m_BufferLength;

	if(!m_BufferLength)
	{ // start at 80 bytes, seems reasonable (1 tty line)
		NewBuffer(80);
		sz = m_BufferLength;
	}
	else
	{
		NewBuffer(sz);
	}

	while(IFX_TRUE)
	{
		int n =  vswprintf((IFXCHAR*)m_Buffer, m_BufferLength, fmt, ap);

		if(n > -1 && n < sz)
		{
			break;
		}
		if(n > -1)
		{
			sz = n+1;
		}
		else
		{
			sz *= 2;
		}
		NewBuffer(sz);
	}

	return *this;
}
Beispiel #15
0
static BOOL DebugMessageV(DWORD dwSize, LPCWSTR lpszMessage, va_list arglist)
{
    LPWSTR     lpszMsgBuf;


    // Parameter checking.
    if( (NULL == lpszMessage)
        ||
        (0 == dwSize)
      )
    {
      return FALSE;
    }

    // Allocate memory for message buffer.
    lpszMsgBuf = new WCHAR[dwSize + 1];    
    if(NULL == lpszMsgBuf)
        return FALSE;

    // Pass the variable parameters to wvsprintf to be formated.
    vswprintf(lpszMsgBuf, lpszMessage, arglist);

    // Dump string to debug output.
    OutputDebugStringW(lpszMsgBuf);

    // Clean up.
    delete[] lpszMsgBuf;

    return TRUE;
}
Beispiel #16
0
int OS_Print(BOOL cond, const char* string, ...)
{
	WCHAR message[OS_BUFFER_SIZE];
	WCHAR wstring[OS_BUFFER_SIZE];
	va_list ptr;
	int iRequiredSize = 0;
	
	if (!cond) 
		return 0;

	// Find out required string size (if you don't have that info)
	iRequiredSize = ::MultiByteToWideChar(CP_ACP, NULL, string, -1, NULL, 0);

	if (iRequiredSize > OS_BUFFER_SIZE)
		iRequiredSize = OS_BUFFER_SIZE;

	// Do the string conversion
	::MultiByteToWideChar(CP_ACP, NULL, string , -1, wstring, iRequiredSize);
    
    va_start(ptr,string);
	vswprintf(message, wstring, ptr);
    va_end(ptr);

	RETAILMSG(1, (message));
	return 1;
}
Beispiel #17
0
wchar_t *dup_wprintf (int *rlen, wchar_t *format, ...)
{
  va_list argptr;
  wchar_t *result = NULL;
  int len = 0;

  if (format == NULL)
    return NULL;

  va_start(argptr, format);

  len = _vscwprintf (format, argptr);
  if (len >= 0)
  {
    result = (wchar_t *) malloc (sizeof (wchar_t *) * (len + 1));
    if (result != NULL)
    {
      int len2 = vswprintf (result, format, argptr);
      if (len2 != len || len2 <= 0)
      {
        free (result);
        result = NULL;
      }
      else if (rlen != NULL)
        *rlen = len;
    }
  }
  va_end(argptr);
  return result;
}
Beispiel #18
0
int Log(LPCTSTR pszFormat, ...)
{
	va_list ptr;
	va_start(ptr, pszFormat);
	wchar_t pszBuffer[1024];
#pragma warning (push)
#pragma warning(disable : 4995)
#pragma warning(disable : 4996)
	vswprintf( pszBuffer, 1024, pszFormat, ptr );
#pragma warning (pop)
	va_end(ptr);

	theApp.PrintfToString(pszBuffer);

	CCodeTesterDlg* pDlg= (CCodeTesterDlg*)theApp.GetMainWnd();
	if(pDlg)
	{
		theApp.m_CritSection.Lock();
		pDlg->m_OutPutCtrl.OutPut(pszBuffer);
		theApp.m_CritSection.Unlock();
		return wcslen(pszBuffer);
	}

	return 0;
}
Beispiel #19
0
static void
_testfmt(const char *result, const char *argstr, const char *fmt,...)
{
#define	BUF	100
	wchar_t ws[BUF], wfmt[BUF], wresult[BUF];
	char s[BUF];
	va_list ap, ap2;

	va_start(ap, fmt);
	va_copy(ap2, ap);
	smash_stack();
	vsnprintf(s, sizeof(s), fmt, ap);
	ATF_CHECK_MSG(strcmp(result, s) == 0,
	    "printf(\"%s\", %s) ==> [%s], expected [%s]",
	    fmt, argstr, s, result);

	smash_stack();
	mbstowcs(ws, s, BUF - 1);
	mbstowcs(wfmt, fmt, BUF - 1);
	mbstowcs(wresult, result, BUF - 1);
	vswprintf(ws, sizeof(ws) / sizeof(ws[0]), wfmt, ap2);
	ATF_CHECK_MSG(wcscmp(wresult, ws) == 0,
	    "wprintf(\"%ls\", %s) ==> [%ls], expected [%ls]",
	    wfmt, argstr, ws, wresult);

	va_end(ap);
	va_end(ap2);
}
Beispiel #20
0
int swprintf(wchar_t* s, size_t n, const wchar_t* format, ...) {
  va_list args;
  va_start(args, format);
  int result = vswprintf(s, n, format, args);
  va_end(args);
  return result;
}
Beispiel #21
0
void trace_fmt2(const char *fmt, ...) {

    BOOL	en;
    va_list	ap;
    OEMCHAR	buf[0x1000];

    en = (tracewin.en & 2) &&
         ((tracewin.en & 4) || (tracewin.tf != NULL));
    if (en) {
        va_start(ap, fmt);
#if defined(OSLANG_UCS2)
        OEMCHAR cnvfmt[0x800];
        MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, fmt, -1,
                            cnvfmt, NELEMENTS(cnvfmt));
        vswprintf(buf, cnvfmt, ap);
#else
        vsprintf(buf, fmt, ap);
#endif
        va_end(ap);
        if ((tracewin.en & 4) && (hView)) {
            View_AddString(buf);
        }
        if (tracewin.tf != FILEH_INVALID) {
            textfile_write(tracewin.tf, buf);
            textfile_write(tracewin.tf, crlf);
        }
    }
}
Beispiel #22
0
inline VOID CharTraits<WCHAR>::FormatV( WCHAR* Buffer, SIZE_T Count, CONST WCHAR* Format, va_list Args )
{
  va_list Args0;
  va_copy(Args0,Args);
  vswprintf( Buffer, Count, Format, Args0 );
  va_end(Args0);
}
Beispiel #23
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;
}
Beispiel #24
0
const wchar_t* va(const wchar_t* string, ...)
{
	static __thread int currentBuffer;
	static __thread wchar_t* buffer;

	if (!buffer)
	{
		buffer = new wchar_t[BUFFER_COUNT * BUFFER_LENGTH];
	}

	int thisBuffer = currentBuffer;

	va_list ap;
	va_start(ap, string);
	int length = vswprintf(&buffer[thisBuffer * BUFFER_LENGTH], BUFFER_LENGTH, string, ap);
	va_end(ap);

	if (length >= BUFFER_LENGTH)
	{
		Com_Printf(0, "ERROR: Attempted to overrun string in call to va()!");
		exit(1);
	}

	buffer[(thisBuffer * BUFFER_LENGTH) + BUFFER_LENGTH - 1] = '\0';

	currentBuffer = (currentBuffer + 1) % BUFFER_COUNT;

	return &buffer[thisBuffer * BUFFER_LENGTH];
}
Beispiel #25
0
 int wchar_traits::Format( wchar_t** ppszDst, const wchar_t* pszFormat, va_list args )
 {
   int len = _vscwprintf( pszFormat, args ); // _vscprintf doesn't count terminating '\0'
   *ppszDst = (wchar_t*)cui::CuiMalloc((len+1)*sizeof(wchar_t));
   vswprintf(*ppszDst, pszFormat, args);
   return len;
 }
Beispiel #26
0
// Note: I could overload LogMsg to take a WCHAR* as the first argument but
//       this way I am less likely to match the WCHAR* version with a char* argument
//       or vice versa.  It would also conflict with the UNICODE build.
// Function name	: LogWMsg
// Description	    : 
// Return type		: void 
// Argument         : WCHAR* pFormat
// Argument         : ...
void LogWMsg(WCHAR* pFormat, ...)
{
    WCHAR    wchMsg[LOCAL_BUFFER_SIZE];
    va_list pArg;

    va_start(pArg, pFormat);
    vswprintf(wchMsg, pFormat, pArg);
    va_end(pArg);

	//*
	openlog("MPILauncher", LOG_APP);
	char msg[LOCAL_BUFFER_SIZE];
	wcstombs(msg, wchMsg, wcslen(wchMsg)+1);
	syslog(LOG_INFO, msg);
	closelog();
	/*/
	WaitForSingleObject(g_hLogMutex, INFINITE);
	FILE *fout = _tfopen(MPIJOB_LOG_FILENAME, TEXT("a"));
	if (fout != NULL)
	{
		fprintf(fout, "%4d :%7u ", GetCurrentThreadId(), clock());
		fwprintf(fout, L"%s", wchMsg);
		fclose(fout);
	}
	ReleaseMutex(g_hLogMutex);
	//*/
}
Beispiel #27
0
/*-----------------------------------------------------------------------------*/
std::wstring StringUtil::Format(const wchar_t* fmt, ...)
{
	va_list     arguments;
	std::wstring buffer = L"";

	assert(fmt);

	va_start(arguments, fmt);

	{
		int length = _vscwprintf(fmt, arguments);
		if (length >= 0)
		{

			std::unique_ptr<wchar_t[]> buf(new wchar_t[length + 1]);
#ifdef _WIN32
			int result = vswprintf_s(buf.get(), length + 1, fmt, arguments);
#else
			int result = vswprintf(buf.get(), length + 1, fmt, arguments);
#endif
			if (result >= 0)
			{
				buffer = buf.get();

			}
		}
	}

	va_end(arguments);

	return buffer;
}
Beispiel #28
0
void
Log(const wchar_t *fmt, ...)
{
#if !defined(SHOW_CONSOLE)
  DWORD dwRes = 0;
  if (!GetDWORDRegKey(cehDumpDebugStrings, dwRes) || !dwRes) {
    return;
  }
#endif
  va_list a = nullptr;
  wchar_t szDebugString[1024];
  if(!lstrlenW(fmt))
    return;
  va_start(a,fmt);
  vswprintf(szDebugString, 1024, fmt, a);
  va_end(a);
  if(!lstrlenW(szDebugString))
    return;

  DWORD len;
  WriteConsoleW(sCon, szDebugString, lstrlenW(szDebugString), &len, nullptr);
  WriteConsoleW(sCon, L"\n", 1, &len, nullptr);

  OutputDebugStringW(szDebugString);
  OutputDebugStringW(L"\n");
}
Beispiel #29
0
void reportu(string msg, int etype, ...)
{
	letter          mbuffer[4096];
	va_list         vlist;
	COPYDATASTRUCT  cd;

	if(!reporting_initialized) return;
	if(!reporting_window) return;
	if(!IsWindow(reporting_window))
	{
		reporting_window = 0;
		return;
	}

	va_start(vlist, etype);

	vswprintf(mbuffer, sizeof(mbuffer) / sizeof(letter), msg, vlist);

	cd.cbData = sizeof(mbuffer);
	cd.dwData = etype;
	cd.lpData = mbuffer;

	SendMessage(reporting_window, WM_COPYDATA, sizeof(letter) /* Unicode */, (LPARAM)&cd);

	va_end(vlist);
}
Beispiel #30
0
int send_msg (int id, int mode, int partner, wchar_t *format, ...) {

	struct message msg;
	struct msqid_ds msgstat;
	va_list arglist;

	va_start(arglist,format);
	msg.prio = partner;
	vswprintf(msg.text, MSGLEN, format, arglist);

	if (mode == IPC_NOWAIT) {
		msgsnd(id, &msg, MSGLEN, mode);
//		wprintf (L"SEND -- free: %d / self: %d / partner: %d\n", 16 - msgstat.msg_qnum, getpid(), partner);
	}
/*
ushort msg_cbytes;    // Anzahl belegten Bytes in Queue
ushort msg_qnum;      // Anzahl der Nachrichten in Queue
ushort msg_qbytes;    // Max. Anzahl Bytes der Queue
*/
	else {
		while (1) {
			msgctl(id, IPC_STAT, &msgstat);
			if ((((msgstat.msg_qbytes - msgstat.msg_cbytes) * 100) / msgstat.msg_qbytes) > QRESERVE) {
//				wprintf (L"SEND -- free: %d / self: %d / partner: %d\n", 16 - msgstat.msg_qnum, getpid(), partner);
				msgsnd(id, &msg, MSGLEN, mode);
				break;
			}
//			else wprintf(L"HOLD -- free: %d / self: %d / partner: %d\n", 16 - msgstat.msg_qnum, getpid(), partner);
			usleep (FREQUENCY);
		}
	}
	return 0;
}