From 6e53dfca72b932c4bdcd7aa02ca62bf8b2630eac Mon Sep 17 00:00:00 2001
From: George Hazan <george.hazan@gmail.com>
Date: Tue, 26 Jul 2016 09:20:25 +0000
Subject: less TCHARs: - TCHAR is replaced with wchar_t everywhere; - LPGENT
 replaced with either LPGENW or LPGEN; - fixes for ANSI plugins that
 improperly used _t functions; - TCHAR *t removed from MAllStrings; -
 ptszGroup, ptszTitle & ptszTab in OPTIONSDIALOGPAGE replaced with pwsz*

git-svn-id: http://svn.miranda-ng.org/main/trunk@17133 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
---
 plugins/Spamotron/src/bayes.cpp     |  14 ++---
 plugins/Spamotron/src/options.cpp   |  76 +++++++++++------------
 plugins/Spamotron/src/popups.cpp    |  12 ++--
 plugins/Spamotron/src/spamotron.cpp |  26 ++++----
 plugins/Spamotron/src/stdafx.h      |  42 ++++++-------
 plugins/Spamotron/src/utils.cpp     | 120 ++++++++++++++++++------------------
 6 files changed, 145 insertions(+), 145 deletions(-)

(limited to 'plugins/Spamotron')

diff --git a/plugins/Spamotron/src/bayes.cpp b/plugins/Spamotron/src/bayes.cpp
index d6d582a59b..aa377760a7 100644
--- a/plugins/Spamotron/src/bayes.cpp
+++ b/plugins/Spamotron/src/bayes.cpp
@@ -177,7 +177,7 @@ int get_token_score(int type, char *token)
 	return score;
 }
 
-double get_msg_score(TCHAR *msg)
+double get_msg_score(wchar_t *msg)
 {
 	char *message, *token;
 	double spam_prob, ham_prob, tmp1 = 1, tmp2 = 1;
@@ -220,7 +220,7 @@ double get_msg_score(TCHAR *msg)
 	return tmp1 / (tmp1 + tmp2);
 }
 
-void queue_message(MCONTACT hContact, DWORD msgtime, TCHAR *message)
+void queue_message(MCONTACT hContact, DWORD msgtime, wchar_t *message)
 {
 	char *tmp;
 	sqlite3_stmt *stmt;
@@ -247,7 +247,7 @@ void queue_message(MCONTACT hContact, DWORD msgtime, TCHAR *message)
 void bayes_approve_contact(MCONTACT hContact)
 {
 	const char *message;
-	TCHAR *messageW;
+	wchar_t *messageW;
 	int d = 0;
 	sqlite3_stmt *stmt;
 
@@ -279,7 +279,7 @@ void dequeue_messages()
 	time_t t = time(NULL);
 	sqlite3_stmt *stmt;
 	const char *message;
-	TCHAR *messageW;
+	wchar_t *messageW;
 	int d = 0;
 
 	if (bayesdb == NULL)
@@ -306,7 +306,7 @@ void dequeue_messages()
 }
 
 /* Learn one message as either SPAM or HAM as specified in type parameter */
-void learn(int type, TCHAR *msg)
+void learn(int type, wchar_t *msg)
 {
 	char *tok, *message;
 	BYTE digest[16];
@@ -375,12 +375,12 @@ void learn(int type, TCHAR *msg)
 	mir_free(message);
 }
 
-void learn_ham(TCHAR *msg)
+void learn_ham(wchar_t *msg)
 {
 	learn(0, msg);
 }
 
-void learn_spam(TCHAR *msg)
+void learn_spam(wchar_t *msg)
 {
 	learn(1, msg);
 }
\ No newline at end of file
diff --git a/plugins/Spamotron/src/options.cpp b/plugins/Spamotron/src/options.cpp
index 5bf7c8a4d6..7f20587abc 100644
--- a/plugins/Spamotron/src/options.cpp
+++ b/plugins/Spamotron/src/options.cpp
@@ -1,31 +1,31 @@
 #include "stdafx.h"
 
-TCHAR currentResponse[256] = {0};
+wchar_t currentResponse[256] = {0};
 
-TCHAR* _getCOptS(TCHAR *buf, unsigned int buflen, MCONTACT hContact, const char* option, const TCHAR *def)
+wchar_t* _getCOptS(wchar_t *buf, unsigned int buflen, MCONTACT hContact, const char* option, const wchar_t *def)
 {
 	DBVARIANT dbv = {0};
 	_tcsnset(buf, 0, buflen);
 	if (db_get_ts(hContact, PLUGIN_NAME, option, &dbv) != 0)
-		_tcsncpy(buf, def, min(buflen, mir_tstrlen(def)+1));
+		wcsncpy(buf, def, min(buflen, mir_tstrlen(def)+1));
 	else if (dbv.type == DBVT_TCHAR) {
-		_tcsncpy(buf, dbv.ptszVal, min(buflen, mir_tstrlen(dbv.ptszVal)+1));
+		wcsncpy(buf, dbv.ptszVal, min(buflen, mir_tstrlen(dbv.ptszVal)+1));
 	}
 	db_free(&dbv);
 	return buf;
 }
-TCHAR* _getMOptS(TCHAR *buf, unsigned int buflen, const char* module, const char* option, const TCHAR *def)
+wchar_t* _getMOptS(wchar_t *buf, unsigned int buflen, const char* module, const char* option, const wchar_t *def)
 {
-	TCHAR* tmp;
+	wchar_t* tmp;
 	DBVARIANT dbv = {0};
 	_tcsnset(buf, 0, buflen);
 	if (db_get_s(NULL, module, option, &dbv) != 0)
-		_tcsncpy(buf, def, min(buflen, mir_tstrlen(def)+1));
+		wcsncpy(buf, def, min(buflen, mir_tstrlen(def)+1));
 	else if (dbv.type == DBVT_TCHAR) {
-		_tcsncpy(buf, dbv.ptszVal, min(buflen, mir_tstrlen(dbv.ptszVal)+1));
+		wcsncpy(buf, dbv.ptszVal, min(buflen, mir_tstrlen(dbv.ptszVal)+1));
 	} else {
 		tmp = mir_a2u(dbv.pszVal);
-		_tcsncpy(buf, tmp, min(buflen, mir_tstrlen(tmp)+1));
+		wcsncpy(buf, tmp, min(buflen, mir_tstrlen(tmp)+1));
 		mir_free(tmp);
 	}
 	db_free(&dbv);
@@ -36,9 +36,9 @@ TCHAR* _getMOptS(TCHAR *buf, unsigned int buflen, const char* module, const char
 BOOL _saveDlgItemText(HWND hDialog, int controlID, char* option)
 {
 	int len;
-	TCHAR *tmp;
+	wchar_t *tmp;
 	len = GetWindowTextLength(GetDlgItem(hDialog, controlID));
-	tmp = (TCHAR *)malloc((len + 1)*sizeof(TCHAR));
+	tmp = (wchar_t *)malloc((len + 1)*sizeof(wchar_t));
 	GetDlgItemText(hDialog, controlID, tmp, len + 1);
 	_setOptTS(option, tmp);
 	free(tmp);
@@ -49,9 +49,9 @@ int _saveDlgItemResponse(HWND hDialog, int controlID, char* option)
 	int ret = 0;
 	int isRegex = 0;
 	int len;
-	TCHAR *tmp;
+	wchar_t *tmp;
 	len = GetWindowTextLength(GetDlgItem(hDialog, controlID));
-	tmp = (TCHAR*)malloc((len+1)*sizeof(TCHAR));
+	tmp = (wchar_t*)malloc((len+1)*sizeof(wchar_t));
 	GetDlgItemText(hDialog, controlID, tmp, len+1);
 	isRegex = _isregex(tmp);
 	if (!isRegex)
@@ -68,20 +68,20 @@ int _saveDlgItemResponse(HWND hDialog, int controlID, char* option)
 BOOL _saveDlgItemInt(HWND hDialog, int controlID, char* option)
 {
 	int len;
-	TCHAR *tmp;
+	wchar_t *tmp;
 	len = GetWindowTextLength(GetDlgItem(hDialog, controlID));
-	tmp = (TCHAR *)malloc((len + 1)*sizeof(TCHAR));
+	tmp = (wchar_t *)malloc((len + 1)*sizeof(wchar_t));
 	GetDlgItemText(hDialog, controlID, tmp, len + 1);
-	_setOptD(option, _ttoi(tmp));
+	_setOptD(option, _wtoi(tmp));
 	free(tmp);
 	return TRUE;
 }
 BOOL _saveDlgItemScore(HWND hDialog, int controlID, char* option)
 {
 	int len;
-	TCHAR *tmp;
+	wchar_t *tmp;
 	len = GetWindowTextLength(GetDlgItem(hDialog, controlID));
-	tmp = (TCHAR *)malloc((len + 1)*sizeof(TCHAR));
+	tmp = (wchar_t *)malloc((len + 1)*sizeof(wchar_t));
 	GetDlgItemText(hDialog, controlID, tmp, len + 1);
 	_setOptD(option, _tcstod(tmp, NULL)/SCORE_C);
 	return TRUE;
@@ -93,12 +93,12 @@ INT_PTR CALLBACK DlgProcOptionsMain(HWND optDlg, UINT msg, WPARAM wParam, LPARAM
 {
 	static int bInitializing = 0, i, j, numProtocols;
 	PROTOACCOUNT **pd;
-	TCHAR pName[256] = {0};
+	wchar_t pName[256] = {0};
 	char protoOption[256] = {0};
 	HWND hProtocolsList = GetDlgItem(optDlg, IDC_OPT_PROTOCOLS);
 	LVITEM lvi = {0};
 	LVCOLUMN lvc = {0};
-	TCHAR buf[512];
+	wchar_t buf[512];
 
 	switch (msg) {
 	case WM_INITDIALOG:
@@ -115,8 +115,8 @@ INT_PTR CALLBACK DlgProcOptionsMain(HWND optDlg, UINT msg, WPARAM wParam, LPARAM
 		CheckDlgButton(optDlg, IDC_OPT_LOG_ACTIONS, _getOptB("LogActions", defaultLogActions) ? BST_CHECKED : BST_UNCHECKED);
 
 		SetDlgItemText(optDlg, IDC_OPT_IN_MSG_APPROVE_WORDLIST, _getOptS(buf, _countof(buf), "ApproveOnMsgInWordlist", defaultApproveOnMsgInWordlist));
-		SetDlgItemText(optDlg, IDC_OPT_MAX_MSG_CONTACT, _itot((unsigned int)_getOptD("MaxMsgContactCountPerDay", defaultMaxMsgContactCountPerDay), buf, 10));
-		SetDlgItemText(optDlg, IDC_OPT_MAX_SAME_MSG, _itot((unsigned int)_getOptD("MaxSameMsgCountPerDay", defaultMaxSameMsgCountPerDay), buf, 10));
+		SetDlgItemText(optDlg, IDC_OPT_MAX_MSG_CONTACT, _itow((unsigned int)_getOptD("MaxMsgContactCountPerDay", defaultMaxMsgContactCountPerDay), buf, 10));
+		SetDlgItemText(optDlg, IDC_OPT_MAX_SAME_MSG, _itow((unsigned int)_getOptD("MaxSameMsgCountPerDay", defaultMaxSameMsgCountPerDay), buf, 10));
 		SetDlgItemText(optDlg, IDC_OPT_DONT_REPLY_MSG_WORDLIST, _getOptS(buf, _countof(buf), "DontReplyMsgWordlist", defaultDontReplyMsgWordlist));
 
 		///Individual protocols list
@@ -129,7 +129,7 @@ INT_PTR CALLBACK DlgProcOptionsMain(HWND optDlg, UINT msg, WPARAM wParam, LPARAM
 		for (i = 0, j = 0; i < numProtocols; i++)
 		{
 			lvi.iItem = i;
-			_getMOptS(pName, 200*sizeof(TCHAR), pd[i]->szModuleName, "AM_BaseProto", L"");
+			_getMOptS(pName, 200*sizeof(wchar_t), pd[i]->szModuleName, "AM_BaseProto", L"");
 			if (mir_tstrcmp(pName, L"ICQ") != 0)
 				continue;
 			lvi.pszText = mir_a2u(pd[i]->szModuleName);
@@ -217,7 +217,7 @@ INT_PTR CALLBACK DlgProcOptionsQuestion(HWND optDlg, UINT msg, WPARAM wParam, LP
 	static int bInitializing = 0;
 	int i, selectedMode;
 	HWND ht;
-	TCHAR *buf; 
+	wchar_t *buf; 
 	unsigned int buflen = 500;
 
 	switch (msg) {
@@ -243,7 +243,7 @@ INT_PTR CALLBACK DlgProcOptionsQuestion(HWND optDlg, UINT msg, WPARAM wParam, LP
 				}
 			}
 			SetDlgItemText(optDlg, IDC_OPT_MATH_RESPONSE, TranslateT("Will be automatically evaluated from %mathexpr%"));
-			buf = (TCHAR *)malloc(buflen*sizeof(TCHAR));
+			buf = (wchar_t *)malloc(buflen*sizeof(wchar_t));
 			switch (selectedMode) {
 				case SPAMOTRON_MODE_PLAIN:	
 				case SPAMOTRON_MODE_ROTATE:
@@ -289,7 +289,7 @@ INT_PTR CALLBACK DlgProcOptionsQuestion(HWND optDlg, UINT msg, WPARAM wParam, LP
 						return FALSE;
 					i = SendDlgItemMessage(optDlg, IDC_OPT_MODE, CB_GETCURSEL, 0, 0);
 					selectedMode = SendDlgItemMessage(optDlg, IDC_OPT_MODE, CB_GETITEMDATA, i, 0);
-					buf = (TCHAR*)malloc(buflen*sizeof(TCHAR));
+					buf = (wchar_t*)malloc(buflen*sizeof(wchar_t));
 					switch (selectedMode) {
 						case SPAMOTRON_MODE_PLAIN:	
 						case SPAMOTRON_MODE_ROTATE:
@@ -418,8 +418,8 @@ INT_PTR CALLBACK DlgProcOptionsBayes(HWND optDlg, UINT msg, WPARAM wParam, LPARA
 {
 	static int bInitializing = 0, len;
 	BOOL bEnabled;
-	TCHAR *dbuf;
-	TCHAR buf[MAX_BUFFER_LENGTH];
+	wchar_t *dbuf;
+	wchar_t buf[MAX_BUFFER_LENGTH];
 	char cbuf[MAX_BUFFER_LENGTH];
 	switch (msg) {
 		case WM_INITDIALOG:
@@ -482,7 +482,7 @@ INT_PTR CALLBACK DlgProcOptionsBayes(HWND optDlg, UINT msg, WPARAM wParam, LPARA
 				case IDC_OPT_BAYES_HAM:
 					// Learn ham from learnbox
 					len = GetWindowTextLength(GetDlgItem(optDlg, IDC_OPT_BAYES_LEARNBOX))+1;
-					dbuf = (TCHAR *)malloc(len*sizeof(TCHAR));
+					dbuf = (wchar_t *)malloc(len*sizeof(wchar_t));
 					if (!dbuf)
 						return FALSE;
 					GetDlgItemText(optDlg, IDC_OPT_BAYES_LEARNBOX, dbuf, len);
@@ -499,7 +499,7 @@ INT_PTR CALLBACK DlgProcOptionsBayes(HWND optDlg, UINT msg, WPARAM wParam, LPARA
 				case IDC_OPT_BAYES_SPAM:
 					// Learn spam from learnbox
 					len = GetWindowTextLength(GetDlgItem(optDlg, IDC_OPT_BAYES_LEARNBOX))+1;
-					dbuf = (TCHAR *)malloc(len*sizeof(TCHAR));
+					dbuf = (wchar_t *)malloc(len*sizeof(wchar_t));
 					if (!dbuf)
 						return FALSE;
 					GetDlgItemText(optDlg, IDC_OPT_BAYES_LEARNBOX, dbuf, len);
@@ -515,7 +515,7 @@ INT_PTR CALLBACK DlgProcOptionsBayes(HWND optDlg, UINT msg, WPARAM wParam, LPARA
 
 				case IDC_CHECK_MSG:
 					len = GetWindowTextLength(GetDlgItem(optDlg, IDC_OPT_BAYES_LEARNBOX))+1;
-					dbuf = (TCHAR *)malloc((len)*sizeof(TCHAR));
+					dbuf = (wchar_t *)malloc((len)*sizeof(wchar_t));
 					if (!dbuf)
 						return FALSE;
 					GetDlgItemText(optDlg, IDC_OPT_BAYES_LEARNBOX, dbuf, len);
@@ -556,21 +556,21 @@ int OnOptInitialize(WPARAM wParam, LPARAM)
 {
 	OPTIONSDIALOGPAGE odp = { 0 };
 	odp.hInstance = hInst;
-	odp.ptszGroup = LPGENT("Message sessions");
-	odp.ptszTitle = _T(PLUGIN_NAME);
+	odp.pwszGroup = LPGENW("Message sessions");
+	odp.pwszTitle = _T(PLUGIN_NAME);
 	odp.flags = ODPF_TCHAR | ODPF_BOLDGROUPS;
 
-	odp.ptszTab = LPGENT("Settings");
+	odp.pwszTab = LPGENW("Settings");
 	odp.pszTemplate = MAKEINTRESOURCEA(IDD_SPAMOTRON_MAIN);
 	odp.pfnDlgProc = DlgProcOptionsMain;
 	Options_AddPage(wParam, &odp);
 
-	odp.ptszTab = LPGENT("Messages");
+	odp.pwszTab = LPGENW("Messages");
 	odp.pszTemplate = MAKEINTRESOURCEA(IDD_SPAMOTRON_Q);
 	odp.pfnDlgProc = DlgProcOptionsQuestion;
 	Options_AddPage(wParam, &odp);
 
-	odp.ptszTab = LPGENT("Bayes");
+	odp.pwszTab = LPGENW("Bayes");
 	odp.pszTemplate = MAKEINTRESOURCEA(IDD_SPAMOTRON_BAYES);
 	odp.pfnDlgProc = DlgProcOptionsBayes;
 	Options_AddPage(wParam, &odp);
@@ -578,8 +578,8 @@ int OnOptInitialize(WPARAM wParam, LPARAM)
 	if (ServiceExists(MS_POPUP_ADDPOPUPT)) {
 		odp.pszTemplate = MAKEINTRESOURCEA(IDD_SPAMOTRON_POPUPS);
 		odp.pfnDlgProc = DlgProcOptionsPopups;
-		odp.ptszGroup = LPGENT("Popups");
-		odp.ptszTab = NULL;
+		odp.pwszGroup = LPGENW("Popups");
+		odp.pwszTab = NULL;
 		Options_AddPage(wParam, &odp);
 	}
 	return 0;
diff --git a/plugins/Spamotron/src/popups.cpp b/plugins/Spamotron/src/popups.cpp
index 46289ac9af..0d81268d04 100644
--- a/plugins/Spamotron/src/popups.cpp
+++ b/plugins/Spamotron/src/popups.cpp
@@ -143,7 +143,7 @@ INT_PTR CALLBACK DlgProcOptionsPopups(HWND optDlg, UINT msg, WPARAM wParam, LPAR
 	return FALSE;
 }
 
-int ShowPopupPreview(HWND optDlg, BYTE popupType, TCHAR *line1, TCHAR *line2)
+int ShowPopupPreview(HWND optDlg, BYTE popupType, wchar_t *line1, wchar_t *line2)
 {
 	POPUPDATAT ppdp = {0};
 	switch (popupType)
@@ -185,14 +185,14 @@ int ShowPopupPreview(HWND optDlg, BYTE popupType, TCHAR *line1, TCHAR *line2)
 		ppdp.iSeconds = 0;
 
 	ppdp.lchContact = NULL;
-	_tcsncpy_s(ppdp.lptzContactName, (line1 ? line1 : _T(PLUGIN_NAME)), _TRUNCATE);
+	wcsncpy_s(ppdp.lptzContactName, (line1 ? line1 : _T(PLUGIN_NAME)), _TRUNCATE);
 	if (line2)
-		_tcsncpy_s(ppdp.lptzText, line2, _TRUNCATE);
+		wcsncpy_s(ppdp.lptzText, line2, _TRUNCATE);
 	return PUAddPopupT(&ppdp);
 
 }
 
-int ShowPopup(MCONTACT hContact, BYTE popupType, TCHAR *line1, TCHAR *line2)
+int ShowPopup(MCONTACT hContact, BYTE popupType, wchar_t *line1, wchar_t *line2)
 {
 	POPUPDATAT ppdp = {0};
 	switch (popupType)
@@ -234,8 +234,8 @@ int ShowPopup(MCONTACT hContact, BYTE popupType, TCHAR *line1, TCHAR *line2)
 		ppdp.iSeconds = 0;
 
 	ppdp.lchContact = hContact;
-	_tcsncpy_s(ppdp.lptzContactName, (line1 ? line1 : _T(PLUGIN_NAME)), _TRUNCATE);
+	wcsncpy_s(ppdp.lptzContactName, (line1 ? line1 : _T(PLUGIN_NAME)), _TRUNCATE);
 	if (line2)
-		_tcsncpy_s(ppdp.lptzText, line2, _TRUNCATE);
+		wcsncpy_s(ppdp.lptzText, line2, _TRUNCATE);
 	return PUAddPopupT(&ppdp);
 }
\ No newline at end of file
diff --git a/plugins/Spamotron/src/spamotron.cpp b/plugins/Spamotron/src/spamotron.cpp
index dceac13a6e..a96cc0551b 100644
--- a/plugins/Spamotron/src/spamotron.cpp
+++ b/plugins/Spamotron/src/spamotron.cpp
@@ -42,10 +42,10 @@ int OnDBEventFilterAdd(WPARAM wParam, LPARAM lParam)
 	char *msgblob;
 	char protoOption[256] = {0};
 	int buflen = MAX_BUFFER_LENGTH;
-	TCHAR buf[MAX_BUFFER_LENGTH];
-	TCHAR *message = NULL, *challengeW = NULL, *tmpW = NULL;
-	TCHAR *whitelist = NULL, *ptok;
-	TCHAR mexpr[64];
+	wchar_t buf[MAX_BUFFER_LENGTH];
+	wchar_t *message = NULL, *challengeW = NULL, *tmpW = NULL;
+	wchar_t *whitelist = NULL, *ptok;
+	wchar_t mexpr[64];
 	int maxmsglen = 0, a, b, i;
 	BOOL bayesEnabled = _getOptB("BayesEnabled", defaultBayesEnabled);
 	BOOL bCorrectResponse = FALSE;
@@ -132,20 +132,20 @@ int OnDBEventFilterAdd(WPARAM wParam, LPARAM lParam)
 	/*** Check for words in white-list ***/
 
 	if (_getOptB("ApproveOnMsgIn", defaultApproveOnMsgIn)) {
-		whitelist = (TCHAR*)malloc(2048 * sizeof(TCHAR));
+		whitelist = (wchar_t*)malloc(2048 * sizeof(wchar_t));
 		if (whitelist != NULL) {
 			_getOptS(whitelist, 2048, "ApproveOnMsgInWordlist", defaultApproveOnMsgInWordlist);
 			if (_isregex(whitelist)) {
 				if (_regmatch(message, whitelist))
 					bCorrectResponse = TRUE;
 			} else {
-				ptok = _tcstok(whitelist, L" ");
+				ptok = wcstok(whitelist, L" ");
 				while (ptok != NULL) {
-					if (_tcsstr(message, ptok)) {
+					if (wcsstr(message, ptok)) {
 						bCorrectResponse = TRUE;
 						break;
 					}
-					ptok = _tcstok(NULL, L" ");
+					ptok = wcstok(NULL, L" ");
 				}
 			}
 			free(whitelist);
@@ -207,8 +207,8 @@ int OnDBEventFilterAdd(WPARAM wParam, LPARAM lParam)
 		case SPAMOTRON_MODE_MATH:
 			if (message == NULL)
 				break;
-			_itot(_getCOptD(hContact, "ResponseMath", -1), buf, 10);
-			if (_tcsstr(message, buf) && (mir_tstrlen(buf) == mir_tstrlen(message))) {
+			_itow(_getCOptD(hContact, "ResponseMath", -1), buf, 10);
+			if (wcsstr(message, buf) && (mir_tstrlen(buf) == mir_tstrlen(message))) {
 				bCorrectResponse = TRUE;
 			}
 			break;
@@ -232,7 +232,7 @@ int OnDBEventFilterAdd(WPARAM wParam, LPARAM lParam)
 		// Resubmit pending authorization request
 		if (_getCOptB(hContact, "AuthEventPending", FALSE)) {
 			DBVARIANT _dbv;
-			TCHAR AuthEventModule[100];
+			wchar_t AuthEventModule[100];
 			char* szAuthEventModule;
 			if (db_get(hContact, PLUGIN_NAME, "AuthEvent", &_dbv) == 0) {
 				DBEVENTINFO *_dbei = (DBEVENTINFO *)malloc(sizeof(DBEVENTINFO));
@@ -344,8 +344,8 @@ int OnDBEventFilterAdd(WPARAM wParam, LPARAM lParam)
 		
 	/*** Send Challenge ***/
 
-	challengeW = (TCHAR *)malloc(maxmsglen*sizeof(TCHAR));
-	tmpW = (TCHAR *)malloc(maxmsglen*sizeof(TCHAR));
+	challengeW = (wchar_t *)malloc(maxmsglen*sizeof(wchar_t));
+	tmpW = (wchar_t *)malloc(maxmsglen*sizeof(wchar_t));
 	switch (_getOptB("Mode", defaultMode)) {
 	case SPAMOTRON_MODE_PLAIN:
 		if (dbei->eventType == EVENTTYPE_AUTHREQUEST)
diff --git a/plugins/Spamotron/src/stdafx.h b/plugins/Spamotron/src/stdafx.h
index 2d584589ba..1be69abae9 100644
--- a/plugins/Spamotron/src/stdafx.h
+++ b/plugins/Spamotron/src/stdafx.h
@@ -40,7 +40,7 @@
 #define _getOptD(a,b) _getCOptD(NULL, a, b)
 #define _setOptD(a,b) _setCOptD(NULL, a, b)
 
-TCHAR* _getCOptS(TCHAR *buf, unsigned int buflen, MCONTACT hContact, const char* option, const TCHAR *def);
+wchar_t* _getCOptS(wchar_t *buf, unsigned int buflen, MCONTACT hContact, const char* option, const wchar_t *def);
 #define _getOptS(a,b,c,d) _getCOptS(a, b, NULL, c, d)
 #define _setCOptTS(a,b,c) db_set_ts(a, PLUGIN_NAME, b, c)
 #define _setCOptS(a,b,c) db_set_s(a, PLUGIN_NAME, b, c)
@@ -90,24 +90,24 @@ TCHAR* _getCOptS(TCHAR *buf, unsigned int buflen, MCONTACT hContact, const char*
 
 #define _NOTIFYP _getOptB("NotifyPopup", defaultNotifyPopup)
 
-TCHAR* ReplaceVars(TCHAR *dst, unsigned int len);
-TCHAR* ReplaceVarsNum(TCHAR *dst, unsigned int len, int num);
-TCHAR* ReplaceVar(TCHAR *dst, unsigned int len, const TCHAR *var, const TCHAR *rvar);
-int get_response_id(const TCHAR *strvar);
-int get_response_num(const TCHAR *str);
-TCHAR* get_response(TCHAR* dst, unsigned int dstlen, int num);
-
-TCHAR* _tcsstr_cc(TCHAR* str, TCHAR* strSearch, BOOL cc);
-BOOL _isregex(TCHAR* strSearch);
-BOOL _isvalidregex(TCHAR* strSearch);
-BOOL _regmatch(TCHAR* str, TCHAR* strSearch);
-BOOL Contains(TCHAR* dst, TCHAR* src);
+wchar_t* ReplaceVars(wchar_t *dst, unsigned int len);
+wchar_t* ReplaceVarsNum(wchar_t *dst, unsigned int len, int num);
+wchar_t* ReplaceVar(wchar_t *dst, unsigned int len, const wchar_t *var, const wchar_t *rvar);
+int get_response_id(const wchar_t *strvar);
+int get_response_num(const wchar_t *str);
+wchar_t* get_response(wchar_t* dst, unsigned int dstlen, int num);
+
+wchar_t* _tcsstr_cc(wchar_t* str, wchar_t* strSearch, BOOL cc);
+BOOL _isregex(wchar_t* strSearch);
+BOOL _isvalidregex(wchar_t* strSearch);
+BOOL _regmatch(wchar_t* str, wchar_t* strSearch);
+BOOL Contains(wchar_t* dst, wchar_t* src);
 BOOL isOneDay(DWORD timestamp1, DWORD timestamp2);
 void MarkUnread(MCONTACT hContact);
 
-int ShowPopup(MCONTACT hContact, BYTE popupType, TCHAR *line1, TCHAR *line2);
-int ShowPopupPreview(HWND optDlg, BYTE popupType, TCHAR *line1, TCHAR *line2);
-int _notify(MCONTACT hContact, BYTE type, TCHAR *message, TCHAR *origmessage);
+int ShowPopup(MCONTACT hContact, BYTE popupType, wchar_t *line1, wchar_t *line2);
+int ShowPopupPreview(HWND optDlg, BYTE popupType, wchar_t *line1, wchar_t *line2);
+int _notify(MCONTACT hContact, BYTE type, wchar_t *message, wchar_t *origmessage);
 int LogToSystemHistory(char *message, char *origmessage);
 #define POPUP_DEFAULT 0
 #define POPUP_BLOCKED 1
@@ -136,13 +136,13 @@ extern sqlite3 *bayesdb;
 
 int OpenBayes();
 int CheckBayes();
-void learn(int type, TCHAR *msg);
-void learn_ham(TCHAR *msg);
-void learn_spam(TCHAR *msg);
+void learn(int type, wchar_t *msg);
+void learn_ham(wchar_t *msg);
+void learn_spam(wchar_t *msg);
 int get_token_count(int type);
 int get_msg_count(int type);
-double get_msg_score(TCHAR *msg);
-void queue_message(MCONTACT hContact, DWORD msgtime, TCHAR *message);
+double get_msg_score(wchar_t *msg);
+void queue_message(MCONTACT hContact, DWORD msgtime, wchar_t *message);
 void bayes_approve_contact(MCONTACT hContact);
 void dequeue_messages();
 
diff --git a/plugins/Spamotron/src/utils.cpp b/plugins/Spamotron/src/utils.cpp
index 7a9bf2fe3e..4d5ca64280 100644
--- a/plugins/Spamotron/src/utils.cpp
+++ b/plugins/Spamotron/src/utils.cpp
@@ -2,36 +2,36 @@
 #include <locale.h>
 
 
-TCHAR *_tcstolower(TCHAR *dst)
+wchar_t *_tcstolower(wchar_t *dst)
 {
 	if (dst == NULL)
 		return NULL;
 	
 	SIZE_T dst_len = mir_tstrlen(dst);
 	for (SIZE_T i = 0; i < dst_len; i ++)
-		dst[i] = _totlower(dst[i]);
+		dst[i] = towlower(dst[i]);
 	return dst;
 }
 
-TCHAR *_tcstoupper(TCHAR *dst)
+wchar_t *_tcstoupper(wchar_t *dst)
 {
 	if (dst == NULL)
 		return NULL;
 	
 	SIZE_T dst_len = mir_tstrlen(dst);
 	for (SIZE_T i = 0; i < dst_len; i ++)
-		dst[i] = _totupper(dst[i]);
+		dst[i] = towupper(dst[i]);
 	return dst;
 }
 
-BOOL _isregex(TCHAR* strSearch)
+BOOL _isregex(wchar_t* strSearch)
 {
 	BOOL ret = FALSE;
 	pcre16 *re;
 	const char *error;
 	int erroroffs, rc;
-	TCHAR *regex;
-	TCHAR regex_parse[] = L"/(.*)/([igsm]*)";
+	wchar_t *regex;
+	wchar_t regex_parse[] = L"/(.*)/([igsm]*)";
 	int ovector[9];
 
 	if (strSearch == NULL)
@@ -52,15 +52,15 @@ err_out:
 	return ret;
 }
 
-BOOL _isvalidregex(TCHAR* strSearch)
+BOOL _isvalidregex(wchar_t* strSearch)
 {
 	BOOL ret = FALSE;
 	pcre16 *re;
 	const char *error;
 	int erroroffs, rc;
-	TCHAR *regex, *regexp, *mod;
+	wchar_t *regex, *regexp, *mod;
 	int opts = 0;
-	TCHAR regex_parse[] = L"/(.*)/([igsm]*)";
+	wchar_t regex_parse[] = L"/(.*)/([igsm]*)";
 	int ovector[9];
 
 	if (strSearch == NULL)
@@ -82,11 +82,11 @@ BOOL _isvalidregex(TCHAR* strSearch)
 	mod = regex + ovector[4];
 	mod[ovector[5] - ovector[4]] = 0;
 
-	if (_tcsstr(mod, L"i"))
+	if (wcsstr(mod, L"i"))
 		opts |= PCRE_CASELESS;
-	if (_tcsstr(mod, L"m"))
+	if (wcsstr(mod, L"m"))
 		opts |= PCRE_MULTILINE;
-	if (_tcsstr(mod, L"s"))
+	if (wcsstr(mod, L"s"))
 		opts |= PCRE_DOTALL;
 
 	re = pcre16_compile(regexp, opts, &error, &erroroffs, NULL);
@@ -100,15 +100,15 @@ err_out:
 	return ret;
 }
 
-BOOL _regmatch(TCHAR* str, TCHAR* strSearch)
+BOOL _regmatch(wchar_t* str, wchar_t* strSearch)
 {
 	BOOL ret = FALSE;
 	pcre16 *re;
 	const char *error;
 	int erroroffs, rc;
-	TCHAR *regex, *regexp, *data = NULL, *mod;
+	wchar_t *regex, *regexp, *data = NULL, *mod;
 	int opts = 0;
-	TCHAR regex_parse[] = L"^/(.*)/([igsm]*)";
+	wchar_t regex_parse[] = L"^/(.*)/([igsm]*)";
 	int ovector[9];
 
 	if (str == NULL || strSearch == NULL)
@@ -133,11 +133,11 @@ BOOL _regmatch(TCHAR* str, TCHAR* strSearch)
 	data = mir_tstrdup(str);
 	if (data == NULL)
 		goto err_out;
-	if (_tcsstr(mod, L"i"))
+	if (wcsstr(mod, L"i"))
 		opts |= PCRE_CASELESS;
-	if (_tcsstr(mod, L"m"))
+	if (wcsstr(mod, L"m"))
 		opts |= PCRE_MULTILINE;
-	if (_tcsstr(mod, L"s"))
+	if (wcsstr(mod, L"s"))
 		opts |= PCRE_DOTALL;
 
 	re = pcre16_compile(regexp, opts, &error, &erroroffs, NULL);
@@ -154,14 +154,14 @@ err_out:
 	return ret;
 }
 
-int get_response_id(const TCHAR* strvar)
+int get_response_id(const wchar_t* strvar)
 {
 	int ret = 0;
 	pcre16 *re;
 	const char *error;
 	int erroroffs, rc;
-	TCHAR *_str, *_strvar;
-	TCHAR regex[] = L"^%response([#-_]([0-9]+))?%$";
+	wchar_t *_str, *_strvar;
+	wchar_t regex[] = L"^%response([#-_]([0-9]+))?%$";
 	int ovector[9];
 
 	if (strvar == NULL)
@@ -181,45 +181,45 @@ int get_response_id(const TCHAR* strvar)
 	} else if (rc == 3) {
 		_str = _strvar + ovector[4];
 		_str[ovector[5] - ovector[4]] = 0;
-		ret = _ttoi(_str);
+		ret = _wtoi(_str);
 	}
 	mir_free(_strvar);
 
 	return ret;
 }
 
-int get_response_num(const TCHAR *str)
+int get_response_num(const wchar_t *str)
 {
 	int i = 0;
-	TCHAR *tmp, *strc;
+	wchar_t *tmp, *strc;
 	
 	if (str == NULL)
 		return 0;
 	strc = mir_tstrdup(str);
 	if (strc == NULL)
 		return 0;
-	tmp = _tcstok(strc, L"\r\n");
+	tmp = wcstok(strc, L"\r\n");
 	while (tmp) {
 		i ++;
-		tmp = _tcstok(NULL, L"\r\n"); /* Move next. */
+		tmp = wcstok(NULL, L"\r\n"); /* Move next. */
 	}
 	mir_free(strc);
 
 	return i;
 }
 
-TCHAR* get_response(TCHAR* dst, unsigned int dstlen, int num)
+wchar_t* get_response(wchar_t* dst, unsigned int dstlen, int num)
 {
 	int i = 0;
-	TCHAR *tmp, *src;
+	wchar_t *tmp, *src;
 
 	if (dst == NULL || dstlen == 0 || num < 0)
 		return dst;
-	src = (TCHAR*)mir_alloc(MAX_BUFFER_LENGTH * sizeof(TCHAR));
+	src = (wchar_t*)mir_alloc(MAX_BUFFER_LENGTH * sizeof(wchar_t));
 	if (src == NULL)
 		goto err_out;
 	_getOptS(src, MAX_BUFFER_LENGTH, "Response", defaultResponse);
-	tmp = _tcstok(src, L"\r\n");
+	tmp = wcstok(src, L"\r\n");
 	while (tmp) {
 		if (i == num) {
 			mir_tstrcpy(dst, tmp);
@@ -227,7 +227,7 @@ TCHAR* get_response(TCHAR* dst, unsigned int dstlen, int num)
 			return dst;
 		}
 		i ++;
-		tmp = _tcstok(NULL, L"\r\n"); /* Move next. */
+		tmp = wcstok(NULL, L"\r\n"); /* Move next. */
 	}
 	mir_free(src);
 err_out:
@@ -235,12 +235,12 @@ err_out:
 	return dst;
 }
 
-TCHAR* _tcsstr_cc(TCHAR* str, TCHAR* strSearch, BOOL cc)
+wchar_t* _tcsstr_cc(wchar_t* str, wchar_t* strSearch, BOOL cc)
 {
-	TCHAR *ret = NULL, *_str = NULL, *_strSearch = NULL;
+	wchar_t *ret = NULL, *_str = NULL, *_strSearch = NULL;
 
 	if (cc)
-		return _tcsstr(str, strSearch);
+		return wcsstr(str, strSearch);
 
 	_str = mir_tstrdup(str);
 	if (_str == NULL)
@@ -248,7 +248,7 @@ TCHAR* _tcsstr_cc(TCHAR* str, TCHAR* strSearch, BOOL cc)
 	_strSearch = mir_tstrdup(strSearch);
 	if (_strSearch == NULL)
 		goto err_out;
-	ret = _tcsstr(_tcstolower(_str), _tcstolower(_strSearch));
+	ret = wcsstr(_tcstolower(_str), _tcstolower(_strSearch));
 	if (ret != NULL)
 		ret = ((ret - _str) + str);
 err_out:
@@ -258,10 +258,10 @@ err_out:
 	return ret;
 }
 
-BOOL Contains(TCHAR* dst, TCHAR* src) // Checks for occurence of substring from src in dst
+BOOL Contains(wchar_t* dst, wchar_t* src) // Checks for occurence of substring from src in dst
 {
 	BOOL ret = FALSE;
-	TCHAR *tsrc = NULL, *tdst = NULL, *token, *token_end;
+	wchar_t *tsrc = NULL, *tdst = NULL, *token, *token_end;
 	SIZE_T dst_len;
 
 	if (dst == NULL || src == NULL)
@@ -274,24 +274,24 @@ BOOL Contains(TCHAR* dst, TCHAR* src) // Checks for occurence of substring from
 		goto err_out;
 	tdst = _tcstoupper(tdst);
 	dst_len = mir_tstrlen(tdst);
-	token = _tcstok(tsrc, L",");
+	token = wcstok(tsrc, L",");
 	while (token) {
 		token_end = (token + mir_tstrlen(token));
-		while (!_tcsncmp(token, L" ", 1)) { /* Skeep spaces at start. */
+		while (!wcsncmp(token, L" ", 1)) { /* Skeep spaces at start. */
 			token ++;
 		}
 		/* Skeep spaces at end. */
-		while (token > token_end && _tcschr((token_end - 1), _T(' '))) {
+		while (token > token_end && wcschr((token_end - 1), ' ')) {
 			token_end --;
 			token_end[0] = 0;
 		}
 		/* Compare. */
 		if (dst_len == (token_end - token) &&
-		    0 == memcmp(tdst, _tcstoupper(token), (dst_len * sizeof(TCHAR)))) {
+		    0 == memcmp(tdst, _tcstoupper(token), (dst_len * sizeof(wchar_t)))) {
 			ret = TRUE;
 			break;		
 		}
-		token = _tcstok(NULL, L","); /* Move next. */
+		token = wcstok(NULL, L","); /* Move next. */
 	}
 err_out:
 	mir_free(tsrc);
@@ -321,9 +321,9 @@ BOOL isOneDay(DWORD timestamp1, DWORD timestamp2)
 	return FALSE;
 }
 
-TCHAR* ReplaceVar(TCHAR *dst, unsigned int len, const TCHAR *var, const TCHAR *rvar)
+wchar_t* ReplaceVar(wchar_t *dst, unsigned int len, const wchar_t *var, const wchar_t *rvar)
 {
-	TCHAR *var_start;
+	wchar_t *var_start;
 	SIZE_T dst_len, var_len, rvar_len;
 
 	if (dst == NULL || var == NULL || rvar == NULL)
@@ -331,39 +331,39 @@ TCHAR* ReplaceVar(TCHAR *dst, unsigned int len, const TCHAR *var, const TCHAR *r
 	dst_len = mir_tstrlen(dst);
 	var_len = mir_tstrlen(var);
 	rvar_len = mir_tstrlen(rvar);
-	var_start = _tcsstr(dst, var);
+	var_start = wcsstr(dst, var);
 	while (var_start) {
 		if (len < (dst_len + rvar_len - var_len + 1))
 			return NULL; /* Out of buf space. */
 		memmove((var_start + rvar_len),
 		    (var_start + var_len),
-		    (((dst + dst_len + 1) - (var_start + var_len)) * sizeof(TCHAR)));
+		    (((dst + dst_len + 1) - (var_start + var_len)) * sizeof(wchar_t)));
 		if (var_len >= rvar_len) { /* Buf data size not changed or decreased. */
 			dst_len -= (var_len - rvar_len);
 		} else { /* Buf data size increased. */
 			dst_len += (rvar_len - var_len);
 		}
-		memcpy(var_start, rvar, (rvar_len * sizeof(TCHAR)));
-		var_start = _tcsstr(dst, var); /* Move next. */
+		memcpy(var_start, rvar, (rvar_len * sizeof(wchar_t)));
+		var_start = wcsstr(dst, var); /* Move next. */
 	}
 
 	return dst;
 }
 
-TCHAR* ReplaceVars(TCHAR *dst, unsigned int len)
+wchar_t* ReplaceVars(wchar_t *dst, unsigned int len)
 {
 	return ReplaceVarsNum(dst, len, -1);
 }
 
-TCHAR* ReplaceVarsNum(TCHAR *dst, unsigned int len, int num)
+wchar_t* ReplaceVarsNum(wchar_t *dst, unsigned int len, int num)
 {
-	TCHAR response[MAX_BUFFER_LENGTH];
+	wchar_t response[MAX_BUFFER_LENGTH];
 	int ret, i;
 	pcre16 *re;
 	const char *error;
 	int erroroffs, rc;
-	TCHAR *_str, *tmp, **r = NULL, **tr, *ttmp, *dstcopy;
-	TCHAR regex[] = L"%response([#-_]([0-9]+))?%";
+	wchar_t *_str, *tmp, **r = NULL, **tr, *ttmp, *dstcopy;
+	wchar_t regex[] = L"%response([#-_]([0-9]+))?%";
 	int ovector[9];
 
 	re = pcre16_compile(regex, 0, &error, &erroroffs, NULL);
@@ -371,14 +371,14 @@ TCHAR* ReplaceVarsNum(TCHAR *dst, unsigned int len, int num)
 		return FALSE; // [TODO] and log some error
 	_getOptS(response, _countof(response), "Response", defaultResponse);	
 
-	ttmp = _tcstok(response, L"\r\n");
+	ttmp = wcstok(response, L"\r\n");
 	for (i = 0; ttmp != NULL; i ++) {
-		tr = (TCHAR**)mir_realloc(r, ((i + 1) * sizeof(TCHAR*)));
+		tr = (wchar_t**)mir_realloc(r, ((i + 1) * sizeof(wchar_t*)));
 		if (tr == NULL)
 			goto err_out;
 		r = tr;
 		r[i] = ttmp;
-		ttmp = _tcstok(NULL, L"\r\n"); /* Move next. */
+		ttmp = wcstok(NULL, L"\r\n"); /* Move next. */
 	}
 
 	do {
@@ -397,7 +397,7 @@ TCHAR* ReplaceVarsNum(TCHAR *dst, unsigned int len, int num)
 			ttmp[ovector[1] - ovector[0]] = 0;
 			tmp = _str + ovector[4];
 			tmp[ovector[5] - ovector[4]] = 0;
-			ret = _ttoi(tmp);
+			ret = _wtoi(tmp);
 		} else {
 			ttmp = dstcopy + ovector[0];
 			ttmp[ovector[1] - ovector[0]] = 0;
@@ -423,10 +423,10 @@ err_out:
 	return dst;
 } 
 
-int _notify(MCONTACT hContact, BYTE type, TCHAR *message, TCHAR *origmessage)
+int _notify(MCONTACT hContact, BYTE type, wchar_t *message, wchar_t *origmessage)
 {
 	char *tmp, *tmporig;
-	TCHAR msg[MAX_BUFFER_LENGTH];
+	wchar_t msg[MAX_BUFFER_LENGTH];
 	mir_sntprintf(msg, message, pcli->pfnGetContactDisplayName(hContact, 0));
 
 	if (_getOptB("LogActions", defaultLogActions)) {
-- 
cgit v1.2.3