diff options
Diffstat (limited to 'protocols')
-rw-r--r-- | protocols/MSN/msn_global.h | 2 | ||||
-rw-r--r-- | protocols/MSN/msn_libstr.cpp | 2 | ||||
-rw-r--r-- | protocols/MSN/msn_lists.cpp | 6 | ||||
-rw-r--r-- | protocols/MSN/msn_mail.cpp | 12 | ||||
-rw-r--r-- | protocols/MSN/msn_misc.cpp | 38 |
5 files changed, 54 insertions, 6 deletions
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 <class chartype> 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 <http://www.gnu.org/licenses/>. #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
|