From cf0d0dace174aa2c0e2f8b5df009d02266e0c96a Mon Sep 17 00:00:00 2001 From: George Hazan Date: Wed, 13 Aug 2014 14:18:43 +0000 Subject: working C++ version restored git-svn-id: http://svn.miranda-ng.org/main/trunk@10178 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/SkypeClassic/src/debug.cpp | 75 ++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 protocols/SkypeClassic/src/debug.cpp (limited to 'protocols/SkypeClassic/src/debug.cpp') diff --git a/protocols/SkypeClassic/src/debug.cpp b/protocols/SkypeClassic/src/debug.cpp new file mode 100644 index 0000000000..beb19c6db6 --- /dev/null +++ b/protocols/SkypeClassic/src/debug.cpp @@ -0,0 +1,75 @@ +#ifndef _DEBUG +#pragma warning (disable: 4206) // nonstandard extension used : translation unit is empty +#else +#include "debug.h" + +#define WIN32_LEAN_AND_MEAN +//#include +#include +//#include +#include "skype.h" +#include +#include + +#define INITBUF 1024 /* Initial size of buffer */ + +#pragma warning (disable: 4706) // assignment within conditional expression + +extern char g_szProtoName[]; + +static CRITICAL_SECTION m_WriteFileMutex; +static FILE *m_fpLogFile = NULL; +static char *m_szLogBuf = NULL; +static DWORD m_iBufSize = 0; + +void init_debug(void) { + char *p; + char logfile[MAX_PATH]; + + ZeroMemory(logfile, sizeof(logfile)); + p=logfile+GetModuleFileNameA(NULL, logfile, sizeof(logfile)); + if (!(p=strrchr (logfile, '\\'))) p=logfile; else p++; + sprintf (p, "%s_log.txt", SKYPE_PROTONAME); + m_szLogBuf = (char*)calloc (1, (m_iBufSize = INITBUF)); + m_fpLogFile = fopen(logfile, "a"); + InitializeCriticalSection(&m_WriteFileMutex); +} + +void end_debug (void) { + if (m_szLogBuf) free (m_szLogBuf); + if (m_fpLogFile) fclose (m_fpLogFile); + DeleteCriticalSection(&m_WriteFileMutex); +} + +void do_log(const char *pszFormat, ...) { + char *ct, *pNewBuf; + va_list ap; + time_t lt; + int iLen; + + if (!m_szLogBuf || !m_fpLogFile) return; + EnterCriticalSection(&m_WriteFileMutex); + time(<); + ct=ctime(<); + ct[strlen(ct)-1]=0; + do + { + va_start(ap, pszFormat); + iLen = _vsnprintf(m_szLogBuf, m_iBufSize, pszFormat, ap); + va_end(ap); + if (iLen == -1) + { + if (!(pNewBuf = (char*)realloc (m_szLogBuf, m_iBufSize*2))) + { + iLen = strlen (m_szLogBuf); + break; + } + m_szLogBuf = pNewBuf; + m_iBufSize*=2; + } + } while (iLen == -1); + fprintf (m_fpLogFile, sizeof(time_t) == sizeof(int) ? "%s (%ld) [%08X] %s\n" : "%s (%lld) [%08X] %s\n", ct, lt, GetCurrentThreadId(), m_szLogBuf); + fflush (m_fpLogFile); + LeaveCriticalSection(&m_WriteFileMutex); +} +#endif \ No newline at end of file -- cgit v1.2.3