summaryrefslogtreecommitdiff
path: root/protocols/AimOscar/src/conv.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/AimOscar/src/conv.cpp')
-rw-r--r--protocols/AimOscar/src/conv.cpp758
1 files changed, 0 insertions, 758 deletions
diff --git a/protocols/AimOscar/src/conv.cpp b/protocols/AimOscar/src/conv.cpp
deleted file mode 100644
index cca0c668ac..0000000000
--- a/protocols/AimOscar/src/conv.cpp
+++ /dev/null
@@ -1,758 +0,0 @@
-/*
-Plugin of Miranda IM for communicating with users of the AIM protocol.
-Copyright (c) 2008-2012 Boris Krasnovskiy
-Copyright (C) 2005-2006 Aaron Myles Landwehr
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "stdafx.h"
-
-#pragma warning( disable: 4706 )
-
-char* process_status_msg(const char *str, const char* sn)
-{
- const char *src = str;
- size_t size = mir_strlen(src) + 1;
- char* res = (char*)mir_alloc(size);
- char* dest = res;
- size_t len = mir_strlen(sn);
-
- for (; *src; ++src) {
- if (src[0] == '\n' && (src == str || src[-1] != '\r')) {
- int off = dest - res;
- res = (char*)mir_realloc(res, ++size);
- dest = res + off;
- *(dest++) = '\r';
- *(dest++) = *src;
- }
- else if (src[0] == '%' && src[1] == 'n') {
- int off = dest - res;
- res = (char*)mir_realloc(res, size + len);
- dest = res + off;
- size += len;
- memcpy(dest, sn, len);
- dest += len;
- ++src;
- }
- else if (src[0] == '%' && src[1] == 'd') {
- int off = dest - res;
- res = (char*)mir_realloc(res, size + 20);
- dest = res + off;
- size += 20;
- dest += GetDateFormatA(LOCALE_USER_DEFAULT, 0, nullptr, nullptr, dest, 20) - 1;
- ++src;
- }
- else if (src[0] == '%' && src[1] == 't') {
- int off = dest - res;
- res = (char*)mir_realloc(res, size + 20);
- dest = res + off;
- size += 20;
- dest += GetTimeFormatA(LOCALE_USER_DEFAULT, 0, nullptr, nullptr, dest, 20) - 1;
- ++src;
- }
- else *(dest++) = *src;
- }
- *dest = '\0';
- return res;
-}
-
-
-void html_decode(char* str)
-{
- char *p, *q;
-
- if (str == nullptr) return;
-
- for (p = q = str; *p != '\0'; p++, q++) {
- if (*p == '&') {
- if (!strnicmp(p, "&amp;", 5)) { *q = '&'; p += 4; }
- else if (!strnicmp(p, "&apos;", 6)) { *q = '\''; p += 5; }
- else if (!strnicmp(p, "&gt;", 4)) { *q = '>'; p += 3; }
- else if (!strnicmp(p, "&lt;", 4)) { *q = '<'; p += 3; }
- else if (!strnicmp(p, "&quot;", 6)) { *q = '"'; p += 5; }
- else if (*(p + 1) == '#') {
- char *s = strchr(p, ';');
- if (s) {
- wchar_t t[2] = { (wchar_t)atoi(p + 2), 0 };
- char *t1 = mir_utf8encodeW(t);
- if (t1 && *t1) {
- mir_strcpy(q, t1);
- q += mir_strlen(t1) - 1;
- }
- mir_free(t1);
- p = s;
- }
- else
- *q = *p;
- }
- else { *q = *p; }
- }
- else if (*p == '<') {
- if (!strnicmp(p, "<p>", 3)) { mir_strcpy(q, "\r\n\r\n"); q += 3; p += 2; }
- else if (!strnicmp(p, "</p>", 4)) { mir_strcpy(q, "\r\n\r\n"); q += 3; p += 3; }
- else if (!strnicmp(p, "<br>", 4)) { mir_strcpy(q, "\r\n"); ++q; p += 3; }
- else if (!strnicmp(p, "<br />", 6)) { mir_strcpy(q, "\r\n"); ++q; p += 5; }
- else if (!strnicmp(p, "<hr>", 4)) { mir_strcpy(q, "\r\n"); ++q; p += 3; }
- else if (!strnicmp(p, "<hr />", 6)) { mir_strcpy(q, "\r\n"); ++q; p += 5; }
- else {
- char *l = strchr(p, '>');
- if (l) { p = l; --q; }
- else *q = *p;
- }
- }
- else *q = *p;
- }
- *q = '\0';
-}
-
-
-char* html_encode(const char* str)
-{
- char *s, *q;
- const char *p;
- int c;
-
- if (str == nullptr) return nullptr;
-
- for (c = 0, p = str; *p != '\0'; p++) {
- switch (*p) {
- case '&': c += 5; break;
- case '\'': c += 6; break;
- case '>': c += 4; break;
- case '<': c += 4; break;
- case '"': c += 6; break;
- case '\n': c += 4; break;
- default: c++; break;
- }
- }
-
- s = (char*)mir_alloc(c + 27);
- mir_strcpy(s, "<HTML><BODY>");
- for (p = str, q = s + 12; *p != '\0'; p++) {
- switch (*p) {
- case '&': memcpy(q, "&amp;", 5); q += 5; break;
- case '>': memcpy(q, "&gt;", 4); q += 4; break;
- case '<': memcpy(q, "&lt;", 4); q += 4; break;
- case '"': memcpy(q, "&quot;", 6); q += 6; break;
- case '\r': break;
- case '\n': memcpy(q, "<BR>", 4); q += 4; break;
- default: *q = *p; ++q; break;
- }
- }
- mir_strcpy(q, "</BODY></HTML>");
-
- return s;
-}
-
-char* html_to_bbcodes(char *src)
-{
- char *ptr;
- char *ptrl;
- char *rptr;
- char* dest = mir_strdup(src);
- while ((ptr = strstr(dest, "<B>")) != nullptr || (ptr = strstr(dest, "<b>")) != nullptr) {
- *ptr = '[';
- *(ptr + 1) = 'b';
- *(ptr + 2) = ']';
- if ((ptr = strstr(dest, "</B>")) != nullptr || (ptr = strstr(dest, "</b>")) != nullptr) {
- *ptr = '[';
- *(ptr + 2) = 'b';
- *(ptr + 3) = ']';
- }
- else {
- dest = (char*)mir_realloc(dest, mir_strlen(dest) + 6);
- memcpy(&dest[mir_strlen(dest)], "[/b]", 5);
- }
- }
- while ((ptr = strstr(dest, "<I>")) != nullptr || (ptr = strstr(dest, "<i>")) != nullptr) {
- *ptr = '[';
- *(ptr + 1) = 'i';
- *(ptr + 2) = ']';
- if ((ptr = strstr(dest, "</I>")) != nullptr || (ptr = strstr(dest, "</i>")) != nullptr) {
- *ptr = '[';
- *(ptr + 2) = 'i';
- *(ptr + 3) = ']';
- }
- else {
- dest = (char*)mir_realloc(dest, mir_strlen(dest) + 6);
- memcpy(&dest[mir_strlen(dest)], "[/i]", 5);
- }
- }
- while ((ptr = strstr(dest, "<U>")) != nullptr || (ptr = strstr(dest, "<u>")) != nullptr) {
- *ptr = '[';
- *(ptr + 1) = 'u';
- *(ptr + 2) = ']';
- if ((ptr = strstr(dest, "</U>")) != nullptr || (ptr = strstr(dest, "</u>")) != nullptr) {
- *ptr = '[';
- *(ptr + 2) = 'u';
- *(ptr + 3) = ']';
- }
- else {
- dest = (char*)mir_realloc(dest, mir_strlen(dest) + 6);
- memcpy(&dest[mir_strlen(dest)], "[/u]", 5);
- }
- }
- while ((ptr = strstr(dest, "<S>")) != nullptr || (ptr = strstr(dest, "<s>")) != nullptr) {
- *ptr = '[';
- *(ptr + 1) = 's';
- *(ptr + 2) = ']';
- if ((ptr = strstr(dest, "</S>")) != nullptr || (ptr = strstr(dest, "</s>")) != nullptr) {
- *ptr = '[';
- *(ptr + 2) = 's';
- *(ptr + 3) = ']';
- }
- else {
- dest = (char*)mir_realloc(dest, mir_strlen(dest) + 6);
- memcpy(&dest[mir_strlen(dest)], "[/s]", 5);
- }
- }
- rptr = dest;
- while (ptr = strstr(rptr, "<A HREF")) {
- char* begin = ptr;
- ptrl = ptr + 4;
- memcpy(ptrl, "[url=", 5);
- memmove(ptr, ptrl, mir_strlen(ptrl) + 1);
- if ((ptr = strstr(ptrl, ">"))) {
- ptr -= 1;
- memmove(ptr, ptr + 1, mir_strlen(ptr + 1) + 1);
- *(ptr) = ']';
- ptrl -= 1;
- char* s1 = strstr(ptrl, "</A");
- char* s2 = strstr(rptr, "<A HREF");
- if (s1&&s1 < s2 || s1&&!s2) {
- ptr = s1;
- ptr = strip_tag_within(begin, ptr);
- memmove(ptr + 2, ptr, mir_strlen(ptr) + 1);
- memcpy(ptr, "[/url]", 6);
- }
- else if (s2&&s2 < s1 || s2&&!s1) {
- ptr = s2;
- ptr = strip_tag_within(begin, ptr);
- int addr = ptr - rptr;
- dest = (char*)mir_realloc(dest, mir_strlen(dest) + 8);
- rptr = dest;
- ptr = rptr + addr;
- memmove(ptr + 6, ptr, mir_strlen(ptr) + 1);
- memcpy(ptr, "[/url]", 6);
- }
- else {
- strip_tag_within(begin, &dest[mir_strlen(dest)]);
- //int addr=ptr-rptr;
- dest = (char*)mir_realloc(dest, mir_strlen(dest) + 8);
- rptr = dest;
- ptr = dest;
- memcpy(&ptr[mir_strlen(ptr)], "[/url]", 7);
- }
- }
- else rptr++;
- }
- rptr = dest;
- while (ptr = strstr(rptr, "<a href")) {
- char* begin = ptr;
- ptrl = ptr + 4;
- memcpy(ptrl, "[url=", 5);
- memmove(ptr, ptrl, mir_strlen(ptrl) + 1);
- if ((ptr = strstr(ptrl, ">"))) {
- ptr -= 1;
- memmove(ptr, ptr + 1, mir_strlen(ptr + 1) + 1);
- *(ptr) = ']';
- ptrl -= 1;
- char* s1 = strstr(ptrl, "</a");
- char* s2 = strstr(ptrl, "<a href");
- if (s1&&s1 < s2 || s1&&!s2) {
- ptr = s1;
- ptr = strip_tag_within(begin, ptr);
- memmove(ptr + 2, ptr, mir_strlen(ptr) + 1);
- memcpy(ptr, "[/url]", 6);
- }
- else if (s2&&s2 < s1 || s2&&!s1) {
- ptr = s2;
- ptr = strip_tag_within(begin, ptr);
- int addr = ptr - rptr;
- dest = (char*)mir_realloc(dest, mir_strlen(dest) + 8);
- rptr = dest;
- ptr = rptr + addr;
- memmove(ptr + 6, ptr, mir_strlen(ptr) + 1);
- memcpy(ptr, "[/url]", 6);
- }
- else {
- strip_tag_within(begin, &dest[mir_strlen(dest)]);
- //int addr=ptr-rptr;
- dest = (char*)mir_realloc(dest, mir_strlen(dest) + 8);
- rptr = dest;
- ptr = dest;
- memcpy(&ptr[mir_strlen(ptr)], "[/url]", 7);
- }
- }
- else rptr++;
- }
- rptr = dest;
- while (ptr = strstr(rptr, "<FONT COLOR=\"")) {
- int addr = ptr - rptr;
- dest = (char*)mir_realloc(dest, mir_strlen(dest) + 8);
- rptr = dest;
- ptr = rptr + addr;
- ptrl = ptr + 6;
- memcpy(ptrl, "[color=", 7);
- memmove(ptr, ptrl, mir_strlen(ptrl) + 1);
- if ((ptr = strstr(ptrl, ">"))) {
- memmove(ptrl + 7, ptr, mir_strlen(ptr) + 1);
- *(ptrl + 7) = ']';
- ptr = ptrl + 7;
- char* s1 = strstr(ptr, "</FONT");
- char* s2 = strstr(ptr, "<FONT COLOR=\"");
- if (s1&&s1 < s2 || s1&&!s2) {
- ptr = s1;
- memmove(ptr + 1, ptr, mir_strlen(ptr) + 1);
- memcpy(ptr, "[/color]", 8);
- }
- else if (s2&&s2 < s1 || s2&&!s1) {
- ptr = s2;
- memmove(ptr + 8, ptr, mir_strlen(ptr) + 1);
- memcpy(ptr, "[/color]", 8);
- }
- else {
- ptr = dest;
- memcpy(&ptr[mir_strlen(ptr)], "[/color]", 9);
- }
- }
- else rptr++;
- }
- rptr = dest;
- while (ptr = strstr(rptr, "<font color=\"")) {
- int addr = ptr - rptr;
- dest = (char*)mir_realloc(dest, mir_strlen(dest) + 8);
- rptr = dest;
- ptr = rptr + addr;
- ptrl = ptr + 6;
- memcpy(ptrl, "[color=", 7);
- memmove(ptr, ptrl, mir_strlen(ptrl) + 1);
- if ((ptr = strstr(ptrl, ">"))) {
- memmove(ptrl + 7, ptr, mir_strlen(ptr) + 1);
- *(ptrl + 7) = ']';
- ptr = ptrl + 7;
- char* s1 = strstr(ptr, "</font");
- char* s2 = strstr(ptr, "<font color=\"");
- if (s1&&s1 < s2 || s1&&!s2) {
- ptr = s1;
- memmove(ptr + 1, ptr, mir_strlen(ptr) + 1);
- memcpy(ptr, "[/color]", 8);
- }
- else if (s2&&s2 < s1 || s2&&!s1) {
- ptr = s2;
- memmove(ptr + 8, ptr, mir_strlen(ptr) + 1);
- memcpy(ptr, "[/color]", 8);
- }
- else {
- ptr = dest;
- memcpy(&ptr[mir_strlen(ptr)], "[/color]", 9);
- }
- }
- else rptr++;
- }
- rptr = dest;
- while ((ptr = strstr(rptr, "<FONT COLOR=")) || (ptr = strstr(rptr, "<font color="))) {
- int addr = ptr - rptr;
- dest = (char*)mir_realloc(dest, mir_strlen(dest) + 8);
- rptr = dest;
- ptr = rptr + addr;
- ptrl = ptr + 5;
- memcpy(ptrl, "[color=", 7);
- memmove(ptr, ptrl, mir_strlen(ptrl) + 1);
- if ((ptr = strstr(ptrl, ">"))) {
- *(ptr) = ']';
- if ((ptrl = strstr(ptr, "</FONT")) || (ptrl = strstr(ptr, "</font"))) {
- memmove(ptrl + 1, ptrl, mir_strlen(ptrl) + 1);
- memcpy(ptrl, "[/color]", 8);
- }
- else memcpy(&dest[mir_strlen(dest)], "[/color]", 9);
- }
- else rptr++;
- }
-
- return dest;
-}
-
-char* bbcodes_to_html(const char *src)
-{
- char *ptr;
- char *rptr;
- char* dest = mir_strdup(src);
- while ((ptr = strstr(dest, "[b]")) != nullptr) {
- *ptr = '<';
- *(ptr + 1) = 'b';
- *(ptr + 2) = '>';
- }
- while ((ptr = strstr(dest, "[/b]")) != nullptr) {
- *ptr = '<';
- *(ptr + 2) = 'b';
- *(ptr + 3) = '>';
- }
- while ((ptr = strstr(dest, "[i]")) != nullptr) {
- *ptr = '<';
- *(ptr + 1) = 'i';
- *(ptr + 2) = '>';
- }
- while ((ptr = strstr(dest, "[/i]")) != nullptr) {
- *ptr = '<';
- *(ptr + 2) = 'i';
- *(ptr + 3) = '>';
- }
- while ((ptr = strstr(dest, "[u]")) != nullptr) {
- *ptr = '<';
- *(ptr + 1) = 'u';
- *(ptr + 2) = '>';
- }
- while ((ptr = strstr(dest, "[/u]")) != nullptr) {
- *ptr = '<';
- *(ptr + 2) = 'u';
- *(ptr + 3) = '>';
- }
- while ((ptr = strstr(dest, "[s]")) != nullptr) {
- *ptr = '<';
- *(ptr + 1) = 's';
- *(ptr + 2) = '>';
- }
- while ((ptr = strstr(dest, "[/s]")) != nullptr) {
- *ptr = '<';
- *(ptr + 2) = 's';
- *(ptr + 3) = '>';
- }
- rptr = dest;
- while ((ptr = strstr(rptr, "[color="))) {
- int addr = ptr - rptr;
- dest = (char*)mir_realloc(dest, mir_strlen(dest) + 8);
- rptr = dest;
- ptr = rptr + addr;
- memmove(ptr + 5, ptr, mir_strlen(ptr) + 1);
- memcpy(ptr, "<font ", 6);
- if ((ptr = strstr(ptr, "]"))) {
- *(ptr) = '>';
- if ((ptr = strstr(ptr, "[/color]"))) {
- memcpy(ptr, "</font>", 7);
- memmove(ptr + 7, ptr + 8, mir_strlen(ptr + 8) + 1);
- }
- }
- else
- rptr++;
- }
- while ((ptr = strstr(rptr, "[url="))) {
- int addr = ptr - rptr;
- dest = (char*)mir_realloc(dest, mir_strlen(dest) + 8);
- rptr = dest;
- ptr = rptr + addr;
- memmove(ptr + 3, ptr, mir_strlen(ptr) + 1);
- memcpy(ptr, "<a href", 7);
- if ((ptr = strstr(ptr, "]"))) {
- *(ptr) = '>';
- if ((ptr = strstr(ptr, "[/url]"))) {
- memcpy(ptr, "</a>", 4);
- memmove(ptr + 4, ptr + 6, mir_strlen(ptr + 6) + 1);
- }
- }
- else
- rptr++;
- }
- return dest;
-}
-
-void strip_tag(char* begin, char* end)
-{
- memmove(begin, end + 1, mir_strlen(end + 1) + 1);
-}
-
-//strip a tag within a string
-char* strip_tag_within(char* begin, char* end)
-{
- while (char *sub_begin = strchr(begin, '<')) {
- if (sub_begin < end)//less than the original ending
- {
- char *sub_end = strchr(begin, '>');
- strip_tag(sub_begin, sub_end);
- end = end - (sub_end - sub_begin) - 1;
- }
- else
- break;
- }
- return end;
-}
-
-char* rtf_to_html(HWND hwndDlg, int DlgItem)
-{
- char* buf = (char*)mir_alloc(4024);
- size_t pos = 0;
- int start = 0;
- int end = 1;
- BOOL Bold = false;
- BOOL Italic = false;
- BOOL Underline = false;
- char Face[32] = "";
- COLORREF Color = 0;
- COLORREF BackColor = 0;
- int Size = 0;
- GETTEXTLENGTHEX tl;
- tl.flags = GTL_DEFAULT;
- tl.codepage = CP_ACP;
-
- int oldstart = 0, oldend = 0;
- SendDlgItemMessage(hwndDlg, DlgItem, EM_GETSEL, (WPARAM)&oldstart, (LPARAM)&oldend);
-
- int length = SendDlgItemMessage(hwndDlg, DlgItem, EM_GETTEXTLENGTHEX, (WPARAM)&tl, 0);
- while (start < length) {
- SendDlgItemMessage(hwndDlg, DlgItem, EM_SETSEL, start, end);
- CHARFORMAT2A cfOld;
- cfOld.cbSize = sizeof(cfOld);
- cfOld.dwMask = CFM_BOLD | CFM_ITALIC | CFM_UNDERLINE | CFM_SIZE | CFM_COLOR | CFM_BACKCOLOR | CFM_FACE;
- SendDlgItemMessageA(hwndDlg, DlgItem, EM_GETCHARFORMAT, SCF_SELECTION, (LPARAM)&cfOld);
- BOOL isBold = (cfOld.dwEffects & CFE_BOLD) && (cfOld.dwMask & CFM_BOLD);
- BOOL isItalic = (cfOld.dwEffects & CFE_ITALIC) && (cfOld.dwMask & CFM_ITALIC);
- BOOL isUnderline = (cfOld.dwEffects & CFE_UNDERLINE) && (cfOld.dwMask & CFM_UNDERLINE);
- COLORREF isColor = cfOld.crTextColor;
- COLORREF isBackColor = cfOld.crBackColor;
- int isSize;
- if (cfOld.yHeight == 38 * 20)
- isSize = 7;
- else if (cfOld.yHeight == 24 * 20)
- isSize = 6;
- else if (cfOld.yHeight == 18 * 20)
- isSize = 5;
- else if (cfOld.yHeight == 14 * 20)
- isSize = 4;
- else if (cfOld.yHeight == 12 * 20)
- isSize = 3;
- else if (cfOld.yHeight == 10 * 20)
- isSize = 2;
- else if (cfOld.yHeight == 8 * 20)
- isSize = 1;
- else
- isSize = 3;
- wchar_t text[3] = L"";
- SendDlgItemMessage(hwndDlg, DlgItem, EM_GETSELTEXT, 0, (LPARAM)&text);
- if (Bold != isBold) {
- Bold = isBold;
- if (isBold) {
- mir_strcpy(&buf[pos], "<b>");
- pos += 3;
- }
- else {
- if (start != 0) {
- mir_strcpy(&buf[pos], "</b>");
- pos += 4;
- }
- }
- }
- if (Italic != isItalic) {
- Italic = isItalic;
- if (isItalic) {
- mir_strcpy(&buf[pos], "<i>");
- pos += 3;
- }
- else {
- if (start != 0) {
- mir_strcpy(&buf[pos], "</i>");
- pos += 4;
- }
- }
- }
- if (Underline != isUnderline) {
- Underline = isUnderline;
- if (isUnderline) {
- mir_strcpy(&buf[pos], "<u>");
- pos += 3;
- }
- else {
- if (start != 0) {
- mir_strcpy(&buf[pos], "</u>");
- pos += 4;
- }
- }
- }
- if (Size != isSize || Color != isColor || BackColor != isBackColor || mir_strcmp(Face, cfOld.szFaceName)) {
- Size = isSize;
- Color = isColor;
- BackColor = isBackColor;
- mir_strcpy(Face, cfOld.szFaceName);
- if (start != 0) {
- mir_strcpy(&buf[pos], "</font>");
- pos += 7;
- }
- mir_strcpy(&buf[pos], "<font");
- pos += 5;
- mir_strcpy(&buf[pos], " face=\"");
- pos += 7;
- mir_strcpy(&buf[pos], Face);
- pos += mir_strlen(Face);
- mir_strcpy(&buf[pos], "\"");
- pos++;
- if (!(cfOld.dwEffects & CFE_AUTOBACKCOLOR)) {
- mir_strcpy(&buf[pos], " back=#");
- pos += 6;
- char chBackColor[7];
- _itoa((_htonl(BackColor) >> 8), chBackColor, 16);
- size_t len = mir_strlen(chBackColor);
- if (len < 6) {
- memmove(chBackColor + (6 - len), chBackColor, len + 1);
- for (int i = 0; i < 6; i++)
- chBackColor[i] = '0';
- }
- mir_strcpy(&buf[pos], chBackColor);
- pos += 6;
- }
- if (!(cfOld.dwEffects & CFE_AUTOCOLOR)) {
- mir_strcpy(&buf[pos], " color=#");
- pos += 8;
- char chColor[7];
- _itoa((_htonl(Color) >> 8), chColor, 16);
- size_t len = mir_strlen(chColor);
- if (len < 6) {
- memmove(chColor + (6 - len), chColor, len + 1);
- for (int i = 0; i < 6; i++)
- chColor[i] = '0';
- }
- mir_strcpy(&buf[pos], chColor);
- pos += 6;
- }
- mir_strcpy(&buf[pos], " size=");
- pos += 6;
- char chSize[2];
- _itoa(Size, chSize, 10);
- mir_strcpy(&buf[pos], chSize);
- pos++;
-
- mir_strcpy(&buf[pos], ">");
- pos++;
- }
- if (text[0] == '\r') {
- mir_strcpy(&buf[pos], "<br>");
- pos += 4;
- }
- else {
- T2Utf txt(text);
- mir_strcpy(&buf[pos], txt);
- pos += mir_strlen(txt);
- }
- start++;
- end++;
- }
- if (Bold) {
- mir_strcpy(&buf[pos], "</b>");
- pos += 4;
- }
- if (Italic) {
- mir_strcpy(&buf[pos], "</i>");
- pos += 4;
- }
- if (Underline) {
- mir_strcpy(&buf[pos], "</u>");
- pos += 4;
- }
- mir_strcpy(&buf[pos], "</font>");
- pos += 7;
-
- SendDlgItemMessage(hwndDlg, DlgItem, EM_SETSEL, oldstart, oldend);
-
- return buf;
-}
-
-void wcs_htons(wchar_t *ch)
-{
- if (ch == nullptr) return;
- for (size_t i = 0; i < mir_wstrlen(ch); i++)
- ch[i] = _htons(ch[i]);
-}
-
-char* bytes_to_string(char *bytes, int num_bytes)
-{
- if (num_bytes == 0) return nullptr;
-
- char *string = (char*)mir_alloc(num_bytes * 2 + 1);
- for (int i = 0; i < num_bytes; i++) {
- char store[2];
- unsigned char bit = (bytes[i] & 0xF0) >> 4;
- _itoa(bit, store, 16);
- memcpy(&string[i * 2], store, 1);
- bit = (bytes[i] & 0x0F);
- _itoa(bit, store, 16);
- memcpy(&string[i * 2 + 1], store, 1);
- }
- string[num_bytes * 2] = '\0';
- return string;
-}
-
-void string_to_bytes(char *string, char *bytes)
-{
- char sbyte[3];
- sbyte[2] = '\0';
- size_t length = mir_strlen(string);
- for (size_t i = 0; i < length; i += 2) {
- sbyte[0] = string[i];
- sbyte[1] = string[i + 1];
- bytes[i / 2] = (char)strtol(sbyte, nullptr, 16);
- }
-}
-
-bool is_utf(const char *msg)
-{
- bool res = false;
- if (msg) {
- for (unsigned i = 0; !res; ++i) {
- char c = msg[i];
- if (c == 0) break;
- res = (c & 0x80) != 0;
- }
- }
- return res;
-}
-
-char* get_fname(char *path)
-{
- char *pszFile = strrchr(path, '\\');
- if (pszFile) pszFile++; else pszFile = path;
-
- return pszFile;
-}
-
-wchar_t* get_dir(wchar_t *path)
-{
- wchar_t *cpath = mir_wstrdup(path);
-
- wchar_t *swd = wcsrchr(cpath, '\\');
- if (swd) swd[1] = 0; else cpath[0] = 0;
-
- return cpath;
-}
-
-aimString::aimString(char *str)
-{
- if (str == nullptr) {
- szString = nullptr;
- size = 0;
- unicode = false;
- }
- else {
- unicode = is_utf(str);
- if (unicode) {
- wszString = mir_utf8decodeW(str);
- wcs_htons(wszString);
- size = mir_wstrlen(wszString) * sizeof(wchar_t);
- }
- else {
- szString = mir_utf8decodeA(str);
- size = mir_strlen(szString);
- }
- }
-}
-
-#pragma warning( default: 4706 )