From a9580df150d799246eaecbf3c1fb5cecf9f8ab49 Mon Sep 17 00:00:00 2001 From: Vadim Dashevskiy Date: Mon, 23 Jul 2012 13:49:28 +0000 Subject: SecureIM, SeenPlugin, SendSS, Sessions: changed folder structure git-svn-id: http://svn.miranda-ng.org/main/trunk@1122 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/SecureIM/src/mmi.cpp | 155 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 plugins/SecureIM/src/mmi.cpp (limited to 'plugins/SecureIM/src/mmi.cpp') diff --git a/plugins/SecureIM/src/mmi.cpp b/plugins/SecureIM/src/mmi.cpp new file mode 100644 index 0000000000..2269d76a51 --- /dev/null +++ b/plugins/SecureIM/src/mmi.cpp @@ -0,0 +1,155 @@ +#include "commonheaders.h" + + +void *operator new(size_t sz) { + return mir_alloc(sz); +} + + +void *operator new[](size_t size) { + return operator new(size); +} + + +void operator delete(void *p) { + mir_free(p); +} + + +void operator delete[](void * p) { + operator delete(p); +} + + +// ANSIzUCS2z + ANSIzUCS2z = ANSIzUCS2z +char *m_wwstrcat(LPCSTR strA, LPCSTR strB) { + int lenA = (int)strlen(strA); + int lenB = (int)strlen(strB); + LPSTR str = (LPSTR)mir_alloc((lenA+lenB+1)*(sizeof(WCHAR)+1)); + memcpy(str, strA, lenA); + memcpy(str+lenA, strB, lenB+1); + memcpy(str+lenA+lenB+1, strA+lenA+1, lenA*sizeof(WCHAR)); + memcpy(str+lenA+lenB+1+lenA*sizeof(WCHAR), strB+lenB+1, (lenB+1)*sizeof(WCHAR)); + return str; +} + + +// ANSIz + ANSIzUCS2z = ANSIzUCS2z +char *m_awstrcat(LPCSTR strA, LPCSTR strB) { + int lenA = (int)strlen(strA); + LPSTR tmpA = (LPSTR)mir_alloc((lenA+1)*(sizeof(WCHAR)+1)); + strcpy(tmpA, strA); + MultiByteToWideChar(CP_ACP, 0, strA, -1, (LPWSTR)(tmpA+lenA+1), (lenA+1)*sizeof(WCHAR)); + LPSTR str = m_wwstrcat(tmpA, strB); + mir_free(tmpA); + return str; +} + + +// ANSIz + ANSIz = ANSIzUCS2z +char *m_aastrcat(LPCSTR strA, LPCSTR strB) { + int lenA = (int)strlen(strA); + int lenB = (int)strlen(strB); + LPSTR str = (LPSTR)mir_alloc((lenA+lenB+1)*(sizeof(WCHAR)+1)); + strcpy(str,strA); + strcat(str,strB); + MultiByteToWideChar(CP_ACP, 0, str, -1, (LPWSTR)(str+lenA+lenB+1), (lenA+lenB+1)*sizeof(WCHAR)); + return str; +} + + +LPSTR m_string = NULL; + +// ANSIz + ANSIz = ANSIz +char *m_ustrcat(LPCSTR strA, LPCSTR strB) { + SAFE_FREE(m_string); + m_string = (LPSTR) mir_alloc(strlen(strA)+strlen(strB)+1); + strcpy(m_string,strA); strcat(m_string,strB); + return m_string; +} + + +LPSTR m_hex = NULL; + +LPSTR to_hex(PBYTE bin, int len) { + SAFE_FREE(m_hex); + m_hex = (LPSTR) mir_alloc(len*3+1); + LPSTR m_ptr = m_hex; + for ( int i=0; iutf8decode(szUtfMsg); + LPSTR szMsg = mir_u2a(wszMsg); + if ( bCoreUnicode ) { + flags |= PREF_UNICODE; + int olen = (int)wcslen((LPWSTR)wszMsg)+1; + int nlen = olen*(sizeof(WCHAR)+1); + szNewMsg = (LPSTR) mir_alloc(nlen); + memcpy(szNewMsg,szMsg,olen); + memcpy(szNewMsg+olen,wszMsg,olen*sizeof(WCHAR)); + mir_free(szMsg); + } + else { + szNewMsg = szMsg; + } + } + else { + flags &= ~PREF_UNICODE; flags |= PREF_UTF; + szNewMsg = (LPSTR) mir_strdup(szUtfMsg); + } + return szNewMsg; +} + + +// преобразуем текст из формата миранды в чистый UTF8 +LPSTR miranda_to_utf8(LPCSTR szMirMsg, DWORD flags) { + LPSTR szNewMsg; + if(flags & PREF_UTF) { + szNewMsg = (LPSTR) szMirMsg; + } + else + if(flags & PREF_UNICODE) { + szNewMsg = exp->utf8encode((LPCWSTR)(szMirMsg+strlen(szMirMsg)+1)); + } + else { + LPWSTR wszMirMsg = mir_a2u(szMirMsg); + szNewMsg = exp->utf8encode((LPCWSTR)wszMirMsg); + mir_free(wszMirMsg); + } + return mir_strdup(szNewMsg); +} + + +// EOF -- cgit v1.2.3