From 09ba010a1f1966818249e15bb652269a944d1476 Mon Sep 17 00:00:00 2001 From: Vadim Dashevskiy Date: Fri, 15 Jun 2012 16:18:13 +0000 Subject: MSN reverted git-svn-id: http://svn.miranda-ng.org/main/trunk@428 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/MSN/msn_global.h | 2 +- protocols/MSN/msn_libstr.cpp | 2 ++ protocols/MSN/msn_lists.cpp | 6 ++++-- protocols/MSN/msn_mail.cpp | 12 +++++++++--- protocols/MSN/msn_misc.cpp | 38 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 54 insertions(+), 6 deletions(-) (limited to 'protocols') diff --git a/protocols/MSN/msn_global.h b/protocols/MSN/msn_global.h index a791edadd9..0edd856495 100644 --- a/protocols/MSN/msn_global.h +++ b/protocols/MSN/msn_global.h @@ -220,7 +220,7 @@ __inline char* lrtrimp(char* str) { return ltrimp(rtrim(str)); }; char* arrayToHex(BYTE* data, size_t datasz); -#if defined(_WIN64) +#if defined(_UNICODE) || defined(_WIN64) #define MyInterlockedIncrement InterlockedIncrement diff --git a/protocols/MSN/msn_libstr.cpp b/protocols/MSN/msn_libstr.cpp index 50756b7ccd..f12c3e25fd 100644 --- a/protocols/MSN/msn_libstr.cpp +++ b/protocols/MSN/msn_libstr.cpp @@ -195,7 +195,9 @@ static int SingleHexToDecimal(char c) } template void UrlDecode(char* str); +#ifdef _UNICODE template void UrlDecode(wchar_t* str); +#endif template void UrlDecode(chartype* str) { diff --git a/protocols/MSN/msn_lists.cpp b/protocols/MSN/msn_lists.cpp index 5325e8190b..2a63bb530c 100644 --- a/protocols/MSN/msn_lists.cpp +++ b/protocols/MSN/msn_lists.cpp @@ -545,11 +545,13 @@ static void SaveSettings(HANDLE hItem, HWND hwndList, CMsnProto* proto) } else if (IsHContactInfo(hItem)) { - +#ifdef _UNICODE TCHAR buf[MSN_MAX_EMAIL_LEN]; SendMessage(hwndList, CLM_GETITEMTEXT, (WPARAM)hItem, (LPARAM)buf); WideCharToMultiByte(CP_ACP, 0, buf, -1, szEmail, sizeof(szEmail), 0, 0); - +#else + SendMessage(hwndList, CLM_GETITEMTEXT, (WPARAM)hItem, (LPARAM)szEmail); +#endif } int dwMask = proto->Lists_GetMask(szEmail); diff --git a/protocols/MSN/msn_mail.cpp b/protocols/MSN/msn_mail.cpp index d14e9704c7..e70fbef344 100644 --- a/protocols/MSN/msn_mail.cpp +++ b/protocols/MSN/msn_mail.cpp @@ -269,13 +269,19 @@ void CMsnProto::sttNotificationMessage(char* msgBody, bool isInitial) wchar_t* mimeFromW = tFileInfo.decode(From); wchar_t* mimeSubjectW = tFileInfo.decode(Subject); - +#ifdef _UNICODE mir_sntprintf(tBuffer2, SIZEOF(tBuffer2), TranslateT("Subject: %s"), mimeSubjectW); +#else + mir_sntprintf(tBuffer2, SIZEOF(tBuffer2), TranslateT("Subject: %S"), mimeSubjectW); +#endif - +#ifdef _UNICODE TCHAR* msgtxt = _stricmp(From, Fromaddr) ? TranslateT("Hotmail from %s (%S)") : TranslateT("Hotmail from %s"); - +#else + TCHAR* msgtxt = _strcmpi(From, Fromaddr) ? + TranslateT("Hotmail from %S (%s)") : TranslateT("Hotmail from %S"); +#endif mir_sntprintf(tBuffer, SIZEOF(tBuffer), msgtxt, mimeFromW, Fromaddr); mir_free(mimeFromW); mir_free(mimeSubjectW); diff --git a/protocols/MSN/msn_misc.cpp b/protocols/MSN/msn_misc.cpp index ee3d188350..80d9fd46ec 100644 --- a/protocols/MSN/msn_misc.cpp +++ b/protocols/MSN/msn_misc.cpp @@ -22,6 +22,44 @@ along with this program. If not, see . #include "msn_proto.h" #include "version.h" +#if !defined(_UNICODE) && !defined(_WIN64) + +typedef LONG (WINAPI pIncrementFunc)(LONG volatile*); +static pIncrementFunc MyInterlockedIncrement95; +static pIncrementFunc MyInterlockedIncrementInit; + +pIncrementFunc *MyInterlockedIncrement = MyInterlockedIncrementInit; + +static CRITICAL_SECTION csInterlocked95; + +///////////////////////////////////////////////////////////////////////////////////////// +// InterlockedIncrement emulation + +static LONG WINAPI MyInterlockedIncrement95(LONG volatile* pVal) +{ + DWORD ret; + EnterCriticalSection(&csInterlocked95); + ret=++*pVal; + LeaveCriticalSection(&csInterlocked95); + return ret; +} + +//there's a possible hole here if too many people call this at the same time, but that doesn't happen +static LONG WINAPI MyInterlockedIncrementInit(LONG volatile* pVal) +{ + DWORD ver = GetVersion(); + if ((ver & 0x80000000) && LOWORD(ver) == 0x0004) + { + InitializeCriticalSection(&csInterlocked95); + MyInterlockedIncrement = MyInterlockedIncrement95; + } + else + MyInterlockedIncrement = (pIncrementFunc*)InterlockedIncrement; + + return MyInterlockedIncrement(pVal); +} + +#endif ///////////////////////////////////////////////////////////////////////////////////////// // MirandaStatusToMSN - status helper functions -- cgit v1.2.3