-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathmircFunctions.cpp
More file actions
81 lines (72 loc) · 2.14 KB
/
mircFunctions.cpp
File metadata and controls
81 lines (72 loc) · 2.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/*!
* \file mircFunctions.cpp
* \brief Methods which will print out information to mIRC windows.
*
* This file contains the informative (debug/error/status) information for DCX dll routines.
*
* \author William Nguyen ( twig at genscripts dot net )
* \version 1.0
*
* \b Revisions
*
* © ScriptsDB.org - 2007-2008
*/
#include "defines.h"
#include "Dcx.h"
#include "mIRCLinker.h"
/*!
* \brief Converts mIRC long time to C++ SYSTEMTIME object.
*/
SYSTEMTIME MircTimeToSystemTime(const long mircTime)
{
//TString str;
//SYSTEMTIME st = { 0 };
//
////mIRCLinker::tsEvalex(str, TEXT("$asctime(%ld, d m yyyy hh nn ss)"), mircTime);
//mIRCLinker::eval(str, TEXT("$asctime(%,d m yyyy hh nn ss)"), mircTime);
//
//st.wDay = str.getfirsttok(1).to_<WORD>();
//st.wMonth = str.getnexttokas<WORD>();
//st.wYear = str.getnexttokas<WORD>();
//st.wHour = str.getnexttokas<WORD>();
//st.wMinute = str.getnexttokas<WORD>();
//st.wSecond = str.getnexttokas<WORD>();
//
//return st;
TString str;
//mIRCLinker::eval(str, TEXT("$asctime(%,yyyy m d hh nn ss)"), mircTime);
mIRCLinker::eval(str, TEXT("$asctime(%,yyyy m d HH nn ss)"), mircTime); // fixes 24hr times showing wrong.
return { str.getfirsttok(1).to_<WORD>(), str.getnexttokas<WORD>(), 0, str.getnexttokas<WORD>(), str.getnexttokas<WORD>(), str.getnexttokas<WORD>(), str.getnexttokas<WORD>(), 0 };
}
long SystemTimeToMircTime(const LPSYSTEMTIME pst)
{
if ((!pst) || (pst->wMonth == 0))
{
Dcx::error(TEXT("SystemTimeToMircTime"), TEXT("invalid SYSTEMTIME parameter."));
return 0;
}
static const TCHAR *months[12] = {
TEXT("January"),
TEXT("Feburary"),
TEXT("March"),
TEXT("April"),
TEXT("May"),
TEXT("June"),
TEXT("July"),
TEXT("August"),
TEXT("September"),
TEXT("October"),
TEXT("November"),
TEXT("December")
};
if (const auto iNum = mIRCLinker::uEval<long>(TEXT("$ctime(%:%:% % % %)"),
pst->wHour,
pst->wMinute,
pst->wSecond,
pst->wDay,
gsl::at(months,pst->wMonth - 1),
pst->wYear); iNum.has_value())
return *iNum;
Dcx::error(TEXT("SystemTimeToMircTime"), TEXT("Unable to get time."));
return 0;
}