diff options
author | sje <sje@4f64403b-2f21-0410-a795-97e2b3489a10> | 2007-04-25 16:03:43 +0000 |
---|---|---|
committer | sje <sje@4f64403b-2f21-0410-a795-97e2b3489a10> | 2007-04-25 16:03:43 +0000 |
commit | cb5549f19be3c65c2228906c20ba95c82dd5b947 (patch) | |
tree | 0fd35060a9ca53217f8673fd5ead1ed22ca8db07 /nohtml/filter.cpp | |
parent | 51f6d8192d7deb99925fda250085cf3f7c42f34e (diff) |
change project name
added option to convert outgoing bbcodes to html
git-svn-id: https://server.scottellis.com.au/svn/mim_plugs@147 4f64403b-2f21-0410-a795-97e2b3489a10
Diffstat (limited to 'nohtml/filter.cpp')
-rw-r--r-- | nohtml/filter.cpp | 34 |
1 files changed, 27 insertions, 7 deletions
diff --git a/nohtml/filter.cpp b/nohtml/filter.cpp index 4d3ed77..11229cd 100644 --- a/nohtml/filter.cpp +++ b/nohtml/filter.cpp @@ -5,15 +5,34 @@ int FilterSendMessage(WPARAM wParam, LPARAM lParam) {
CCSDATA *ccs = (CCSDATA *) lParam;
- char *message = (char *)ccs->lParam;
-
- // TODO: process 'message' and/or 'messagew' below
- if(ccs->wParam & PREF_UNICODE) {
- wchar_t *messagew = (wchar_t *)&message[strlen(message)+1];
- } else {
+ char *old_message = (char *)ccs->lParam;
+
+ char *buf = 0;
+ if(options.html) {
+ 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=bbcodes_to_html(smsg);
+ delete[] smsg;
+
+ buf=(char *)malloc(wcslen(html_msg)*3+3);
+ WideCharToMultiByte( CP_ACP, 0,html_msg, -1,buf,wcslen(html_msg)+1, NULL, NULL);
+ memcpy(&buf[strlen(buf)+1],html_msg,lstrlen(buf)*2+2);
+ delete[] html_msg;
+ } else {
+ char* smsg=strip_carrots(old_message);
+ char* html_msg=bbcodes_to_html(smsg);
+ delete[] smsg;
+ buf = strdup(html_msg);
+ delete[] html_msg;
+ }
+ ccs->lParam = (LPARAM)buf;
}
- return CallService(MS_PROTO_CHAINSEND, wParam, lParam);
+ int ret = CallService(MS_PROTO_CHAINSEND, wParam, lParam);
+ ccs->lParam = (LPARAM)old_message;
+ if(buf) free(buf);
+ return ret;
}
int FilterSendMessageW(WPARAM wParam, LPARAM lParam) {
@@ -72,6 +91,7 @@ int FilterRecvMessage(WPARAM wParam, LPARAM lParam) { int ret = CallService(MS_PROTO_CHAINRECV, wParam, lParam);
pre->szMessage = old_message;
+ if(buf) free(buf);
return ret;
}
|