summaryrefslogtreecommitdiff
path: root/plugins/TrafficCounter/src/misc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/TrafficCounter/src/misc.cpp')
-rw-r--r--plugins/TrafficCounter/src/misc.cpp80
1 files changed, 40 insertions, 40 deletions
diff --git a/plugins/TrafficCounter/src/misc.cpp b/plugins/TrafficCounter/src/misc.cpp
index f15a045250..3e8b231e07 100644
--- a/plugins/TrafficCounter/src/misc.cpp
+++ b/plugins/TrafficCounter/src/misc.cpp
@@ -19,52 +19,52 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "stdafx.h"
-/* .
-:
-InputString - ;
-RowItemsList - .
- - . */
+/* Функция разбирает строку и возвращает список тегов и соответствующих им строк.
+Аргументы:
+InputString - строка для разбора;
+RowItemsList - список найденных элементов.
+Возвращаемое значение - количество элементов в списках. */
WORD GetRowItems(wchar_t *InputString, RowItemInfo **RowItemsList)
{
wchar_t *begin, *end;
WORD c = 0;
- // .
+ // Ищем слева открывающую скобку.
begin = wcschr(InputString, '{');
- // ...
+ // Если скобка найдена...
if (begin) {
- //
+ // Выделяем память под указатели
*RowItemsList = (RowItemInfo*)mir_alloc(sizeof(RowItemInfo));
}
else return 0;
do {
- // .
+ // Сразу вслед за ней ищем закрывающую.
end = wcschr(begin, '}');
- //
+ // Выделяем память под указатели
*RowItemsList = (RowItemInfo*)mir_realloc(*RowItemsList, sizeof(RowItemInfo) * (c + 1));
- // .
+ // Разбираем тег.
swscanf(begin + 1, L"%c%hd",
&((*RowItemsList)[c].Alignment),
&((*RowItemsList)[c].Interval));
- // - , .
+ // Ищем далее открывающую скобку - это конец строки, соответствующей тегу.
begin = wcschr(end, '{');
if (begin) {
- // .
+ // Выделяем память под строку.
(*RowItemsList)[c].String = (wchar_t*)mir_alloc(sizeof(wchar_t) * (begin - end));
- // .
+ // Копируем строку.
wcsncpy((*RowItemsList)[c].String, end + 1, begin - end - 1);
(*RowItemsList)[c].String[begin - end - 1] = 0;
}
else {
- // .
+ // Выделяем память под строку.
(*RowItemsList)[c].String = (wchar_t*)mir_alloc(sizeof(wchar_t) * mir_wstrlen(end));
- // .
+ // Копируем строку.
wcsncpy((*RowItemsList)[c].String, end + 1, mir_wstrlen(end));
}
@@ -74,7 +74,7 @@ WORD GetRowItems(wchar_t *InputString, RowItemInfo **RowItemsList)
return c;
}
-/* . */
+/* Функция возвращает количество дней в указанном месяце указанного года. */
BYTE DaysInMonth(BYTE Month, WORD Year)
{
switch (Month) {
@@ -94,8 +94,8 @@ BYTE DaysInMonth(BYTE Month, WORD Year)
return 0;
}
-//
-// 7 - , 1 - . .
+// Функция определяет день недели по дате
+// 7 - ВС, 1 - ПН и т. д.
BYTE DayOfWeek(BYTE Day, BYTE Month, WORD Year)
{
WORD a, y, m;
@@ -111,19 +111,19 @@ BYTE DayOfWeek(BYTE Day, BYTE Month, WORD Year)
}
/*
-:
-Value - ;
-Unit - (0 - , 1 - , 2 - , 3 - );
-Buffer - ;
-Size - .
- : .
+Аргументы:
+Value - количество байт;
+Unit - единицы измерения (0 - байты, 1 - килобайты, 2 - мегабайты, 3 - автоматически);
+Buffer - адрес строки для записи результата;
+Size - размер буфера.
+Возвращаемое значение: требуемый размер буфера.
*/
size_t GetFormattedTraffic(DWORD Value, BYTE Unit, wchar_t *Buffer, size_t Size)
{
wchar_t Str1[32], szUnit[4] = { ' ', 0 };
DWORD Divider;
NUMBERFMT nf = { 0, 1, 3, L",", L" ", 0 };
- wchar_t *Res; // .
+ wchar_t *Res; // Промежуточный результат.
switch (Unit) {
case 0: //bytes
@@ -167,36 +167,36 @@ size_t GetFormattedTraffic(DWORD Value, BYTE Unit, wchar_t *Buffer, size_t Size)
return l;
}
-/*
-:
-Duration: ;
-Format: ;
-Buffer: , .
-Size - . */
+/* Преобразование интервала времени в его строковое представление
+Аргументы:
+Duration: интервал времени в секундах;
+Format: строка формата;
+Buffer: адрес буфера, куда функция помещает результат.
+Size - размер буфера. */
size_t GetDurationFormatM(DWORD Duration, wchar_t *Format, wchar_t *Buffer, size_t Size)
{
size_t Length;
DWORD q;
WORD TokenIndex, FormatIndex;
- wchar_t Token[256], // .
- *Res; // .
+ wchar_t Token[256], // Аккумулятор.
+ *Res; // Промежуточный результат.
- Res = (wchar_t*)malloc(sizeof(wchar_t)); // - , .
+ Res = (wchar_t*)malloc(sizeof(wchar_t)); // Выделяем чуть-чуть памяти под результат, но это только начало.
//SecureZeroMemory(Res, sizeof(wchar_t));
Res[0] = 0;
for (FormatIndex = 0; Format[FormatIndex];) {
- // . , - .
+ // Ищем токены. Считается, что токен - только буквы.
TokenIndex = 0;
q = iswalpha(Format[FormatIndex]);
- // .
+ // Копируем символы в аккумулятор до смены флага.
do {
Token[TokenIndex++] = Format[FormatIndex++];
} while (q == iswalpha(Format[FormatIndex]));
Token[TokenIndex] = 0;
- // ?
+ // Что получили в аккумуляторе?
if (!mir_wstrcmp(Token, L"d")) {
q = Duration / (60 * 60 * 24);
mir_snwprintf(Token, L"%d", q);
@@ -233,7 +233,7 @@ size_t GetDurationFormatM(DWORD Duration, wchar_t *Format, wchar_t *Buffer, size
Duration -= q;
}
- // , .
+ // Добавим памяти, если нужно.
Length = mir_wstrlen(Res) + mir_wstrlen(Token) + 1;
Res = (wchar_t*)realloc(Res, Length * sizeof(wchar_t));
mir_wstrcat(Res, Token);
@@ -249,7 +249,7 @@ size_t GetDurationFormatM(DWORD Duration, wchar_t *Format, wchar_t *Buffer, size
return Length;
}
-/* :
+/* Результат:
-1 - st1 < st2
0 - st1 = st2
+1 - st1 > st2