Fixed few memory leeks.
This commit is contained in:
parent
3750658bf2
commit
18d26cabfc
@ -52,6 +52,7 @@ Global
|
|||||||
{C23888DA-7024-4A38-A8C5-CE4BEFA4629A}.Release|x64.ActiveCfg = Release|x64
|
{C23888DA-7024-4A38-A8C5-CE4BEFA4629A}.Release|x64.ActiveCfg = Release|x64
|
||||||
{C23888DA-7024-4A38-A8C5-CE4BEFA4629A}.Release|x64.Build.0 = Release|x64
|
{C23888DA-7024-4A38-A8C5-CE4BEFA4629A}.Release|x64.Build.0 = Release|x64
|
||||||
{B80E3728-98E5-4A9A-B883-9C064F1FFFA7}.Debug|Win32.ActiveCfg = Debug|Win32
|
{B80E3728-98E5-4A9A-B883-9C064F1FFFA7}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{B80E3728-98E5-4A9A-B883-9C064F1FFFA7}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
{B80E3728-98E5-4A9A-B883-9C064F1FFFA7}.Debug|x64.ActiveCfg = Debug|x64
|
{B80E3728-98E5-4A9A-B883-9C064F1FFFA7}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{B80E3728-98E5-4A9A-B883-9C064F1FFFA7}.Debug|x64.Build.0 = Debug|x64
|
{B80E3728-98E5-4A9A-B883-9C064F1FFFA7}.Debug|x64.Build.0 = Debug|x64
|
||||||
{B80E3728-98E5-4A9A-B883-9C064F1FFFA7}.Release|Win32.ActiveCfg = Release|Win32
|
{B80E3728-98E5-4A9A-B883-9C064F1FFFA7}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
@ -59,6 +60,7 @@ Global
|
|||||||
{B80E3728-98E5-4A9A-B883-9C064F1FFFA7}.Release|x64.ActiveCfg = Release|x64
|
{B80E3728-98E5-4A9A-B883-9C064F1FFFA7}.Release|x64.ActiveCfg = Release|x64
|
||||||
{B80E3728-98E5-4A9A-B883-9C064F1FFFA7}.Release|x64.Build.0 = Release|x64
|
{B80E3728-98E5-4A9A-B883-9C064F1FFFA7}.Release|x64.Build.0 = Release|x64
|
||||||
{951D76D2-FA57-4C95-8F65-A6C19C122AA5}.Debug|Win32.ActiveCfg = Debug|Win32
|
{951D76D2-FA57-4C95-8F65-A6C19C122AA5}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{951D76D2-FA57-4C95-8F65-A6C19C122AA5}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
{951D76D2-FA57-4C95-8F65-A6C19C122AA5}.Debug|x64.ActiveCfg = Debug|x64
|
{951D76D2-FA57-4C95-8F65-A6C19C122AA5}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
{951D76D2-FA57-4C95-8F65-A6C19C122AA5}.Debug|x64.Build.0 = Debug|x64
|
{951D76D2-FA57-4C95-8F65-A6C19C122AA5}.Debug|x64.Build.0 = Debug|x64
|
||||||
{951D76D2-FA57-4C95-8F65-A6C19C122AA5}.Release|Win32.ActiveCfg = Release|Win32
|
{951D76D2-FA57-4C95-8F65-A6C19C122AA5}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
@ -141,6 +141,10 @@ Area* AreaList::NewArea(const char *basetype) {
|
|||||||
return new Area(ap);
|
return new Area(ap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Area* AreaList::NewArea(const std::string &basetype)
|
||||||
|
{
|
||||||
|
return NewArea(basetype.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
// Write lastreads for the next session
|
// Write lastreads for the next session
|
||||||
@ -310,11 +314,11 @@ void AreaList::WriteAreaDef(const char* file)
|
|||||||
else if((*aa)->islocal())
|
else if((*aa)->islocal())
|
||||||
strcpy(type, "Local");
|
strcpy(type, "Local");
|
||||||
#ifndef GMB_NOXBBS
|
#ifndef GMB_NOXBBS
|
||||||
if(streql((*aa)->basetype(), "ADEPTXBBS"))
|
if ((*aa)->basetype() == "ADEPTXBBS")
|
||||||
strcpy(msgbase, "XBBS");
|
strcpy(msgbase, "XBBS");
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
strxcpy(msgbase, (*aa)->basetype(), sizeof(msgbase));
|
strxcpy(msgbase, (*aa)->basetype().c_str(), sizeof(msgbase));
|
||||||
if (strchr((*aa)->echoid(), ' '))
|
if (strchr((*aa)->echoid(), ' '))
|
||||||
gsprintf(PRINTF_DECLARE_BUFFER(echoid), "\"%s\"", (*aa)->echoid());
|
gsprintf(PRINTF_DECLARE_BUFFER(echoid), "\"%s\"", (*aa)->echoid());
|
||||||
else
|
else
|
||||||
@ -386,11 +390,13 @@ void AreaList::SetAreaDesc(char* echoid, char* desc) {
|
|||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
|
|
||||||
#ifndef GMB_NOPCB
|
#ifndef GMB_NOPCB
|
||||||
void PcbAdjustArea(uint rec, const char* msgfile) {
|
void PcbAdjustArea(uint rec, const char* msgfile)
|
||||||
|
{
|
||||||
for(uint n=0; n<AL.size(); n++) {
|
for (uint n=0; n<AL.size(); n++)
|
||||||
|
{
|
||||||
Area* a = AL[n];
|
Area* a = AL[n];
|
||||||
if(streql(a->basetype(), "PCBOARD")) {
|
if (a->basetype() == "PCBOARD")
|
||||||
|
{
|
||||||
if((a->board() == rec) and (*a->path() == NUL)) {
|
if((a->board() == rec) and (*a->path() == NUL)) {
|
||||||
a->set_path(msgfile);
|
a->set_path(msgfile);
|
||||||
break;
|
break;
|
||||||
|
@ -166,7 +166,8 @@ void AreaList::AddNewArea(AreaCfg* aa)
|
|||||||
*desc = NUL;
|
*desc = NUL;
|
||||||
|
|
||||||
// Make sure the path field is 100% correct for the msgbase
|
// Make sure the path field is 100% correct for the msgbase
|
||||||
if(streql(aa->basetype, "FTS1") or streql(aa->basetype, "OPUS")) {
|
if ((aa->basetype == "FTS1") || (aa->basetype == "OPUS"))
|
||||||
|
{
|
||||||
if(*aa->path == NUL)
|
if(*aa->path == NUL)
|
||||||
return;
|
return;
|
||||||
MapPath(aa->path);
|
MapPath(aa->path);
|
||||||
@ -174,7 +175,7 @@ void AreaList::AddNewArea(AreaCfg* aa)
|
|||||||
strschg_environ(aa->path);
|
strschg_environ(aa->path);
|
||||||
}
|
}
|
||||||
#ifndef GMB_NOHUDS
|
#ifndef GMB_NOHUDS
|
||||||
else if (streql(aa->basetype, "HUDSON"))
|
else if (aa->basetype == "HUDSON")
|
||||||
{
|
{
|
||||||
if ((aa->board < 1) or (aa->board > 200)) // Ignore areas with invalid numbers
|
if ((aa->board < 1) or (aa->board > 200)) // Ignore areas with invalid numbers
|
||||||
return;
|
return;
|
||||||
@ -182,7 +183,7 @@ void AreaList::AddNewArea(AreaCfg* aa)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifndef GMB_NOGOLD
|
#ifndef GMB_NOGOLD
|
||||||
else if (streql(aa->basetype, "GOLDBASE"))
|
else if (aa->basetype == "GOLDBASE")
|
||||||
{
|
{
|
||||||
if ((aa->board < 1) or (aa->board > 500)) // Ignore areas with invalid numbers
|
if ((aa->board < 1) or (aa->board > 500)) // Ignore areas with invalid numbers
|
||||||
return;
|
return;
|
||||||
@ -190,7 +191,7 @@ void AreaList::AddNewArea(AreaCfg* aa)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifndef GMB_NOEZY
|
#ifndef GMB_NOEZY
|
||||||
else if (streql(aa->basetype, "EZYCOM"))
|
else if (aa->basetype == "EZYCOM")
|
||||||
{
|
{
|
||||||
// Ignore areas with invalid numbers
|
// Ignore areas with invalid numbers
|
||||||
if ((aa->board < 1) or (aa->board > 1536))
|
if ((aa->board < 1) or (aa->board > 1536))
|
||||||
@ -199,7 +200,8 @@ void AreaList::AddNewArea(AreaCfg* aa)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifndef GMB_NOWCAT
|
#ifndef GMB_NOWCAT
|
||||||
else if(streql(aa->basetype, "WILDCAT")) {
|
else if (aa->basetype == "WILDCAT")
|
||||||
|
{
|
||||||
if(*aa->path == NUL)
|
if(*aa->path == NUL)
|
||||||
return;
|
return;
|
||||||
MapPath(aa->path);
|
MapPath(aa->path);
|
||||||
@ -208,7 +210,8 @@ void AreaList::AddNewArea(AreaCfg* aa)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifndef GMB_NOXBBS
|
#ifndef GMB_NOXBBS
|
||||||
else if(streql(aa->basetype, "ADEPTXBBS")) {
|
else if (aa->basetype == "ADEPTXBBS")
|
||||||
|
{
|
||||||
if(*aa->path == NUL)
|
if(*aa->path == NUL)
|
||||||
return;
|
return;
|
||||||
MapPath(aa->path);
|
MapPath(aa->path);
|
||||||
@ -217,7 +220,8 @@ void AreaList::AddNewArea(AreaCfg* aa)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifndef GMB_NOSQSH
|
#ifndef GMB_NOSQSH
|
||||||
else if(streql(aa->basetype, "SQUISH")) {
|
else if (aa->basetype == "SQUISH")
|
||||||
|
{
|
||||||
if(*aa->path == NUL)
|
if(*aa->path == NUL)
|
||||||
return;
|
return;
|
||||||
MapPath(aa->path);
|
MapPath(aa->path);
|
||||||
@ -226,7 +230,8 @@ void AreaList::AddNewArea(AreaCfg* aa)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifndef GMB_NOJAM
|
#ifndef GMB_NOJAM
|
||||||
else if(streql(aa->basetype, "JAM")) {
|
else if (aa->basetype == "JAM")
|
||||||
|
{
|
||||||
if(*aa->path == NUL)
|
if(*aa->path == NUL)
|
||||||
return;
|
return;
|
||||||
MapPath(aa->path);
|
MapPath(aa->path);
|
||||||
@ -235,14 +240,16 @@ void AreaList::AddNewArea(AreaCfg* aa)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifndef GMB_NOPCB
|
#ifndef GMB_NOPCB
|
||||||
else if(streql(aa->basetype, "PCBOARD")) {
|
else if (aa->basetype == "PCBOARD")
|
||||||
|
{
|
||||||
MapPath(aa->path);
|
MapPath(aa->path);
|
||||||
StripBackslash(aa->path);
|
StripBackslash(aa->path);
|
||||||
strschg_environ(aa->path);
|
strschg_environ(aa->path);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifndef GMB_NOSMB
|
#ifndef GMB_NOSMB
|
||||||
else if(streql(aa->basetype, "SMB")) {
|
else if (aa->basetype == "SMB")
|
||||||
|
{
|
||||||
if(*aa->path == NUL)
|
if(*aa->path == NUL)
|
||||||
return;
|
return;
|
||||||
MapPath(aa->path);
|
MapPath(aa->path);
|
||||||
@ -250,7 +257,8 @@ void AreaList::AddNewArea(AreaCfg* aa)
|
|||||||
strschg_environ(aa->path);
|
strschg_environ(aa->path);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
else if(streql(aa->basetype, "SEPARATOR")) {
|
else if (aa->basetype == "SEPARATOR")
|
||||||
|
{
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return;
|
return;
|
||||||
@ -302,13 +310,16 @@ void AreaList::AddNewArea(AreaCfg* aa)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if(not (*ap)->isseparator()) {
|
else if(not (*ap)->isseparator())
|
||||||
|
{
|
||||||
bool eq_path = strieql(aa->path, (*ap)->path());
|
bool eq_path = strieql(aa->path, (*ap)->path());
|
||||||
bool eq_board = (aa->board == (*ap)->board());
|
bool eq_board = (aa->board == (*ap)->board());
|
||||||
bool eq_msgbase = streql(aa->basetype, (*ap)->basetype());
|
bool eq_msgbase = (aa->basetype == (*ap)->basetype());
|
||||||
bool eq_isfido = ((streql(aa->basetype, "OPUS") or streql(aa->basetype, "FTS1"))
|
bool eq_isfido = (((aa->basetype == "OPUS") || (aa->basetype == "FTS1")) &&
|
||||||
and (streql((*ap)->basetype(), "OPUS") or streql((*ap)->basetype(), "FTS1")));
|
(((*ap)->basetype() == "OPUS") || ((*ap)->basetype() == "FTS1")));
|
||||||
if(eq_path and eq_board and (eq_msgbase or eq_isfido)) {
|
|
||||||
|
if (eq_path and eq_board and (eq_msgbase or eq_isfido))
|
||||||
|
{
|
||||||
// We had it already, so override with the new data
|
// We had it already, so override with the new data
|
||||||
newarea = false;
|
newarea = false;
|
||||||
if(strblank((*ap)->desc()))
|
if(strblank((*ap)->desc()))
|
||||||
|
@ -289,7 +289,7 @@ extern "C" int AreaListCmp(const Area** __a, const Area** __b) {
|
|||||||
else if(B->isseparator()) {
|
else if(B->isseparator()) {
|
||||||
return sepfirst?1:-1;
|
return sepfirst?1:-1;
|
||||||
}
|
}
|
||||||
else if((cmp = strcmp(A->basetype(), B->basetype())) != 0)
|
else if ((cmp = strcmp(A->basetype().c_str(), B->basetype().c_str())) != 0)
|
||||||
return cmp;
|
return cmp;
|
||||||
break;
|
break;
|
||||||
case 'Y':
|
case 'Y':
|
||||||
|
@ -601,7 +601,11 @@ void CmfMsgs(GMsg* msg, bool torecycle)
|
|||||||
bool need_fmpt = true;
|
bool need_fmpt = true;
|
||||||
bool need_topt = true;
|
bool need_topt = true;
|
||||||
|
|
||||||
if(not need_netmail_kludges and streql(AAorig->basetype(), "SQUISH") and strcmp(AAdest->basetype(), "SQUISH") and AAdest->isnet() and AAorig->isnet()) {
|
if (not need_netmail_kludges &&
|
||||||
|
(AAorig->basetype() == "SQUISH") &&
|
||||||
|
(AAdest->basetype() == "SQUISH") &&
|
||||||
|
AAdest->isnet() && AAorig->isnet())
|
||||||
|
{
|
||||||
if(msg->orig.point and not strstr(msg->txt, "\001FMPT"))
|
if(msg->orig.point and not strstr(msg->txt, "\001FMPT"))
|
||||||
need_netmail_kludges = true;
|
need_netmail_kludges = true;
|
||||||
else
|
else
|
||||||
|
@ -96,9 +96,11 @@ char* MakeTearline(GMsg* msg, char* buf) {
|
|||||||
void MakeFlags(GMsg* msg, Line** line, char* buf) {
|
void MakeFlags(GMsg* msg, Line** line, char* buf) {
|
||||||
|
|
||||||
// The FrontDoor FLAGS netmail kludge
|
// The FrontDoor FLAGS netmail kludge
|
||||||
if(CFG->switches.get(useflags)) {
|
if (CFG->switches.get(useflags))
|
||||||
|
{
|
||||||
sprintf(buf, "\001FLAGS ");
|
sprintf(buf, "\001FLAGS ");
|
||||||
if(streql(AA->basetype(), "HUDSON")) {
|
if (AA->basetype() == "HUDSON")
|
||||||
|
{
|
||||||
if(msg->attr.hld())
|
if(msg->attr.hld())
|
||||||
strcat(buf, "HLD ");
|
strcat(buf, "HLD ");
|
||||||
if(msg->attr.frq())
|
if(msg->attr.frq())
|
||||||
@ -360,7 +362,9 @@ void DoKludges(int mode, GMsg* msg, int kludges) {
|
|||||||
msg->orig.make_string(buf2, msg->odom);
|
msg->orig.make_string(buf2, msg->odom);
|
||||||
gsprintf(PRINTF_DECLARE_BUFFER(msg->msgids), "%s %08x", buf2, getMsgId());
|
gsprintf(PRINTF_DECLARE_BUFFER(msg->msgids), "%s %08x", buf2, getMsgId());
|
||||||
}
|
}
|
||||||
if(CFG->switches.get(usemsgid) and strcmp(AA->basetype(), "PCBOARD")) {
|
|
||||||
|
if (CFG->switches.get(usemsgid) && (AA->basetype() == "PCBOARD"))
|
||||||
|
{
|
||||||
sprintf(buf, "\001MSGID: %s", msg->msgids);
|
sprintf(buf, "\001MSGID: %s", msg->msgids);
|
||||||
line = AddKludge(line, buf);
|
line = AddKludge(line, buf);
|
||||||
line->kludge = GKLUD_MSGID;
|
line->kludge = GKLUD_MSGID;
|
||||||
|
@ -377,14 +377,15 @@ char* GetCurrQuotebuf(char* quotebuf) {
|
|||||||
strcpy(quotebuf, AA->Quotebuffile());
|
strcpy(quotebuf, AA->Quotebuffile());
|
||||||
MakePathname(quotebuf, CFG->goldpath, quotebuf);
|
MakePathname(quotebuf, CFG->goldpath, quotebuf);
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
if(streql(AA->basetype(), "EZYCOM"))
|
{
|
||||||
|
if (AA->basetype() == "EZYCOM")
|
||||||
sprintf(quotebuf, "%sgld%05u.qbf", CFG->ezycom.msgbasepath, AA->board());
|
sprintf(quotebuf, "%sgld%05u.qbf", CFG->ezycom.msgbasepath, AA->board());
|
||||||
else if(streql(AA->basetype(), "FTS1") or streql(AA->basetype(), "OPUS"))
|
else if ((AA->basetype() == "FTS1") || (AA->basetype() == "OPUS"))
|
||||||
sprintf(quotebuf, "%s%s", AA->path(), "golded.qbf");
|
sprintf(quotebuf, "%s%s", AA->path(), "golded.qbf");
|
||||||
else if(streql(AA->basetype(), "GOLDBASE"))
|
else if (AA->basetype() == "GOLDBASE")
|
||||||
sprintf(quotebuf, "%sgoldg%03u.qbf", CFG->goldbasepath, AA->board());
|
sprintf(quotebuf, "%sgoldg%03u.qbf", CFG->goldbasepath, AA->board());
|
||||||
else if(streql(AA->basetype(), "HUDSON"))
|
else if (AA->basetype() == "HUDSON")
|
||||||
sprintf(quotebuf, "%sgoldh%03u.qbf", CFG->hudsonpath, AA->board());
|
sprintf(quotebuf, "%sgoldh%03u.qbf", CFG->hudsonpath, AA->board());
|
||||||
else
|
else
|
||||||
sprintf(quotebuf, "%s%s", AA->path(), ".qbf");
|
sprintf(quotebuf, "%s%s", AA->path(), ".qbf");
|
||||||
|
@ -507,6 +507,7 @@ BOOL WINAPI GoldedCtrlHandler(DWORD dwCtrlType) {
|
|||||||
void Uninitialize()
|
void Uninitialize()
|
||||||
{
|
{
|
||||||
delete WideUsername;
|
delete WideUsername;
|
||||||
|
LookupNodeClear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -2069,7 +2069,7 @@ void MakeLineIndex(GMsg* msg, int margin, bool getvalue, bool header_recode) {
|
|||||||
line = AddLine(line, "");
|
line = AddLine(line, "");
|
||||||
ptr = msg->txt;
|
ptr = msg->txt;
|
||||||
uint _size = strlen(msg->txt);
|
uint _size = strlen(msg->txt);
|
||||||
if(streql(AA->basetype(), "OPUS") or streql(AA->basetype(), "FTS1"))
|
if ((AA->basetype() == "OPUS") || (AA->basetype() == "FTS1"))
|
||||||
idxadjust = 190;
|
idxadjust = 190;
|
||||||
for (idx=0; idx < _size; ptr+=16,idx+=16)
|
for (idx=0; idx < _size; ptr+=16,idx+=16)
|
||||||
{
|
{
|
||||||
|
@ -494,7 +494,7 @@ void TokenXlat(int mode, std::string &input, GMsg* msg, GMsg* oldmsg, int __orig
|
|||||||
|
|
||||||
if (strnieql(it2str(input, dst), "@area", 5))
|
if (strnieql(it2str(input, dst), "@area", 5))
|
||||||
{
|
{
|
||||||
if (tokenxchg(input, dst, "@areatype", AA->basetype()))
|
if (tokenxchg(input, dst, "@areatype", AA->basetype().c_str()))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
char areapath[GMAXPATH];
|
char areapath[GMAXPATH];
|
||||||
@ -958,7 +958,7 @@ void GMsg::LinesToText() {
|
|||||||
strxcpy(re, _buf, sizeof(ISub));
|
strxcpy(re, _buf, sizeof(ISub));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool _lfterm = EDIT->CrLfTerm() and strcmp(AA->basetype(), "PCBOARD");
|
bool _lfterm = EDIT->CrLfTerm() and (AA->basetype() == "PCBOARD");
|
||||||
bool _hardterm = AA->Edithardterm() or AA->requirehardterm();
|
bool _hardterm = AA->Edithardterm() or AA->requirehardterm();
|
||||||
bool _softterm = AA->requiresoftterm();
|
bool _softterm = AA->requiresoftterm();
|
||||||
|
|
||||||
|
@ -1095,10 +1095,15 @@ struct location_item
|
|||||||
bool operator==(Addr &other) { return addr.equals(other); }
|
bool operator==(Addr &other) { return addr.equals(other); }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
std::vector<location_item> g_LocationCash;
|
||||||
|
|
||||||
|
void LookupNodeClear()
|
||||||
|
{
|
||||||
|
g_LocationCash.clear();
|
||||||
|
}
|
||||||
|
|
||||||
void LookupNodeLocation(GMsg* msg, std::string &location, int what)
|
void LookupNodeLocation(GMsg* msg, std::string &location, int what)
|
||||||
{
|
{
|
||||||
static std::vector<location_item> cash;
|
|
||||||
|
|
||||||
Subj statuslinebak;
|
Subj statuslinebak;
|
||||||
strcpy(statuslinebak, information);
|
strcpy(statuslinebak, information);
|
||||||
|
|
||||||
@ -1119,8 +1124,8 @@ void LookupNodeLocation(GMsg* msg, std::string &location, int what)
|
|||||||
if (addr.zone == 0)
|
if (addr.zone == 0)
|
||||||
addr.zone = AA->Aka().addr.zone;
|
addr.zone = AA->Aka().addr.zone;
|
||||||
|
|
||||||
std::vector<location_item>::iterator it = cash.begin();
|
std::vector<location_item>::iterator it = g_LocationCash.begin();
|
||||||
std::vector<location_item>::iterator end = cash.end();
|
std::vector<location_item>::iterator end = g_LocationCash.end();
|
||||||
|
|
||||||
while ((it != end) && (*it < addr)) it++;
|
while ((it != end) && (*it < addr)) it++;
|
||||||
|
|
||||||
@ -1165,7 +1170,7 @@ void LookupNodeLocation(GMsg* msg, std::string &location, int what)
|
|||||||
}
|
}
|
||||||
|
|
||||||
item.loc = location = city;
|
item.loc = location = city;
|
||||||
cash.insert(it, item);
|
g_LocationCash.insert(it, item);
|
||||||
}
|
}
|
||||||
|
|
||||||
update_statusline(statuslinebak);
|
update_statusline(statuslinebak);
|
||||||
|
@ -1001,7 +1001,7 @@ void MakeMsg(int mode, GMsg* omsg, bool ignore_replyto) {
|
|||||||
{
|
{
|
||||||
if (CFG->replylink != REPLYLINK_NONE)
|
if (CFG->replylink != REPLYLINK_NONE)
|
||||||
{
|
{
|
||||||
if ((CFG->replylink == REPLYLINK_DIRECT) or streql(AA->basetype(), "JAM"))
|
if ((CFG->replylink == REPLYLINK_DIRECT) or (AA->basetype() == "JAM"))
|
||||||
reply_msgno = omsg->msgno;
|
reply_msgno = omsg->msgno;
|
||||||
else if (CFG->replylink == REPLYLINK_CHAIN)
|
else if (CFG->replylink == REPLYLINK_CHAIN)
|
||||||
GetLastLink(omsg, reply_msgno);
|
GetLastLink(omsg, reply_msgno);
|
||||||
@ -1158,7 +1158,7 @@ void MakeMsg(int mode, GMsg* omsg, bool ignore_replyto) {
|
|||||||
uint32_t replynext;
|
uint32_t replynext;
|
||||||
bool ok2save = false;
|
bool ok2save = false;
|
||||||
|
|
||||||
if (streql(AA->basetype(), "SQUISH"))
|
if (AA->basetype() == "SQUISH")
|
||||||
{
|
{
|
||||||
if (reply->link.first())
|
if (reply->link.first())
|
||||||
{
|
{
|
||||||
@ -1177,7 +1177,8 @@ void MakeMsg(int mode, GMsg* omsg, bool ignore_replyto) {
|
|||||||
ok2save = true;
|
ok2save = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(streql(AA->basetype(), "JAM")) {
|
else if (AA->basetype() == "JAM")
|
||||||
|
{
|
||||||
if(reply->link.first()) {
|
if(reply->link.first()) {
|
||||||
replynext = reply->link.first();
|
replynext = reply->link.first();
|
||||||
do {
|
do {
|
||||||
|
@ -304,6 +304,7 @@ const char *lookup_nodelist(ftn_addr* addr);
|
|||||||
|
|
||||||
void LookupNodeLocation(GMsg* msg, std::string &location, int what);
|
void LookupNodeLocation(GMsg* msg, std::string &location, int what);
|
||||||
void LookupNode(GMsg* msg, const char* name, int what);
|
void LookupNode(GMsg* msg, const char* name, int what);
|
||||||
|
void LookupNodeClear();
|
||||||
void CheckNodelists();
|
void CheckNodelists();
|
||||||
|
|
||||||
|
|
||||||
@ -481,6 +482,7 @@ char* strtmp(const char* str);
|
|||||||
vattr quotecolor(const char* line);
|
vattr quotecolor(const char* line);
|
||||||
void doinvalidate(char* text, const char* find, const char* replace, bool is_tearline = false);
|
void doinvalidate(char* text, const char* find, const char* replace, bool is_tearline = false);
|
||||||
bool find(const std::vector<const char *> &vec, const char *str);
|
bool find(const std::vector<const char *> &vec, const char *str);
|
||||||
|
bool find(const std::vector<std::string> &vec, const std::string &str);
|
||||||
vattr GetColorName(const char *name, Addr &addr, vattr color);
|
vattr GetColorName(const char *name, Addr &addr, vattr color);
|
||||||
|
|
||||||
|
|
||||||
|
@ -744,3 +744,17 @@ bool find(const std::vector<const char *> &vec, const char *str) {
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool find(const std::vector<std::string> &vec, const std::string &str)
|
||||||
|
{
|
||||||
|
std::vector<std::string>::const_iterator it = vec.begin();
|
||||||
|
std::vector<std::string>::const_iterator end = vec.end();
|
||||||
|
|
||||||
|
for (; it != end; it++)
|
||||||
|
{
|
||||||
|
if ((*it) == str)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
@ -300,7 +300,8 @@ void Area::SaveMsg(int mode, GMsg* msg) {
|
|||||||
echopost++;
|
echopost++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(streql(basetype(), "JAM") and (isecho() or isnet())) {
|
if ((basetype() == "JAM") && (isecho() or isnet()))
|
||||||
|
{
|
||||||
Path p;
|
Path p;
|
||||||
|
|
||||||
sprintf(file, "%s%smail.jam", CFG->jampath, isecho() ? "echo" : "net");
|
sprintf(file, "%s%smail.jam", CFG->jampath, isecho() ? "echo" : "net");
|
||||||
|
@ -192,7 +192,7 @@ public:
|
|||||||
char sortspec[20];
|
char sortspec[20];
|
||||||
|
|
||||||
// Active msgbases (bitmap of MT_* contants)
|
// Active msgbases (bitmap of MT_* contants)
|
||||||
std::vector<const char *> basetypes;
|
std::vector<std::string> basetypes;
|
||||||
|
|
||||||
// Additional items to the area scan menu
|
// Additional items to the area scan menu
|
||||||
GAreaListScan ListScan;
|
GAreaListScan ListScan;
|
||||||
@ -216,6 +216,7 @@ public:
|
|||||||
|
|
||||||
// Return pointer to a new'd area of the specified format
|
// Return pointer to a new'd area of the specified format
|
||||||
Area* NewArea(const char *basetype);
|
Area* NewArea(const char *basetype);
|
||||||
|
Area* NewArea(const std::string &basetype);
|
||||||
|
|
||||||
// Sort areas
|
// Sort areas
|
||||||
void Sort(const char* specs=NULL, int first=0, int last=-1);
|
void Sort(const char* specs=NULL, int first=0, int last=-1);
|
||||||
@ -489,7 +490,7 @@ public:
|
|||||||
int areaid() const { return area->areaid(); }
|
int areaid() const { return area->areaid(); }
|
||||||
int groupid() const { return area->groupid(); }
|
int groupid() const { return area->groupid(); }
|
||||||
uint type() const { return area->type(); }
|
uint type() const { return area->type(); }
|
||||||
const char *basetype() const { return area->basetype(); }
|
const std::string &basetype() const { return area->basetype(); }
|
||||||
uint board() const { return area->board(); }
|
uint board() const { return area->board(); }
|
||||||
const ftn_addr& aka() const { return area->aka(); }
|
const ftn_addr& aka() const { return area->aka(); }
|
||||||
int originno() const { return area->originno(); }
|
int originno() const { return area->originno(); }
|
||||||
@ -515,6 +516,7 @@ public:
|
|||||||
void set_groupid(int g) { area->set_groupid(g); }
|
void set_groupid(int g) { area->set_groupid(g); }
|
||||||
void set_type(uint t) { area->set_type(t); }
|
void set_type(uint t) { area->set_type(t); }
|
||||||
void set_basetype(const char *m) { area->set_basetype(m); }
|
void set_basetype(const char *m) { area->set_basetype(m); }
|
||||||
|
void set_basetype(const std::string &m) { area->set_basetype(m); }
|
||||||
void set_board(uint b) { area->set_board(b); }
|
void set_board(uint b) { area->set_board(b); }
|
||||||
void set_aka(ftn_addr& a) { area->set_aka(a); }
|
void set_aka(ftn_addr& a) { area->set_aka(a); }
|
||||||
void set_originno(int o) { area->set_originno(o); }
|
void set_originno(int o) { area->set_originno(o); }
|
||||||
|
@ -65,7 +65,7 @@ public:
|
|||||||
int originno; // Origin number
|
int originno; // Origin number
|
||||||
uint board; // Board number (Hudson/Goldbase/Ezycom/PCBoard fmts)
|
uint board; // Board number (Hudson/Goldbase/Ezycom/PCBoard fmts)
|
||||||
uint type; // Type of msgarea (GMB_xxx)
|
uint type; // Type of msgarea (GMB_xxx)
|
||||||
const char *basetype; // Type of msgbase
|
std::string basetype; // Type of msgbase
|
||||||
ftn_addr aka; // The AKA to use in the area
|
ftn_addr aka; // The AKA to use in the area
|
||||||
ftn_attr attr; // Default attributes
|
ftn_attr attr; // Default attributes
|
||||||
byte scan : 1; // TRUE if listed with AREASCAN
|
byte scan : 1; // TRUE if listed with AREASCAN
|
||||||
@ -77,7 +77,7 @@ public:
|
|||||||
|
|
||||||
int setorigin(std::string& origin);
|
int setorigin(std::string& origin);
|
||||||
|
|
||||||
bool isseparator() const { return streql(basetype, "SEPARATOR"); }
|
bool isseparator() const { return (basetype == "SEPARATOR"); }
|
||||||
|
|
||||||
bool isnet() const { return !!(type & GMB_NET); }
|
bool isnet() const { return !!(type & GMB_NET); }
|
||||||
bool isecho() const { return !!(type & GMB_ECHO); }
|
bool isecho() const { return !!(type & GMB_ECHO); }
|
||||||
|
@ -358,19 +358,19 @@ void gareafile::ReadHPTFile(char* path, char* file, char* origin, int group) {
|
|||||||
switch(aa.type) {
|
switch(aa.type) {
|
||||||
case GMB_NET:
|
case GMB_NET:
|
||||||
aa.attr = attribsnet;
|
aa.attr = attribsnet;
|
||||||
if(*aa.basetype == '\0')
|
if (aa.basetype.empty())
|
||||||
aa.basetype = fidomsgtype;
|
aa.basetype = fidomsgtype;
|
||||||
AddNewArea(aa);
|
AddNewArea(aa);
|
||||||
break;
|
break;
|
||||||
case GMB_ECHO:
|
case GMB_ECHO:
|
||||||
aa.attr = attribsecho;
|
aa.attr = attribsecho;
|
||||||
if(*aa.basetype == '\0')
|
if (aa.basetype.empty())
|
||||||
aa.basetype = fidomsgtype;
|
aa.basetype = fidomsgtype;
|
||||||
AddNewArea(aa);
|
AddNewArea(aa);
|
||||||
break;
|
break;
|
||||||
case GMB_LOCAL:
|
case GMB_LOCAL:
|
||||||
aa.attr = attribslocal;
|
aa.attr = attribslocal;
|
||||||
if(*aa.basetype == '\0')
|
if (aa.basetype.empty())
|
||||||
aa.basetype = fidomsgtype;
|
aa.basetype = fidomsgtype;
|
||||||
AddNewArea(aa);
|
AddNewArea(aa);
|
||||||
break;
|
break;
|
||||||
|
@ -83,7 +83,7 @@ void gareafile::ReadAdeptXbbsFile(char* path, char* file, char* options) {
|
|||||||
break;
|
break;
|
||||||
case CRC_AREAEND:
|
case CRC_AREAEND:
|
||||||
aa.setechoid(*usenet ? usenet : name);
|
aa.setechoid(*usenet ? usenet : name);
|
||||||
if(streql(aa.basetype, "OPUS") or streql(aa.basetype, "FTS1"))
|
if ((aa.basetype == "OPUS") || (aa.basetype == "FTS1"))
|
||||||
aa.setpath(apath);
|
aa.setpath(apath);
|
||||||
else {
|
else {
|
||||||
sprintf(buf, "%s%s", apath, name);
|
sprintf(buf, "%s%s", apath, name);
|
||||||
|
@ -81,7 +81,7 @@ public:
|
|||||||
int areaid() const { return cfg.areaid; }
|
int areaid() const { return cfg.areaid; }
|
||||||
int groupid() const { return cfg.groupid; }
|
int groupid() const { return cfg.groupid; }
|
||||||
uint type() const { return cfg.type; }
|
uint type() const { return cfg.type; }
|
||||||
const char *basetype() const { return cfg.basetype; }
|
const std::string &basetype() const { return cfg.basetype; }
|
||||||
uint board() const { return cfg.board; }
|
uint board() const { return cfg.board; }
|
||||||
const ftn_addr& aka() const { return cfg.aka; }
|
const ftn_addr& aka() const { return cfg.aka; }
|
||||||
int originno() const { return cfg.originno; }
|
int originno() const { return cfg.originno; }
|
||||||
@ -104,6 +104,7 @@ public:
|
|||||||
void set_groupid(int g) { cfg.groupid = g; }
|
void set_groupid(int g) { cfg.groupid = g; }
|
||||||
void set_type(uint t) { cfg.type = t; }
|
void set_type(uint t) { cfg.type = t; }
|
||||||
void set_basetype(const char *m) { cfg.basetype = m; }
|
void set_basetype(const char *m) { cfg.basetype = m; }
|
||||||
|
void set_basetype(const std::string &m) { cfg.basetype = m; }
|
||||||
void set_board(uint b) { cfg.board = b; }
|
void set_board(uint b) { cfg.board = b; }
|
||||||
void set_aka(ftn_addr& a) { cfg.aka = a; }
|
void set_aka(ftn_addr& a) { cfg.aka = a; }
|
||||||
void set_originno(int o) { cfg.originno = o; }
|
void set_originno(int o) { cfg.originno = o; }
|
||||||
|
@ -139,7 +139,7 @@ protected:
|
|||||||
FidoWide* wide;
|
FidoWide* wide;
|
||||||
FidoData* data;
|
FidoData* data;
|
||||||
|
|
||||||
inline bool isopus() const { return streql(cfg.basetype, "OPUS"); }
|
inline bool isopus() const { return (cfg.basetype == "OPUS"); }
|
||||||
|
|
||||||
void data_open();
|
void data_open();
|
||||||
void data_close();
|
void data_close();
|
||||||
|
@ -55,6 +55,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <golded3.h>
|
#include <golded3.h>
|
||||||
|
#include <gmemdbg.h>
|
||||||
|
|
||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
// Config versions
|
// Config versions
|
||||||
|
@ -37,7 +37,7 @@ using namespace std;
|
|||||||
#include <gstrall.h>
|
#include <gstrall.h>
|
||||||
#include <gftnall.h>
|
#include <gftnall.h>
|
||||||
#include <golded3.h>
|
#include <golded3.h>
|
||||||
|
#include <gmemdbg.h>
|
||||||
|
|
||||||
int debug = false;
|
int debug = false;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user