From cb844f4914564d0027a836bb089f0c34819de2c2 Mon Sep 17 00:00:00 2001 From: sje Date: Tue, 31 Jul 2007 03:02:51 +0000 Subject: add beta changelog url link to svn log add support for utf use yapp header git-svn-id: https://server.scottellis.com.au/svn/mim_plugs@314 4f64403b-2f21-0410-a795-97e2b3489a10 --- nohtml/filter.cpp | 49 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 47 insertions(+), 2 deletions(-) (limited to 'nohtml/filter.cpp') diff --git a/nohtml/filter.cpp b/nohtml/filter.cpp index 4fd57cd..4e7839c 100644 --- a/nohtml/filter.cpp +++ b/nohtml/filter.cpp @@ -30,7 +30,24 @@ int FilterSendMessage(WPARAM wParam, LPARAM lParam) { if((options.apply_to & ATF_ALL) || ((options.apply_to & ATF_OTR) && ContactIsOTREncrypted(ccs->hContact))) { - if(ccs->wParam & PREF_UNICODE) { + if(ccs->wParam & PREF_UTF) { + int size = MultiByteToWideChar(CP_UTF8, 0, old_message, -1, 0, 0); + wchar_t *messagew = (wchar_t *)malloc(size * sizeof(wchar_t)); + MultiByteToWideChar(CP_UTF8, 0, old_message, -1, messagew, size); + wchar_t* smsg=strip_carrots(messagew); + wchar_t* html_msg; + if(options.html) { + html_msg=bbcodes_to_html(smsg); + delete[] smsg; + } else + html_msg = smsg; + + free(messagew); + size = WideCharToMultiByte(CP_UTF8, 0, html_msg, -1, 0, 0, 0, 0); + buf = (char *)malloc(size); + WideCharToMultiByte(CP_UTF8, 0, html_msg, -1, buf, size, 0, 0); + delete[] html_msg; + } else if(ccs->wParam & PREF_UNICODE) { wchar_t *messagew = (wchar_t *)&old_message[strlen(old_message)+1]; wchar_t* smsg=strip_carrots(messagew); wchar_t* html_msg; @@ -83,7 +100,35 @@ int FilterRecvMessage(WPARAM wParam, LPARAM lParam) { if((options.apply_to & ATF_ALL) || ((options.apply_to & ATF_OTR) && ContactIsOTREncrypted(ccs->hContact))) { - if(pre->flags & PREF_UNICODE) { + if(pre->flags & PREF_UTF) { + LOG("Recieved a utf8 message."); + int size = MultiByteToWideChar(CP_UTF8, 0, old_message, -1, 0, 0); + wchar_t *messagew = (wchar_t *)malloc(size * sizeof(wchar_t)); + MultiByteToWideChar(CP_UTF8, 0, old_message, -1, messagew, size); + + LOGW(messagew); + wchar_t* st_wbuf; + if(options.bbcodes) + { + LOG("Converting from html to bbcodes then stripping leftover html.(U)"); + wchar_t* bbuf=html_to_bbcodes(messagew); + st_wbuf=strip_html(bbuf); + delete[] bbuf; + } + else + { + LOG("Stripping html.(U)"); + st_wbuf=strip_html(messagew); + } + free(messagew); + + //delete[] pre->szMessage; not necessary - done in server.cpp + buf=(char *)malloc(wcslen(st_wbuf)*3+3); + WideCharToMultiByte( CP_ACP, 0,st_wbuf, -1,buf,wcslen(st_wbuf)+1, NULL, NULL); + memcpy(&buf[strlen(buf)+1],st_wbuf,lstrlen(buf)*2+2); + delete[] st_wbuf; + pre->szMessage = buf; + } else if(pre->flags & PREF_UNICODE) { LOG("Recieved a unicode message."); wchar_t *messagew = (wchar_t *)&old_message[strlen(old_message)+1]; //wchar_t* wbuf=(wchar_t*)&pre->szMessage[lstrlen(pre->szMessage)+1]; -- cgit v1.2.3