From fd67a89688262e4e58337c33728488f5f29196a8 Mon Sep 17 00:00:00 2001 From: Szymon Tokarz Date: Wed, 17 Oct 2012 21:05:02 +0000 Subject: Tlen protocol adopted - code moved to trunk\protocols folder - update project files (based on rev: 27, 228, 204, 350, 279, 280, 1374, 278) - changed code organisation to c++ convention (based on rev: 1092, 503, 504) - changed code to Miranda NG convention (based on rev: 49, 54, 312, 401, 321, 358, 410, 441, 477, 483, 496, 507, 515, 644, 652, 743, 956, 1206, 667, 1040, 1590, 1857) - folders restructurization (based on rev: 1890) - code cleaning (based on rev: 270, 398, 409) - this commit includes adopted sources of tlen_czaty.dll (former mucc.dll) plugin witch is now deprecated and will be removed -- wsx22{at}o2.pl git-svn-id: http://svn.miranda-ng.org/main/trunk@1972 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/Tlen/tlen_czaty/src/Utils.cpp | 138 ++++++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 protocols/Tlen/tlen_czaty/src/Utils.cpp (limited to 'protocols/Tlen/tlen_czaty/src/Utils.cpp') diff --git a/protocols/Tlen/tlen_czaty/src/Utils.cpp b/protocols/Tlen/tlen_czaty/src/Utils.cpp new file mode 100644 index 0000000000..37c99a8e07 --- /dev/null +++ b/protocols/Tlen/tlen_czaty/src/Utils.cpp @@ -0,0 +1,138 @@ +/* + +MUCC Group Chat GUI Plugin for Miranda NG +Copyright (C) 2004 Piotr Piastucki + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +#include "Utils.h" + +struct FORK_ARG { + HANDLE hEvent; + void (__cdecl *threadcode)(void*); + void *arg; +}; + +static void __cdecl forkthread_r(struct FORK_ARG *fa) +{ + void (*callercode)(void*) = fa->threadcode; + void *arg = fa->arg; + Thread_Push(0); + SetEvent(fa->hEvent); + callercode(arg); + Thread_Pop(); + return; +} + +unsigned long Utils::forkThread(void (__cdecl *threadcode)(void*), unsigned long stacksize, void *arg) { + + unsigned long rc; + struct FORK_ARG fa; + + fa.hEvent = CreateEvent(NULL, FALSE, FALSE, NULL); + fa.threadcode = threadcode; + fa.arg = arg; + rc = _beginthread((void (__cdecl *)(void*))forkthread_r, stacksize, &fa); + if ((unsigned long) -1L != rc) { + WaitForSingleObject(fa.hEvent, INFINITE); + } + CloseHandle(fa.hEvent); + return rc; +} + +void Utils::copyString(char **a, const char *b) { + char *oldA; + char *newA; + oldA = *a; + if (b != NULL) { + newA = new char[strlen(b)+1]; + strcpy(newA, b); + } else { + newA = NULL; + } + *a = newA; + if (oldA != NULL) { + delete oldA; + } + +} + + + +//MM_INTERFACE Utils::mmi; + +void Utils::mucc_mir_free(void* ptr) +{ + mir_free(ptr); +} + +char* Utils::mucc_mir_t2a(LPCTSTR src) +{ + return mir_t2a(src); +} + +LPTSTR Utils::mucc_mir_a2t(const char* src) +{ + return mir_a2t(src); +} + + + +void Utils::log(const char *fmt, ...) +{ +#ifdef ENABLE_LOGGING + char *str; + va_list vararg; + int strsize; + char *text; + char *p, *q; + int extra; + + va_start(vararg, fmt); + str = (char *) malloc(strsize=2048); + while (_vsnprintf(str, strsize, fmt, vararg) == -1) + str = (char *) realloc(str, strsize+=2048); + va_end(vararg); + + extra = 0; + for (p=str; *p != '\0'; p++) + if (*p == '\n' || *p == '\r') + extra++; + text = (char *) malloc(strlen(muccModuleName)+2+strlen(str)+2+extra); + wsprintf(text, "[%s]", muccModuleName); + for (p=str,q=text+strlen(text); *p != '\0'; p++,q++) { + if (*p == '\r') { + *q = '\\'; + *(q+1) = 'r'; + q++; + } + else if (*p == '\n') { + *q = '\\'; + *(q+1) = 'n'; + q++; + } + else + *q = *p; + } + *q = '\n'; + *(q+1) = '\0'; +// CallService(MS_NETLIB_LOG, (WPARAM) NULL, (LPARAM) text); + //OutputDebugString(text); + free(text); + free(str); +#endif +} + -- cgit v1.2.3