Esempio n. 1
0
// Debug output - Same usage as MFC TRACE
void pws_os::Trace(LPCTSTR lpszFormat, ...)
{
  openlog("pwsafe:", LOG_PID|LOG_PERROR, LOG_USER);
  va_list args;
  va_start(args, lpszFormat);

  int num_required, num_written;

#ifdef UNICODE
  stringT format = FormatStr(lpszFormat);
  num_required = GetStringBufSize(format.c_str(), args);
  va_end(args);//after using args we should reset list
  va_start(args, lpszFormat);

  wchar_t *wcbuffer = new wchar_t[num_required];
  num_written = vswprintf(wcbuffer, num_required, format.c_str(), args);
  assert(num_required == num_written+1);
  wcbuffer[num_required-1] = L'\0';

  size_t N = wcstombs(NULL, wcbuffer, 0) + 1;
  char *szbuffer = new char[N];
  wcstombs(szbuffer, wcbuffer, N);
  delete[] wcbuffer;
#else
  num_required = GetStringBufSize(lpszFormat, args);
  va_end(args);//after using args we should reset list
  va_start(args, lpszFormat);

  char *szbuffer = new char[num_required];
  num_written = vsnprintf(szbuffer, num_required, lpszFormat, args);
  assert(num_required == num_written+1);
  szbuffer[num_required-1] = '\0';
#endif
  syslog(LOG_DEBUG, "%s", szbuffer);

  delete[] szbuffer;
  closelog();

  va_end(args);
}
Esempio n. 2
0
template<class T> void Format(T &s, const TCHAR *fmt, ...)
{
  va_list args;
  va_start(args, fmt);

  stringT fmt_s = FormatStr(fmt);

  int len = GetStringBufSize(fmt_s.c_str(), args);
  va_end(args);//after using args we should reset list
  va_start(args, fmt);

  TCHAR *buffer = new TCHAR[len];

  _vstprintf_s(buffer, len, fmt_s.c_str(), args);
  s = buffer;
  delete[] buffer;
  va_end(args);
}
Esempio n. 3
0
template<class T> void Format(T &s, int fmt, ...)
{
  va_list args;

  va_start(args, fmt);
  T fmt_str;
  LoadAString(fmt_str, fmt);

  ConvertFormatSpecs(fmt_str);

  int len = GetStringBufSize(fmt_str.c_str(), args);
  va_end(args);//after using args we should reset list
  va_start(args, fmt);

  TCHAR *buffer = new TCHAR[len];

  _vstprintf_s(buffer, len, fmt_str.c_str(), args);
  s = buffer;
  delete[] buffer;
  va_end(args);
}