diff options
author | sje <sje@4f64403b-2f21-0410-a795-97e2b3489a10> | 2007-07-31 03:02:51 +0000 |
---|---|---|
committer | sje <sje@4f64403b-2f21-0410-a795-97e2b3489a10> | 2007-07-31 03:02:51 +0000 |
commit | cb844f4914564d0027a836bb089f0c34819de2c2 (patch) | |
tree | 75048b5c740efe8627ce13eb1afc182aaf610bd3 /nohtml/filter.cpp | |
parent | 4d932ed5aae303c8f01983aced9280aa1c1f563b (diff) |
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
Diffstat (limited to 'nohtml/filter.cpp')
-rw-r--r-- | nohtml/filter.cpp | 49 |
1 files changed, 47 insertions, 2 deletions
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];
|