summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--protocols/MSN/msn_global.h2
-rw-r--r--protocols/MSN/msn_libstr.cpp2
-rw-r--r--protocols/MSN/msn_lists.cpp6
-rw-r--r--protocols/MSN/msn_mail.cpp12
-rw-r--r--protocols/MSN/msn_misc.cpp38
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