summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/YARelay/src/main.cpp28
-rw-r--r--utils/mir_buffer.h431
2 files changed, 13 insertions, 446 deletions
diff --git a/plugins/YARelay/src/main.cpp b/plugins/YARelay/src/main.cpp
index f2099a12b5..92617028c8 100644
--- a/plugins/YARelay/src/main.cpp
+++ b/plugins/YARelay/src/main.cpp
@@ -19,8 +19,6 @@ Features:
#include "stdafx.h"
-#include "../../utils/mir_buffer.h"
-
CMPlugin g_plugin;
MCONTACT hForwardFrom, hForwardTo;
@@ -130,11 +128,11 @@ static int MessageEventAdded(WPARAM hContact, LPARAM hDBEvent)
tm *tm_time = gmtime(&tTime);
// build a message
- Buffer<char> szUtfMsg;
+ CMStringA szUtfMsg;
T2Utf szTemplate(tszForwardTemplate);
for (char *p = szTemplate; *p; p++) {
if (*p != '%') {
- szUtfMsg.append(*p);
+ szUtfMsg.AppendChar(*p);
continue;
}
@@ -142,7 +140,7 @@ static int MessageEventAdded(WPARAM hContact, LPARAM hDBEvent)
switch(*++p) {
case 'u':
case 'U':
- szUtfMsg.append(T2Utf(Clist_GetContactDisplayName(hContact)));
+ szUtfMsg.Append(T2Utf(Clist_GetContactDisplayName(hContact)));
break;
case 'i':
@@ -154,43 +152,43 @@ static int MessageEventAdded(WPARAM hContact, LPARAM hDBEvent)
else
mir_snwprintf(buf, L"%p", hContact);
}
- szUtfMsg.append(T2Utf(buf));
+ szUtfMsg.Append(T2Utf(buf));
break;
case 't':
case 'T':
wcsftime(buf, 10, L"%H:%M", tm_time);
- szUtfMsg.append(T2Utf(buf));
+ szUtfMsg.Append(T2Utf(buf));
break;
case 'd':
case 'D':
wcsftime(buf, 12, L"%d/%m/%Y", tm_time);
- szUtfMsg.append(T2Utf(buf));
- break;
+ szUtfMsg.Append(T2Utf(buf));
+ break;
case 'm':
case 'M':
if (dbei.flags & DBEF_UTF)
- szUtfMsg.append((char*)dbei.pBlob, dbei.cbBlob);
+ szUtfMsg.Append((char*)dbei.pBlob, dbei.cbBlob);
else
- szUtfMsg.append(ptrA(mir_utf8encode((char*)dbei.pBlob)));
+ szUtfMsg.Append(ptrA(mir_utf8encode((char*)dbei.pBlob)));
break;
case '%':
- szUtfMsg.append('%');
+ szUtfMsg.AppendChar('%');
break;
}
}
int iPartCount = 1;
- size_t cbMsgSize = szUtfMsg.len, cbPortion = cbMsgSize;
+ size_t cbMsgSize = szUtfMsg.GetLength(), cbPortion = cbMsgSize;
if (iSplit > 0) {
- iPartCount = min(iSendParts, int((szUtfMsg.len + iSplitMaxSize) / iSplitMaxSize));
+ iPartCount = min(iSendParts, int((szUtfMsg.GetLength() + iSplitMaxSize) / iSplitMaxSize));
cbPortion = iSplitMaxSize;
}
- char *szBuf = szUtfMsg.str;
+ const char *szBuf = szUtfMsg;
for (int i=0; i < iPartCount; i++, szBuf += cbPortion) {
char *szMsgPart = (char*)mir_alloc(cbPortion+1);
strncpy(szMsgPart, szBuf, cbPortion);
diff --git a/utils/mir_buffer.h b/utils/mir_buffer.h
deleted file mode 100644
index 9e64474fd3..0000000000
--- a/utils/mir_buffer.h
+++ /dev/null
@@ -1,431 +0,0 @@
-/*
-Copyright (C) 2005-2009 Ricardo Pescuma Domenecci
-
-This is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public
-License as published by the Free Software Foundation; either
-version 2 of the License, or (at your option) any later version.
-
-This 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with this file; see the file license.txt. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.
-*/
-
-
-#ifndef __MIR_BUFFER_H__
-# define __MIR_BUFFER_H__
-
-#include <windows.h>
-
-#include <m_variables.h>
-#include <m_timezones.h>
-
-template<class T>
-inline size_t __blen(const T *str)
-{
- return 0;
-}
-
-template<>
-inline size_t __blen<char>(const char *str)
-{
- return mir_strlen(str);
-}
-
-template<>
-inline size_t __blen<wchar_t>(const wchar_t *str)
-{
- return mir_wstrlen(str);
-}
-
-template<class T>
-inline T * __bTranslate(const T *str)
-{
- return 0;
-}
-
-template<>
-inline char * __bTranslate<char>(const char *str)
-{
- return Translate(str);
-}
-
-template<>
-inline wchar_t * __bTranslate<wchar_t>(const wchar_t *str)
-{
- return TranslateW(str);
-}
-
-
-template<class O, class D>
-inline void __bcopy(D *dest, const O *orig, size_t len)
-{
-}
-
-inline void __bcopy(char *dest, const char *orig, size_t len)
-{
- strncpy(dest, orig, len);
-}
-
-inline void __bcopy(WCHAR *dest, const WCHAR *orig, size_t len)
-{
- wcsncpy(dest, orig, len);
-}
-
-inline void __bcopy(WCHAR *dest, const char *orig, size_t len)
-{
- MultiByteToWideChar(CallService("LangPack/GetCodePage", 0, 0), 0, orig, (int)len, dest, (int)len);
-}
-
-inline void __bcopy(char *dest, const WCHAR *orig, size_t len)
-{
- WideCharToMultiByte(CallService("LangPack/GetCodePage", 0, 0), 0, orig, (int)len, dest, (int)len, nullptr, nullptr);
-}
-
-
-
-template<class T>
-class Buffer
-{
- public:
- size_t len;
- T *str;
-
- Buffer() : str(nullptr), size(0), len(0)
- {
- alloc(1);
- pack();
- }
-
- Buffer(T in) : str(nullptr), size(0), len(0)
- {
- if (in == NULL)
- {
- alloc(1);
- pack();
- }
- else
- {
- str = in;
- size = len = __blen(str);
- }
- }
-
- ~Buffer()
- {
- free();
- }
-
- void pack()
- {
- if (str != nullptr)
- memset(&str[len], 0, sizeof(str[len]));
- }
-
- void alloc(size_t total)
- {
- if (total > size)
- {
- size = total + 256 - total % 256;
- if (str == nullptr)
- str = (T *) mir_alloc(size * sizeof(T));
- else
- str = (T *) mir_realloc(str, size * sizeof(T));
- }
- }
-
- void free()
- {
- if (str != nullptr)
- {
- mir_free(str);
- str = nullptr;
- len = size = 0;
- }
- }
-
- void clear()
- {
- len = 0;
- pack();
- }
-
- void append(T app)
- {
- alloc(len + 1 + 1);
-
- str[len] = app;
- len++;
- pack();
- }
-
- void appendn(size_t n, T app)
- {
- alloc(len + n + 1);
-
- for (; n > 0; n--)
- {
- str[len] = app;
- len++;
- }
- pack();
- }
-
- void append(const char *app, size_t appLen = -1)
- {
- if (app == nullptr)
- return;
- if (appLen == -1)
- appLen = __blen(app);
-
- size_t total = len + appLen + 1;
- alloc(total);
-
- __bcopy(&str[len], app, appLen);
- len += appLen;
- pack();
- }
-
- void append(const WCHAR *app, size_t appLen = -1)
- {
- if (app == nullptr)
- return;
- if (appLen == -1)
- appLen = __blen(app);
-
- size_t total = len + appLen + 1;
- alloc(total);
-
- __bcopy(&str[len], app, appLen);
- len += appLen;
- pack();
- }
-
- void append(const Buffer<char> &app)
- {
- if (app.str == nullptr)
- return;
- size_t appLen = app.len;
-
- size_t total = len + appLen + 1;
- alloc(total);
-
- __bcopy(&str[len], app.str, appLen);
- len += appLen;
- pack();
- }
-
- void append(const Buffer<WCHAR> &app)
- {
- size_t appLen = app.len;
-
- size_t total = len + appLen + 1;
- alloc(total);
-
- __bcopy(&str[len], app.str , appLen);
- len += appLen;
- pack();
- }
-
- void appendPrintf(const T *app, ...)
- {
- size_t total = len + 512;
- alloc(total);
-
- va_list arg;
- va_start(arg, app);
- total = __bvsnprintf<T>(&str[len], size - len - 1, app, arg); //!!!!!!!!!!!!
- len += total;
- pack();
- }
-
- void insert(size_t pos, T *app, size_t appLen = -1)
- {
- if (pos > len)
- pos = len;
-
- if (appLen == -1)
- appLen = __blen(app);
-
- alloc(len + appLen + 1);
-
- if (pos < len)
- memmove(&str[pos + appLen], &str[pos], (len - pos) * sizeof(T));
- memmove(&str[pos], app, appLen * sizeof(T));
-
- len += appLen;
- pack();
- }
-
- void replace(size_t start, size_t end, T *app, size_t appLen = -1)
- {
- if (start > len)
- start = len;
-
- if (end > len)
- end = len;
- if (end < start)
- end = start;
-
- if (appLen == -1)
- appLen = __blen(app);
-
- size_t oldLen = end - start;
- if (oldLen < appLen)
- alloc(len + appLen - oldLen + 1);
-
- if (end < len && oldLen != appLen)
- memmove(&str[start + appLen], &str[end], (len - end) * sizeof(T));
- memmove(&str[start], app, appLen * sizeof(T));
-
- len += appLen - oldLen;
- pack();
- }
-
- void replaceAll(T find, T replace)
- {
- for(size_t i = 0; i < len; i++)
- if (str[len] == find)
- str[len] = replace;
- pack();
- }
-
- void translate()
- {
- if (str == nullptr || len == 0)
- return;
-
- str[len] = 0;
- T *tmp = __bTranslate(str);
- len = __blen(tmp);
- alloc(len + 1);
- memmove(str, tmp, len * sizeof(T));
- pack();
- }
-
- void reverse()
- {
- for(size_t i = 0; i < len/2; i++)
- {
- T tmp = str[i];
- str[i] = str[len-i-1];
- str[len-i-1] = tmp;
- }
- }
-
- T *appender(size_t appLen)
- {
- alloc(len + appLen + 1);
- T *ret = &str[len];
- len += appLen;
- return ret;
- }
-
- T *lock(size_t maxSize)
- {
- alloc(len + maxSize + 1);
- return &str[len];
- }
-
- void release()
- {
- len += max(__blen(&str[len]), size - len - 1);
- }
-
- T *detach()
- {
- T *ret = str;
- str = nullptr;
- len = 0;
- return ret;
- }
-
- void trimRight()
- {
- if (str == nullptr)
- return;
-
- int e;
- for(e = len-1; e >= 0 && (str[e] == (T)' '
- || str[e] == (T)'\t'
- || str[e] == (T)'\r'
- || str[e] == (T)'\n'); e--) ;
- len = e+1;
- pack();
- }
-
- void trimLeft()
- {
- if (str == nullptr)
- return;
-
- int s;
- for(s = 0; str[s] == (T)' '
- || str[s] == (T)'\t'
- || str[s] == (T)'\r'
- || str[s] == (T)'\n'; s++) ;
- if (s > 0)
- {
- memmove(str, &str[s], (len - s) * sizeof(T));
- len -= s;
- }
- pack();
- }
-
- void trim()
- {
- trimRight();
- trimLeft();
- }
-
- Buffer<T>& operator+=(const char *txt)
- {
- append(txt);
- return *this;
- }
-
- Buffer<T>& operator+=(const WCHAR *txt)
- {
- append(txt);
- return *this;
- }
-
- Buffer<T>& operator+=(const Buffer<T> &txt)
- {
- append(txt);
- return *this;
- }
-
- Buffer<T>& operator=(const char *txt)
- {
- clear();
- append(txt);
- return *this;
- }
-
- Buffer<T>& operator=(const WCHAR *txt)
- {
- clear();
- append(txt);
- return *this;
- }
-
- Buffer<T>& operator=(const Buffer<T> &txt)
- {
- clear();
- append(txt);
- return *this;
- }
-
-
- private:
- size_t size;
-};
-
-#endif // __MIR_BUFFER_H__