Scope of recent changes.
This commit is contained in:
@@ -14,7 +14,7 @@ ifeq ($(TERM),cygwin)
|
||||
STDLIBS=-luser32 -lwinmm
|
||||
GLIBS+=glibc
|
||||
else
|
||||
ifeq ($(TERM),MSYS)
|
||||
ifeq ($(TERM),msys)
|
||||
STDLIBS=-luser32 -lwinmm
|
||||
GLIBS+=glibc
|
||||
endif
|
||||
|
@@ -105,41 +105,38 @@ void AreaList::Reset() {
|
||||
// ------------------------------------------------------------------
|
||||
// Return a new'ed area of the specified format
|
||||
|
||||
Area* AreaList::NewArea(int msgbase) {
|
||||
Area* AreaList::NewArea(const char *basetype) {
|
||||
|
||||
gmo_area* ap = NULL;
|
||||
switch(msgbase) {
|
||||
case MT_SEPARATOR: ap = new SepArea; break;
|
||||
case MT_FTS1:
|
||||
case MT_OPUS: ap = new FidoArea; break;
|
||||
#ifndef GMB_NOEZY
|
||||
case MT_EZYCOM: ap = new EzycomArea; break;
|
||||
#endif
|
||||
#ifndef GMB_NOGOLD
|
||||
case MT_GOLDBASE: ap = new GoldArea; break;
|
||||
#endif
|
||||
#ifndef GMB_NOHUDS
|
||||
case MT_HUDSON: ap = new HudsArea; break;
|
||||
#endif
|
||||
#ifndef GMB_NOJAM
|
||||
case MT_JAM: ap = new JamArea; break;
|
||||
#endif
|
||||
#ifndef GMB_NOPCB
|
||||
case MT_PCBOARD: ap = new PcbArea; break;
|
||||
#endif
|
||||
#ifndef GMB_NOSQSH
|
||||
case MT_SQUISH: ap = new SquishArea; break;
|
||||
#endif
|
||||
#ifndef GMB_NOWCAT
|
||||
case MT_WILDCAT: ap = new WCatArea; break;
|
||||
#endif
|
||||
#ifndef GMB_NOXBBS
|
||||
case MT_ADEPTXBBS: ap = new XbbsArea; break;
|
||||
#endif
|
||||
#ifndef GMB_NOSMB
|
||||
case MT_SMB: ap = new SMBArea; break;
|
||||
#endif
|
||||
}
|
||||
if(streql(basetype, "SEPARATOR")) ap = new SepArea;
|
||||
else if(streql(basetype, "FTS1") or streql(basetype, "OPUS")) ap = new FidoArea;
|
||||
#ifndef GMB_NOEZY
|
||||
else if(streql(basetype, "EZYCOM")) ap = new EzycomArea;
|
||||
#endif
|
||||
#ifndef GMB_NOGOLD
|
||||
else if(streql(basetype, "GOLDBASE")) ap = new GoldArea;
|
||||
#endif
|
||||
#ifndef GMB_NOHUDS
|
||||
else if(streql(basetype, "HUDSON")) ap = new HudsArea;
|
||||
#endif
|
||||
#ifndef GMB_NOJAM
|
||||
else if(streql(basetype, "JAM")) ap = new JamArea;
|
||||
#endif
|
||||
#ifndef GMB_NOPCB
|
||||
else if(streql(basetype, "PCBOARD")) ap = new PcbArea;
|
||||
#endif
|
||||
#ifndef GMB_NOSQSH
|
||||
else if(streql(basetype, "SQUISH")) ap = new SquishArea;
|
||||
#endif
|
||||
#ifndef GMB_NOWCAT
|
||||
else if(streql(basetype, "WILDCAT")) ap = new WCatArea;
|
||||
#endif
|
||||
#ifndef GMB_NOXBBS
|
||||
else if(streql(basetype, "ADEPTXBBS")) ap = new XbbsArea;
|
||||
#endif
|
||||
#ifndef GMB_NOSMB
|
||||
else if(streql(basetype, "SMB")) ap = new SMBArea;
|
||||
#endif
|
||||
return new Area(ap);
|
||||
}
|
||||
|
||||
@@ -265,7 +262,7 @@ void AreaList::WriteAreaDef(const char* file) {
|
||||
Path path;
|
||||
char groupid[10], echoid[sizeof(Echo)+2];
|
||||
int maxechoid=0, maxdesc=0, maxgroupid=0, maxpath=0, maxaddr=0, maxattr=0;
|
||||
char desc[sizeof(Desc)+2], type[6], msgbase[7], addr[40], attr[150], origin[163];
|
||||
char desc[sizeof(Desc)+2], type[6], msgbase[9], addr[40], attr[150], origin[163];
|
||||
|
||||
fp = fsopen(file, "wt", CFG->sharemode);
|
||||
if(fp) {
|
||||
@@ -318,37 +315,12 @@ void AreaList::WriteAreaDef(const char* file) {
|
||||
strcpy(type, "Echo ");
|
||||
else if((*aa)->islocal())
|
||||
strcpy(type, "Local");
|
||||
switch((*aa)->msgbase()) {
|
||||
case MT_OPUS: strcpy(msgbase, "Opus "); break;
|
||||
case MT_FTS1: strcpy(msgbase, "Fts1 "); break;
|
||||
#ifndef GMB_NOHUDS
|
||||
case MT_HUDSON: strcpy(msgbase, "Hudson"); break;
|
||||
#endif
|
||||
#ifndef GMB_NOGOLD
|
||||
case MT_GOLDBASE: strcpy(msgbase, "Gold "); break;
|
||||
#endif
|
||||
#ifndef GMB_NOSQSH
|
||||
case MT_SQUISH: strcpy(msgbase, "Squish"); break;
|
||||
#endif
|
||||
#ifndef GMB_NOEZY
|
||||
case MT_EZYCOM: strcpy(msgbase, "Ezycom"); break;
|
||||
#endif
|
||||
#ifndef GMB_NOJAM
|
||||
case MT_JAM: strcpy(msgbase, "Jam "); break;
|
||||
#endif
|
||||
#ifndef GMB_NOPCB
|
||||
case MT_PCBOARD: strcpy(msgbase, "Pcb "); break;
|
||||
#endif
|
||||
#ifndef GMB_NOWCAT
|
||||
case MT_WILDCAT: strcpy(msgbase, "WCat "); break;
|
||||
#endif
|
||||
#ifndef GMB_NOXBBS
|
||||
case MT_ADEPTXBBS: strcpy(msgbase, "XBBS "); break;
|
||||
#endif
|
||||
#ifndef GMB_NOSMB
|
||||
case MT_SMB: strcpy(msgbase, "SMB "); break;
|
||||
#endif
|
||||
}
|
||||
#ifndef GMB_NOXBBS
|
||||
if(streql((*aa)->basetype(), "ADEPTXBBS"))
|
||||
strcpy(msgbase, "XBBS");
|
||||
else
|
||||
#endif
|
||||
strxcpy(msgbase, (*aa)->basetype(), sizeof(msgbase));
|
||||
if(strchr((*aa)->echoid(), ' '))
|
||||
sprintf(echoid, "\"%s\"", (*aa)->echoid());
|
||||
else
|
||||
@@ -419,11 +391,12 @@ void AreaList::SetAreaDesc(char* echoid, char* desc) {
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
|
||||
#ifndef GMB_NOPCB
|
||||
void PcbAdjustArea(uint rec, const char* msgfile) {
|
||||
|
||||
for(uint n=0; n<AL.size(); n++) {
|
||||
Area* a = AL[n];
|
||||
if(a->ispcboard()) {
|
||||
if(streql(a->basetype(), "PCBOARD")) {
|
||||
if((a->board() == rec) and (*a->path() == NUL)) {
|
||||
a->set_path(msgfile);
|
||||
break;
|
||||
@@ -435,6 +408,7 @@ void PcbAdjustArea(uint rec, const char* msgfile) {
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
|
@@ -39,11 +39,11 @@ void FixEchoid(char* echoid, int type) {
|
||||
|
||||
if(*echoid == NUL) {
|
||||
const char* t = CFG->areaautoid == AUTOID_LONG ? "MAIL" : "";
|
||||
if(type & AT_NET)
|
||||
if(type & GMB_NET)
|
||||
sprintf(echoid, "NET%s%03u", t, netnum++);
|
||||
else if(type & AT_ECHO)
|
||||
else if(type & GMB_ECHO)
|
||||
sprintf(echoid, "ECHO%s%03u", t, echonum++);
|
||||
else if(type & AT_LOCAL)
|
||||
else if(type & GMB_LOCAL)
|
||||
sprintf(echoid, "LOCAL%03u", localnum++);
|
||||
}
|
||||
}
|
||||
@@ -111,14 +111,14 @@ void CheckEMailOrNews(char* echoid, uint& type) {
|
||||
|
||||
for(i = CFG->areaisemail.begin(); i != CFG->areaisemail.end(); i++) {
|
||||
if(strwild(echoid, i->c_str())) {
|
||||
type = AT_EMAIL | AT_NET;
|
||||
type = GMB_EMAIL | GMB_NET;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for(i = CFG->areaisnews.begin(); i != CFG->areaisnews.end(); i++) {
|
||||
if(strwild(echoid, i->c_str())) {
|
||||
type = AT_NEWSGROUP | AT_ECHO;
|
||||
type = GMB_NEWSGROUP | GMB_ECHO;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -150,7 +150,7 @@ void AreaList::AddNewArea(AreaCfg* aa) {
|
||||
|
||||
if(veryverbose) {
|
||||
std::string temp;
|
||||
std::cout << " fmt=" << aa->msgbase << ", eid=\"" << aa->echoid <<
|
||||
std::cout << " fmt=" << aa->basetype << ", eid=\"" << aa->echoid <<
|
||||
"\", pth=\"" << aa->path << "\", brd=" << aa->board <<
|
||||
", gid=" << aa->groupid << ", aka=" << aa->aka.make_string(temp);
|
||||
std::cout << " " << aa->attr.make_string(temp) << std::endl;
|
||||
@@ -165,93 +165,96 @@ void AreaList::AddNewArea(AreaCfg* aa) {
|
||||
*desc = NUL;
|
||||
|
||||
// Make sure the path field is 100% correct for the msgbase
|
||||
switch(aa->msgbase) {
|
||||
case MT_FTS1:
|
||||
case MT_OPUS:
|
||||
if(*aa->path == NUL)
|
||||
return;
|
||||
MapPath(aa->path);
|
||||
AddBackslash(aa->path);
|
||||
strschg_environ(aa->path);
|
||||
break;
|
||||
#ifndef GMB_NOHUDS
|
||||
case MT_HUDSON:
|
||||
if((aa->board < 1) or (aa->board > 200)) // Ignore areas with invalid numbers
|
||||
return;
|
||||
sprintf(aa->path, "%u", aa->board);
|
||||
break;
|
||||
#endif
|
||||
#ifndef GMB_NOGOLD
|
||||
case MT_GOLDBASE:
|
||||
if((aa->board < 1) or (aa->board > 500)) // Ignore areas with invalid numbers
|
||||
return;
|
||||
sprintf(aa->path, "%u", aa->board);
|
||||
break;
|
||||
#endif
|
||||
#ifndef GMB_NOEZY
|
||||
case MT_EZYCOM:
|
||||
// Ignore areas with invalid numbers
|
||||
if((aa->board < 1) or (aa->board > 1536))
|
||||
return;
|
||||
sprintf(aa->path, "%u", aa->board);
|
||||
break;
|
||||
#endif
|
||||
#ifndef GMB_NOWCAT
|
||||
case MT_WILDCAT:
|
||||
if(*aa->path == NUL)
|
||||
return;
|
||||
MapPath(aa->path);
|
||||
StripBackslash(aa->path);
|
||||
strschg_environ(aa->path);
|
||||
break;
|
||||
#endif
|
||||
#ifndef GMB_NOXBBS
|
||||
case MT_ADEPTXBBS:
|
||||
if(*aa->path == NUL)
|
||||
return;
|
||||
MapPath(aa->path);
|
||||
StripBackslash(aa->path);
|
||||
strschg_environ(aa->path);
|
||||
break;
|
||||
#endif
|
||||
#ifndef GMB_NOSQSH
|
||||
case MT_SQUISH:
|
||||
#endif
|
||||
#ifndef GMB_NOJAM
|
||||
case MT_JAM:
|
||||
#endif
|
||||
#if !defined(GMB_NOJAM) || !defined(GMB_NOSQSH)
|
||||
if(*aa->path == NUL)
|
||||
return;
|
||||
MapPath(aa->path);
|
||||
StripBackslash(aa->path);
|
||||
strschg_environ(aa->path);
|
||||
break;
|
||||
#endif
|
||||
#ifndef GMB_NOPCB
|
||||
case MT_PCBOARD:
|
||||
MapPath(aa->path);
|
||||
StripBackslash(aa->path);
|
||||
strschg_environ(aa->path);
|
||||
break;
|
||||
#endif
|
||||
#ifndef GMB_NOSMB
|
||||
case MT_SMB:
|
||||
if(*aa->path == NUL)
|
||||
return;
|
||||
MapPath(aa->path);
|
||||
StripBackslash(aa->path);
|
||||
strschg_environ(aa->path);
|
||||
break;
|
||||
#endif
|
||||
case MT_SEPARATOR:
|
||||
break;
|
||||
default:
|
||||
if(streql(aa->basetype, "FTS1") or streql(aa->basetype, "OPUS")) {
|
||||
if(*aa->path == NUL)
|
||||
return;
|
||||
MapPath(aa->path);
|
||||
AddBackslash(aa->path);
|
||||
strschg_environ(aa->path);
|
||||
}
|
||||
#ifndef GMB_NOHUDS
|
||||
else if(streql(aa->basetype, "HUDSON")) {
|
||||
if((aa->board < 1) or (aa->board > 200)) // Ignore areas with invalid numbers
|
||||
return;
|
||||
sprintf(aa->path, "%u", aa->board);
|
||||
}
|
||||
#endif
|
||||
#ifndef GMB_NOGOLD
|
||||
else if(streql(aa->basetype, "GOLDBASE")) {
|
||||
if((aa->board < 1) or (aa->board > 500)) // Ignore areas with invalid numbers
|
||||
return;
|
||||
sprintf(aa->path, "%u", aa->board);
|
||||
}
|
||||
#endif
|
||||
#ifndef GMB_NOEZY
|
||||
else if(streql(aa->basetype, "EZYCOM")) {
|
||||
// Ignore areas with invalid numbers
|
||||
if((aa->board < 1) or (aa->board > 1536))
|
||||
return;
|
||||
sprintf(aa->path, "%u", aa->board);
|
||||
}
|
||||
#endif
|
||||
#ifndef GMB_NOWCAT
|
||||
else if(streql(aa->basetype, "WILDCAT")) {
|
||||
if(*aa->path == NUL)
|
||||
return;
|
||||
MapPath(aa->path);
|
||||
StripBackslash(aa->path);
|
||||
strschg_environ(aa->path);
|
||||
}
|
||||
#endif
|
||||
#ifndef GMB_NOXBBS
|
||||
else if(streql(aa->basetype, "ADEPTXBBS")) {
|
||||
if(*aa->path == NUL)
|
||||
return;
|
||||
MapPath(aa->path);
|
||||
StripBackslash(aa->path);
|
||||
strschg_environ(aa->path);
|
||||
}
|
||||
#endif
|
||||
#ifndef GMB_NOSQSH
|
||||
else if(streql(aa->basetype, "SQUISH")) {
|
||||
if(*aa->path == NUL)
|
||||
return;
|
||||
MapPath(aa->path);
|
||||
StripBackslash(aa->path);
|
||||
strschg_environ(aa->path);
|
||||
}
|
||||
#endif
|
||||
#ifndef GMB_NOJAM
|
||||
else if(streql(aa->basetype, "JAM")) {
|
||||
if(*aa->path == NUL)
|
||||
return;
|
||||
MapPath(aa->path);
|
||||
StripBackslash(aa->path);
|
||||
strschg_environ(aa->path);
|
||||
}
|
||||
#endif
|
||||
#ifndef GMB_NOPCB
|
||||
else if(streql(aa->basetype, "PCBOARD")) {
|
||||
MapPath(aa->path);
|
||||
StripBackslash(aa->path);
|
||||
strschg_environ(aa->path);
|
||||
}
|
||||
#endif
|
||||
#ifndef GMB_NOSMB
|
||||
else if(streql(aa->basetype, "SMB")) {
|
||||
if(*aa->path == NUL)
|
||||
return;
|
||||
MapPath(aa->path);
|
||||
StripBackslash(aa->path);
|
||||
strschg_environ(aa->path);
|
||||
}
|
||||
#endif
|
||||
else if(streql(aa->basetype, "SEPARATOR")) {
|
||||
}
|
||||
else {
|
||||
return;
|
||||
}
|
||||
|
||||
// Note msgbase type
|
||||
msgbases |= aa->msgbase;
|
||||
if(not find(basetypes, aa->basetype))
|
||||
basetypes.push_back(aa->basetype);
|
||||
|
||||
// Things to do for real areas only
|
||||
if(not aa->isseparator()) {
|
||||
@@ -296,10 +299,11 @@ void AreaList::AddNewArea(AreaCfg* aa) {
|
||||
break;
|
||||
}
|
||||
else if(not (*ap)->isseparator()) {
|
||||
int eq_path = strieql(aa->path, (*ap)->path());
|
||||
int eq_board = (aa->board == (*ap)->board());
|
||||
int eq_msgbase = (aa->msgbase == (*ap)->msgbase());
|
||||
int eq_isfido = (aa->isfido() and (*ap)->isfido());
|
||||
bool eq_path = strieql(aa->path, (*ap)->path());
|
||||
bool eq_board = (aa->board == (*ap)->board());
|
||||
bool eq_msgbase = streql(aa->basetype, (*ap)->basetype());
|
||||
bool eq_isfido = ((streql(aa->basetype, "OPUS") or streql(aa->basetype, "FTS1"))
|
||||
and (streql((*ap)->basetype(), "OPUS") or streql((*ap)->basetype(), "FTS1")));
|
||||
if(eq_path and eq_board and (eq_msgbase or eq_isfido)) {
|
||||
// We had it already, so override with the new data
|
||||
newarea = false;
|
||||
@@ -321,7 +325,7 @@ void AreaList::AddNewArea(AreaCfg* aa) {
|
||||
|
||||
// Increase area index size if new area
|
||||
if(newarea) {
|
||||
idx.push_back(NewArea(aa->msgbase));
|
||||
idx.push_back(NewArea(aa->basetype));
|
||||
throw_new(idx[_currarea]);
|
||||
ap = idx.end(); --ap;
|
||||
}
|
||||
@@ -348,7 +352,7 @@ void AreaList::AddNewArea(AreaCfg* aa) {
|
||||
(*ap)->set_echoid(aa->echoid);
|
||||
(*ap)->set_path(aa->path);
|
||||
(*ap)->set_board(aa->board);
|
||||
(*ap)->set_msgbase(aa->msgbase);
|
||||
(*ap)->set_basetype(aa->basetype);
|
||||
}
|
||||
(*ap)->set_desc(newarea or strblank(desc) ? aa->desc : desc);
|
||||
(*ap)->set_areaid(aa->areaid);
|
||||
@@ -473,81 +477,81 @@ void AreaList::GetArea(char* def) {
|
||||
switch(toupper(*base)) { // Store area info
|
||||
|
||||
case '-':
|
||||
aa.msgbase = MT_SEPARATOR;
|
||||
aa.basetype = "SEPARATOR";
|
||||
break;
|
||||
|
||||
case 'M':
|
||||
aa.msgbase = MT_SQUISH;
|
||||
aa.basetype = "SQUISH";
|
||||
aa.setpath(loc);
|
||||
break;
|
||||
|
||||
case 'Y':
|
||||
aa.msgbase = MT_SMB;
|
||||
aa.basetype = "SMB";
|
||||
aa.setpath(loc);
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
case 'R':
|
||||
case 'Q':
|
||||
aa.msgbase = MT_HUDSON;
|
||||
aa.basetype = "HUDSON";
|
||||
aa.board = (uint) atoi(loc);
|
||||
break;
|
||||
|
||||
case 'G':
|
||||
aa.msgbase = MT_GOLDBASE;
|
||||
aa.basetype = "GOLDBASE";
|
||||
aa.board = (uint) atoi(loc);
|
||||
break;
|
||||
|
||||
case 'E':
|
||||
aa.msgbase = MT_EZYCOM;
|
||||
aa.basetype = "EZYCOM";
|
||||
aa.board = (uint) atoi(loc);
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
aa.msgbase = MT_JAM;
|
||||
aa.basetype = "JAM";
|
||||
aa.setpath(loc);
|
||||
break;
|
||||
|
||||
case 'P':
|
||||
aa.msgbase = MT_PCBOARD;
|
||||
aa.basetype = "PCBOARD";
|
||||
aa.setpath(loc);
|
||||
break;
|
||||
|
||||
case 'W':
|
||||
aa.msgbase = MT_WILDCAT;
|
||||
aa.basetype = "WILDCAT";
|
||||
aa.setpath(loc);
|
||||
break;
|
||||
|
||||
case 'X':
|
||||
aa.msgbase = MT_ADEPTXBBS;
|
||||
aa.basetype = "ADEPTXBBS";
|
||||
aa.setpath(loc);
|
||||
break;
|
||||
|
||||
case 'S':
|
||||
aa.msgbase = MT_FTS1;
|
||||
aa.basetype = "FTS1";
|
||||
aa.setpath(loc);
|
||||
break;
|
||||
|
||||
case 'F':
|
||||
case 'O':
|
||||
default:
|
||||
aa.msgbase = MT_OPUS;
|
||||
aa.basetype = "OPUS";
|
||||
aa.setpath(loc);
|
||||
}
|
||||
|
||||
aa.type = AT_ECHO;
|
||||
aa.type = GMB_ECHO;
|
||||
aa.attr = CFG->attribsecho;
|
||||
strupr(base);
|
||||
if(strchr(base, 'N')) {
|
||||
aa.type = AT_NET;
|
||||
aa.type = GMB_NET;
|
||||
aa.attr = CFG->attribsnet;
|
||||
}
|
||||
if(strchr(base, 'L')) {
|
||||
aa.type = AT_LOCAL;
|
||||
aa.type = GMB_LOCAL;
|
||||
aa.attr = CFG->attribslocal;
|
||||
}
|
||||
if(strchr(base, 'E')) {
|
||||
aa.type = AT_ECHO;
|
||||
aa.type = GMB_ECHO;
|
||||
aa.attr = CFG->attribsecho;
|
||||
}
|
||||
if(attr) { // Get attributes and AKAs
|
||||
@@ -607,23 +611,23 @@ bool AreaList::GetAreaFirstPart(AreaCfg& aa, char*& key, char*& val) {
|
||||
word crc = getkeyvalcrc(&key, &val);
|
||||
switch(crc) {
|
||||
case CRC_NET:
|
||||
aa.type = AT_NET;
|
||||
aa.type = GMB_NET;
|
||||
aa.attr = CFG->attribsnet;
|
||||
break;
|
||||
case CRC_ECHO:
|
||||
aa.type = AT_ECHO;
|
||||
aa.type = GMB_ECHO;
|
||||
aa.attr = CFG->attribsecho;
|
||||
break;
|
||||
case CRC_LOCAL:
|
||||
aa.type = AT_LOCAL;
|
||||
aa.type = GMB_LOCAL;
|
||||
aa.attr = CFG->attribslocal;
|
||||
break;
|
||||
case CRC_EMAIL:
|
||||
aa.type = AT_EMAIL | AT_NET;
|
||||
aa.type = GMB_EMAIL | GMB_NET;
|
||||
aa.attr = CFG->attribsemail;
|
||||
break;
|
||||
case CRC_NEWS:
|
||||
aa.type = AT_NEWSGROUP | AT_ECHO;
|
||||
aa.type = GMB_NEWSGROUP | GMB_ECHO;
|
||||
aa.attr = CFG->attribsnews;
|
||||
break;
|
||||
default:
|
||||
@@ -642,7 +646,7 @@ void AreaList::GetAreaSep(char* val) {
|
||||
AreaCfg aa;
|
||||
|
||||
aa.reset();
|
||||
aa.msgbase = MT_SEPARATOR;
|
||||
aa.basetype = "SEPARATOR";
|
||||
|
||||
if(not GetAreaFirstPart(aa, key, val))
|
||||
return;
|
||||
@@ -695,22 +699,22 @@ void AreaList::GetAreaDef(char* val) {
|
||||
getkeyval(&key, &val); // Get path/board
|
||||
switch(crc) {
|
||||
case CRC_SEP:
|
||||
aa.msgbase = MT_SEPARATOR;
|
||||
aa.basetype = "SEPARATOR";
|
||||
break;
|
||||
case CRC_FIDO:
|
||||
case CRC_OPUS:
|
||||
case CRC_SDMSG:
|
||||
aa.msgbase = MT_OPUS;
|
||||
aa.basetype = "OPUS";
|
||||
aa.setpath(key);
|
||||
break;
|
||||
case CRC_FTS1:
|
||||
case CRC_FTSC:
|
||||
aa.msgbase = MT_FTS1;
|
||||
aa.basetype = "FTS1";
|
||||
aa.setpath(key);
|
||||
break;
|
||||
case CRC_QBBS:
|
||||
case CRC_HUDSON:
|
||||
aa.msgbase = MT_HUDSON;
|
||||
aa.basetype = "HUDSON";
|
||||
aa.board = (uint) atoi(key);
|
||||
if((aa.board < 1) or (aa.board > 200)) {
|
||||
return;
|
||||
@@ -718,40 +722,40 @@ void AreaList::GetAreaDef(char* val) {
|
||||
break;
|
||||
case CRC_GOLD:
|
||||
case CRC_GOLDBASE:
|
||||
aa.msgbase = MT_GOLDBASE;
|
||||
aa.basetype = "GOLDBASE";
|
||||
aa.board = atoi(key);
|
||||
if((aa.board < 1) or (aa.board > 500)) {
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case CRC_SQUISH:
|
||||
aa.msgbase = MT_SQUISH;
|
||||
aa.basetype = "SQUISH";
|
||||
aa.setpath(key);
|
||||
break;
|
||||
case CRC_SMB:
|
||||
aa.msgbase = MT_SMB;
|
||||
aa.basetype = "SMB";
|
||||
aa.setpath(key);
|
||||
break;
|
||||
case CRC_EZYCOM:
|
||||
aa.msgbase = MT_EZYCOM;
|
||||
aa.basetype = "EZYCOM";
|
||||
aa.board = atoi(key);
|
||||
break;
|
||||
case CRC_JAM:
|
||||
aa.msgbase = MT_JAM;
|
||||
aa.basetype = "JAM";
|
||||
aa.setpath(key);
|
||||
break;
|
||||
case CRC_PCB:
|
||||
case CRC_PCBOARD:
|
||||
aa.msgbase = MT_PCBOARD;
|
||||
aa.basetype = "PCBOARD";
|
||||
aa.setpath(key);
|
||||
break;
|
||||
case CRC_WCAT:
|
||||
case CRC_WILDCAT:
|
||||
aa.msgbase = MT_WILDCAT;
|
||||
aa.basetype = "WILDCAT";
|
||||
aa.setpath(key);
|
||||
break;
|
||||
case CRC_XBBS:
|
||||
aa.msgbase = MT_ADEPTXBBS;
|
||||
aa.basetype = "ADEPTXBBS";
|
||||
aa.setpath(key);
|
||||
break;
|
||||
default:
|
||||
|
@@ -450,19 +450,19 @@ int InstallFinish() {
|
||||
fprintf(fp, "ADDRESS %s\n", buf);
|
||||
CfgAddress(buf);
|
||||
}
|
||||
if(AL.msgbases == 0) {
|
||||
if(AL.basetypes.empty()) {
|
||||
if(EnterString("Please enter the path to your *.msg netmail area:", buf, sizeof(buf)))
|
||||
return -1;
|
||||
fprintf(fp, "AREADEF NETMAIL \"Netmail\" 0 Net Opus %s\n", buf);
|
||||
AreaCfg aa;
|
||||
aa.reset();
|
||||
aa.setdesc("Netmail");
|
||||
aa.setechoid("NETMAIL");
|
||||
aa.msgbase = MT_OPUS;
|
||||
aa.type = AT_NET;
|
||||
aa.basetype = "OPUS";
|
||||
aa.type = GMB_NET;
|
||||
aa.setpath(buf);
|
||||
aa.attr = CFG->attribsnet;
|
||||
AL.AddNewArea(&aa);
|
||||
fprintf(fp, "AREADEF %s \"%s\" 0 Net %s %s\n", aa.desc, aa.echoid, aa.basetype, buf);
|
||||
if(EnterString("Please enter the path *and* filename of your areas.bbs file:", buf, sizeof(buf)))
|
||||
goto install_terminated;
|
||||
fprintf(fp, "AREAFILE AreasBBS %s\n", buf);
|
||||
@@ -471,7 +471,7 @@ int InstallFinish() {
|
||||
AL.GetAreafile(buf2);
|
||||
}
|
||||
#ifndef GMB_NOHUDS
|
||||
if((AL.msgbases & MT_HUDSON) and (*CFG->hudsonpath == NUL)) {
|
||||
if(find(AL.basetypes, "HUDSON") and (*CFG->hudsonpath == NUL)) {
|
||||
if(EnterString("Please enter the path to your Hudson msgbase files:", buf, sizeof(buf)))
|
||||
goto install_terminated;
|
||||
fprintf(fp, "HUDSONPATH %s\n", buf);
|
||||
@@ -479,7 +479,7 @@ int InstallFinish() {
|
||||
}
|
||||
#endif
|
||||
#ifndef GMB_NOGOLD
|
||||
if((AL.msgbases & MT_GOLDBASE) and (*CFG->goldbasepath == NUL)) {
|
||||
if(find(AL.basetypes, "GOLDBASE") and (*CFG->goldbasepath == NUL)) {
|
||||
if(EnterString("Please enter the path to your Goldbase msgbase files:", buf, sizeof(buf)))
|
||||
goto install_terminated;
|
||||
fprintf(fp, "GOLDBASEPATH %s\n", buf);
|
||||
@@ -487,7 +487,7 @@ int InstallFinish() {
|
||||
}
|
||||
#endif
|
||||
#ifndef GMB_NOJAM
|
||||
if((AL.msgbases & MT_JAM) and (*CFG->jampath == NUL)) {
|
||||
if(find(AL.basetypes, "JAM") and (*CFG->jampath == NUL)) {
|
||||
if(EnterString("Please enter the path where net/echomail.jam can be placed:", buf, sizeof(buf)))
|
||||
goto install_terminated;
|
||||
fprintf(fp, "JAMPATH %s\n", buf);
|
||||
@@ -495,7 +495,7 @@ int InstallFinish() {
|
||||
}
|
||||
#endif
|
||||
#ifndef GMB_NOPCB
|
||||
if((AL.msgbases & MT_PCBOARD) and (*CFG->pcboardpath == NUL)) {
|
||||
if(find(AL.basetypes, "PCBOARD") and (*CFG->pcboardpath == NUL)) {
|
||||
if(EnterString("Please enter the path to PCBoard:", buf, sizeof(buf)))
|
||||
goto install_terminated;
|
||||
fprintf(fp, "PCBOARDPATH %s\n", buf);
|
||||
@@ -717,7 +717,7 @@ CfgGed::CfgGed() {
|
||||
encodeemailheaders = true;
|
||||
externoptions = EXTUTIL_CLS | EXTUTIL_CURSOR | EXTUTIL_RELOAD | EXTUTIL_PAUSEONERROR | EXTUTIL_KEEPCTRL;
|
||||
ezycomuserno = 0;
|
||||
fidomsgtype = MT_OPUS;
|
||||
fidomsgtype = "OPUS";
|
||||
fidouserno = 0;
|
||||
forcetemplate = false;
|
||||
frqoptions = FREQ_FROMTOP;
|
||||
@@ -840,11 +840,11 @@ CfgGed::CfgGed() {
|
||||
disphdrnodeset.pos = 44;
|
||||
|
||||
// unsorted structures
|
||||
areatypeorder[AT_NET] = 1;
|
||||
areatypeorder[AT_NET|AT_EMAIL] = 2;
|
||||
areatypeorder[AT_ECHO] = 3;
|
||||
areatypeorder[AT_ECHO|AT_NEWSGROUP] = 4;
|
||||
areatypeorder[AT_LOCAL] = 5;
|
||||
areatypeorder[GMB_NET] = 1;
|
||||
areatypeorder[GMB_NET|GMB_EMAIL] = 2;
|
||||
areatypeorder[GMB_ECHO] = 3;
|
||||
areatypeorder[GMB_ECHO|GMB_NEWSGROUP] = 4;
|
||||
areatypeorder[GMB_LOCAL] = 5;
|
||||
if(gvid->adapter & V_MONO)
|
||||
memcpy(color, gold_mono1, sizeof(color));
|
||||
else
|
||||
|
@@ -845,7 +845,7 @@ int ReadCfg(const char* cfgfile, int ignoreunknown) {
|
||||
*ptr = NUL;
|
||||
Area* ap = AL.AreaEchoToPtr(buf2);
|
||||
if(ap)
|
||||
ap->set_type(ap->isnet() ? AT_SOUP|AT_EMAIL|AT_NET : AT_SOUP|AT_NEWSGROUP|AT_ECHO);
|
||||
ap->set_type(ap->isnet() ? GMB_SOUP|GMB_EMAIL|GMB_NET : GMB_SOUP|GMB_NEWSGROUP|GMB_ECHO);
|
||||
}
|
||||
}
|
||||
gfp.fclose();
|
||||
@@ -854,14 +854,14 @@ int ReadCfg(const char* cfgfile, int ignoreunknown) {
|
||||
if(*CFG->soupemail) {
|
||||
Area* ap = AL.AreaEchoToPtr(buf);
|
||||
if(ap)
|
||||
ap->set_type(AT_SOUP|AT_EMAIL|AT_NET);
|
||||
ap->set_type(GMB_SOUP|GMB_EMAIL|GMB_NET);
|
||||
}
|
||||
|
||||
std::vector<MailList>::iterator z;
|
||||
for(z = CFG->mailinglist.begin(); z != CFG->mailinglist.end(); z++) {
|
||||
Area* ap = AL.AreaEchoToPtr(z->echoid);
|
||||
if(ap)
|
||||
ap->set_type(AT_SOUP|AT_EMAIL|AT_NET);
|
||||
ap->set_type(GMB_SOUP|GMB_EMAIL|GMB_NET);
|
||||
}
|
||||
|
||||
// Mark all QWK areas
|
||||
@@ -871,7 +871,7 @@ int ReadCfg(const char* cfgfile, int ignoreunknown) {
|
||||
do {
|
||||
Area* ap = AL.AreaEchoToPtr(buf);
|
||||
if(ap)
|
||||
ap->set_type(ap->type() | AT_QWK);
|
||||
ap->set_type(ap->type() | GMB_QWK);
|
||||
} while(QWK->NextConf());
|
||||
}
|
||||
} while(QWK->NextBBS());
|
||||
|
@@ -113,11 +113,11 @@ void CfgAreatypeorder() {
|
||||
if(t.First(val)) {
|
||||
do {
|
||||
switch(strCrc16(t.Token())) {
|
||||
case CRC_NET: CFG->areatypeorder[AT_NET] = order; break;
|
||||
case CRC_EMAIL: CFG->areatypeorder[AT_NET|AT_EMAIL] = order; break;
|
||||
case CRC_ECHO: CFG->areatypeorder[AT_ECHO] = order; break;
|
||||
case CRC_NEWS: CFG->areatypeorder[AT_ECHO|AT_NEWSGROUP] = order; break;
|
||||
case CRC_LOCAL: CFG->areatypeorder[AT_LOCAL] = order; break;
|
||||
case CRC_NET: CFG->areatypeorder[GMB_NET] = order; break;
|
||||
case CRC_EMAIL: CFG->areatypeorder[GMB_NET|GMB_EMAIL] = order; break;
|
||||
case CRC_ECHO: CFG->areatypeorder[GMB_ECHO] = order; break;
|
||||
case CRC_NEWS: CFG->areatypeorder[GMB_ECHO|GMB_NEWSGROUP] = order; break;
|
||||
case CRC_LOCAL: CFG->areatypeorder[GMB_LOCAL] = order; break;
|
||||
}
|
||||
order++;
|
||||
} while(t.Next());
|
||||
|
@@ -196,9 +196,9 @@ void CfgFidolastread() {
|
||||
void CfgFidomsgtype() {
|
||||
|
||||
if(striinc("FTS", val))
|
||||
CFG->fidomsgtype = MT_FTS1;
|
||||
CFG->fidomsgtype = "FTS1";
|
||||
else
|
||||
CFG->fidomsgtype = MT_OPUS;
|
||||
CFG->fidomsgtype = "OPUS";
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
|
@@ -34,22 +34,22 @@ AreaList AL;
|
||||
|
||||
int AreaTypeOrder[17] = {
|
||||
0,
|
||||
1, // AT_NET
|
||||
2, // AT_EMAIL
|
||||
3, // AT_NET | AT_EMAIL
|
||||
4, // AT_ECHO
|
||||
1, // GMB_NET
|
||||
2, // GMB_EMAIL
|
||||
3, // GMB_NET | GMB_EMAIL
|
||||
4, // GMB_ECHO
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8, // AT_NEWSGROUP
|
||||
8, // GMB_NEWSGROUP
|
||||
9,
|
||||
10,
|
||||
11,
|
||||
12, // AT_ECHO | AT_NEWSGROUP
|
||||
12, // GMB_ECHO | GMB_NEWSGROUP
|
||||
13,
|
||||
14,
|
||||
15,
|
||||
16 // AT_LOCAL
|
||||
16 // GMB_LOCAL
|
||||
};
|
||||
|
||||
|
||||
@@ -274,14 +274,12 @@ extern "C" int AreaListCmp(const Area** __a, const Area** __b) {
|
||||
if(A->isseparator() and B->isseparator())
|
||||
break;
|
||||
else if(A->isseparator()) {
|
||||
if(B->msgbase())
|
||||
return sepfirst?-1:1;
|
||||
return sepfirst?-1:1;
|
||||
}
|
||||
else if(B->isseparator()) {
|
||||
if(A->msgbase())
|
||||
return sepfirst?1:-1;
|
||||
return sepfirst?1:-1;
|
||||
}
|
||||
else if((cmp = compare_two(A->msgbase(), B->msgbase())) != 0)
|
||||
else if((cmp = strcmp(A->basetype(), B->basetype())) != 0)
|
||||
return cmp;
|
||||
break;
|
||||
case 'Y':
|
||||
|
@@ -213,7 +213,7 @@ public:
|
||||
Ezycom ezycom;
|
||||
int ezycomuserno;
|
||||
Path fidolastread; // lastread;
|
||||
int fidomsgtype;
|
||||
const char *fidomsgtype;
|
||||
Path fidouserlist;
|
||||
int fidouserno; // lastreaduser;
|
||||
std::vector<FileAlias> filealias;
|
||||
|
@@ -118,10 +118,10 @@ void Area::DeleteMsg(GMsg* msg, int direction) {
|
||||
DelMsg(msg);
|
||||
|
||||
// Update scanning files
|
||||
if(isnet() and isfido())
|
||||
if(isnet())
|
||||
TouchNetscan(false);
|
||||
|
||||
if(not issmb() and not iswildcat() and not (isjam() and not CFG->switches.get(jamharddelete))) {
|
||||
if(issoftdelete()) {
|
||||
// Remove message from internal table
|
||||
Msgn.Del(msg->msgno);
|
||||
}
|
||||
@@ -460,9 +460,8 @@ void CmfMsgs(GMsg* msg) {
|
||||
msg->link.reset();
|
||||
|
||||
// Fake Scn-Attribute if copied to squisharea
|
||||
if(AA->issquish() and not AAorig->issquish())
|
||||
if(msg->attr.loc() and msg->attr.snt())
|
||||
msg->attr.scn1();
|
||||
if(msg->attr.loc() and msg->attr.snt())
|
||||
msg->attr.scn1();
|
||||
|
||||
if(AA->Areacopyaddid() and not AA->isnet()) {
|
||||
char* ptr = msg->txt + (*msg->txt == CTRL_A);
|
||||
@@ -480,7 +479,7 @@ void CmfMsgs(GMsg* msg) {
|
||||
bool need_fmpt = true;
|
||||
bool need_topt = true;
|
||||
|
||||
if(not need_netmail_kludges and AAorig->issquish() and not AAdest->issquish() and AAdest->isnet() and AAorig->isnet()) {
|
||||
if(not need_netmail_kludges and streql(AAorig->basetype(), "SQUISH") and strcmp(AAdest->basetype(), "SQUISH") and AAdest->isnet() and AAorig->isnet()) {
|
||||
if(msg->orig.point and not strstr(msg->txt, "\001FMPT"))
|
||||
need_netmail_kludges = true;
|
||||
else
|
||||
|
@@ -85,7 +85,7 @@ void MakeFlags(GMsg* msg, Line** line, char* buf) {
|
||||
// The FrontDoor FLAGS netmail kludge
|
||||
if(CFG->switches.get(useflags)) {
|
||||
sprintf(buf, "\001FLAGS ");
|
||||
if(AA->ishudson()) {
|
||||
if(streql(AA->basetype(), "HUDSON")) {
|
||||
if(msg->attr.hld())
|
||||
strcat(buf, "HLD ");
|
||||
if(msg->attr.frq())
|
||||
@@ -338,7 +338,7 @@ void DoKludges(int mode, GMsg* msg, int kludges) {
|
||||
msg->orig.make_string(buf2, msg->odom);
|
||||
sprintf(msg->msgids, "%s %08lx", buf2, getMsgId());
|
||||
}
|
||||
if(CFG->switches.get(usemsgid) and not AA->ispcboard()) {
|
||||
if(CFG->switches.get(usemsgid) and strcmp(AA->basetype(), "PCBOARD")) {
|
||||
sprintf(buf, "\001MSGID: %s", msg->msgids);
|
||||
line = AddKludge(line, buf);
|
||||
line->kludge = GKLUD_MSGID;
|
||||
@@ -429,14 +429,14 @@ void DoKludges(int mode, GMsg* msg, int kludges) {
|
||||
char* ptr = *msg->ito ? msg->ito : msg->to;
|
||||
strxcpy(buf2, ptr, 1024);
|
||||
ParseInternetAddr(buf2, _toname, _toaddr);
|
||||
if(_toname[0] != NUL) {
|
||||
/*--- if(_toname[0] != NUL) {
|
||||
mime_header_encode(buf2, _toname, msg);
|
||||
char quot[2] = "\"";
|
||||
if((buf2[0] == '\"') or (strpbrk(buf2, " \t") == NULL))
|
||||
quot[0] = NUL;
|
||||
sprintf(buf, "%s%sTo: %s%s%s <%s>", rfc, AA->isnewsgroup() ? "X-" : "", quot, buf2, quot, _toaddr);
|
||||
}
|
||||
else if(stricmp(_toname, AA->Whoto())) {
|
||||
else ---*/ if(stricmp(_toname, AA->Whoto())) {
|
||||
mime_header_encode(buf2, _toname, msg);
|
||||
char quot[2] = "\"";
|
||||
if((buf2[0] == '\"') or (strpbrk(buf2, " \t") == NULL))
|
||||
|
@@ -375,13 +375,13 @@ char* GetCurrQuotebuf(char* quotebuf) {
|
||||
MakePathname(quotebuf, CFG->goldpath, quotebuf);
|
||||
}
|
||||
else {
|
||||
if(AA->isezycom())
|
||||
if(streql(AA->basetype(), "EZYCOM"))
|
||||
sprintf(quotebuf, "%sgld%05u.qbf", CFG->ezycom.msgbasepath, AA->board());
|
||||
else if(AA->isfido())
|
||||
else if(streql(AA->basetype(), "FTS1") or streql(AA->basetype(), "OPUS"))
|
||||
sprintf(quotebuf, "%s%s", AA->path(), "golded.qbf");
|
||||
else if(AA->isgoldbase())
|
||||
else if(streql(AA->basetype(), "GOLDBASE"))
|
||||
sprintf(quotebuf, "%sgoldg%03u.qbf", CFG->goldbasepath, AA->board());
|
||||
else if(AA->ishudson())
|
||||
else if(streql(AA->basetype(), "HUDSON"))
|
||||
sprintf(quotebuf, "%sgoldh%03u.qbf", CFG->hudsonpath, AA->board());
|
||||
else
|
||||
sprintf(quotebuf, "%s%s", AA->path(), ".qbf");
|
||||
|
@@ -64,41 +64,41 @@ void Cleanup(void) {
|
||||
AL.Reset();
|
||||
|
||||
#ifndef GMB_NOXBBS
|
||||
if(AL.msgbases & MT_ADEPTXBBS)
|
||||
if(find(AL.basetypes, "ADEPTXBBS"))
|
||||
XbbsExit();
|
||||
#endif
|
||||
#ifndef GMB_NOEZY
|
||||
if(AL.msgbases & MT_EZYCOM)
|
||||
if(find(AL.basetypes, "EZYCOM"))
|
||||
EzycomExit();
|
||||
#endif
|
||||
if(AL.msgbases & MT_FIDO)
|
||||
if(find(AL.basetypes, "OPUS") or find(AL.basetypes, "FTS1"))
|
||||
FidoExit();
|
||||
#ifndef GMB_NOGOLD
|
||||
if(AL.msgbases & MT_GOLDBASE)
|
||||
if(find(AL.basetypes, "GOLDBASE"))
|
||||
GoldExit();
|
||||
#endif
|
||||
#ifndef GMB_NOHUDS
|
||||
if(AL.msgbases & MT_HUDSON)
|
||||
if(find(AL.basetypes, "HUDSON"))
|
||||
HudsExit();
|
||||
#endif
|
||||
#ifndef GMB_NOJAM
|
||||
if(AL.msgbases & MT_JAM)
|
||||
if(find(AL.basetypes, "JAM"))
|
||||
JamExit();
|
||||
#endif
|
||||
#ifndef GMB_NOPCB
|
||||
if(AL.msgbases & MT_PCBOARD)
|
||||
if(find(AL.basetypes, "PCBOARD"))
|
||||
PcbExit();
|
||||
#endif
|
||||
#ifndef GMB_NOSQSH
|
||||
if(AL.msgbases & MT_SQUISH)
|
||||
if(find(AL.basetypes, "SQUISH"))
|
||||
SquishExit();
|
||||
#endif
|
||||
#ifndef GMB_NOWCAT
|
||||
if(AL.msgbases & MT_WILDCAT)
|
||||
if(find(AL.basetypes, "WILDCAT"))
|
||||
WCatExit();
|
||||
#endif
|
||||
#ifndef GMB_NOSMB
|
||||
if(AL.msgbases & MT_SMB)
|
||||
if(find(AL.basetypes, "SMB"))
|
||||
SMBExit();
|
||||
#endif
|
||||
|
||||
|
@@ -1016,60 +1016,60 @@ void Initialize(int argc, char* argv[]) {
|
||||
if(CFG->loadlanguage[0])
|
||||
LoadLanguage(CFG->loadlanguage);
|
||||
|
||||
if(AL.msgbases & MT_FIDO) {
|
||||
if(find(AL.basetypes, "OPUS") or find(AL.basetypes, "FTS1")) {
|
||||
update_statuslinef("%s Fido", LNG->Checking);
|
||||
FidoInit(CFG->fidolastread, CFG->switches.get(fidohwmarks), CFG->switches.get(fidonullfix), CFG->fidouserno, CFG->squishuserpath);
|
||||
}
|
||||
#ifndef GMB_NOEZY
|
||||
if(AL.msgbases & MT_EZYCOM) {
|
||||
if(find(AL.basetypes, "EZYCOM")) {
|
||||
update_statuslinef("%s Ezycom", LNG->Checking);
|
||||
EzycomInit(CFG->ezycom.msgbasepath, CFG->ezycom.userbasepath, CFG->ezycomuserno);
|
||||
}
|
||||
#endif
|
||||
#ifndef GMB_NOGOLD
|
||||
if(AL.msgbases & MT_GOLDBASE) {
|
||||
if(find(AL.basetypes, "GOLDBASE")) {
|
||||
update_statuslinef("%s Goldbase", LNG->Checking);
|
||||
GoldInit(CFG->goldbasepath, CFG->goldbasesyspath, CFG->goldbaseuserno);
|
||||
}
|
||||
#endif
|
||||
#ifndef GMB_NOHUDS
|
||||
if(AL.msgbases & MT_HUDSON) {
|
||||
if(find(AL.basetypes, "HUDSON")) {
|
||||
update_statuslinef("%s Hudson", LNG->Checking);
|
||||
HudsInit(CFG->hudsonpath, CFG->hudsonsyspath, CFG->hudsonuserno, CFG->hudsonsizewarn, CFG->ra2usersbbs);
|
||||
}
|
||||
#endif
|
||||
#ifndef GMB_NOJAM
|
||||
if(AL.msgbases & MT_JAM) {
|
||||
if(find(AL.basetypes, "JAM")) {
|
||||
update_statuslinef("%s JAM", LNG->Checking);
|
||||
JamInit(CFG->jampath, CFG->switches.get(jamharddelete), CFG->switches.get(jamsmapihw));
|
||||
}
|
||||
#endif
|
||||
#ifndef GMB_NOPCB
|
||||
if(AL.msgbases & MT_PCBOARD) {
|
||||
if(find(AL.basetypes, "PCBOARD")) {
|
||||
update_statuslinef("%s PCBoard", LNG->Checking);
|
||||
PcbInit(CFG->pcboardpath, CFG->pcboarduserno);
|
||||
}
|
||||
#endif
|
||||
#ifndef GMB_NOSQSH
|
||||
if(AL.msgbases & MT_SQUISH) {
|
||||
if(find(AL.basetypes, "SQUISH")) {
|
||||
update_statuslinef("%s Squish", LNG->Checking);
|
||||
SquishInit(CFG->squishuserpath, CFG->squishuserno, CFG->switches.get(squishdirect), true, CFG->squishscan);
|
||||
}
|
||||
#endif
|
||||
#ifndef GMB_NOWCAT
|
||||
if(AL.msgbases & MT_WILDCAT) {
|
||||
if(find(AL.basetypes, "WILDCAT")) {
|
||||
update_statuslinef("%s WildCat!", LNG->Checking);
|
||||
WCatInit(CFG->wildcatuserno);
|
||||
}
|
||||
#endif
|
||||
#ifndef GMB_NOXBBS
|
||||
if(AL.msgbases & MT_ADEPTXBBS) {
|
||||
if(find(AL.basetypes, "ADEPTXBBS")) {
|
||||
update_statuslinef("%s AdeptXBBS", LNG->Checking);
|
||||
XbbsInit(CFG->adeptxbbspath, CFG->adeptxbbsuserno);
|
||||
}
|
||||
#endif
|
||||
#ifndef GMB_NOSMB
|
||||
if(AL.msgbases & MT_SMB) {
|
||||
if(find(AL.basetypes, "SMB")) {
|
||||
update_statuslinef("%s Synchronet", LNG->Checking);
|
||||
SMBInit();
|
||||
}
|
||||
|
@@ -1889,7 +1889,7 @@ inline bool put_on_new_line(const char *ptr, const char *prev_ptr) {
|
||||
|
||||
void MakeLineIndex(GMsg* msg, int margin, bool getvalue, bool header_recode) {
|
||||
|
||||
uint idx=0;
|
||||
uint idx=0, idxadjust=0;
|
||||
uint len;
|
||||
int level=0;
|
||||
uint n;
|
||||
@@ -1951,8 +1951,10 @@ void MakeLineIndex(GMsg* msg, int margin, bool getvalue, bool header_recode) {
|
||||
line = AddLine(line, "");
|
||||
ptr = msg->txt;
|
||||
uint _size = strlen(msg->txt);
|
||||
if(streql(AA->basetype(), "OPUS") or streql(AA->basetype(), "FTS1"))
|
||||
idxadjust = 190;
|
||||
for(idx=0; idx < _size; ptr+=16,idx+=16) {
|
||||
sprintf(buf, "%04X ", idx+(AA->isfido()?190:0));
|
||||
sprintf(buf, "%04X ", idx+idxadjust);
|
||||
HexDump16(buf+7, ptr, MinV((int)(_size-idx), 16), HEX_DUMP2);
|
||||
line = AddLine(line, buf);
|
||||
}
|
||||
|
@@ -613,14 +613,10 @@ void GMsgList::Run() {
|
||||
helpcat = H_MessageBrowser; // Window Help Category
|
||||
listwrap = CFG->switches.get(displistwrap);
|
||||
|
||||
if(AA->Msglistdate() != MSGLISTDATE_NONE) {
|
||||
if(AA->Msglistdate() != MSGLISTDATE_WRITTEN) {
|
||||
if(AA->ishudson() or AA->isgoldbase() or AA->ispcboard())
|
||||
AA->SetMsglistdate(MSGLISTDATE_WRITTEN);
|
||||
else if((AA->isezycom() or AA->isfido()) and (AA->Msglistdate() == MSGLISTDATE_RECEIVED))
|
||||
AA->SetMsglistdate(MSGLISTDATE_WRITTEN);
|
||||
}
|
||||
}
|
||||
if((AA->Msglistdate() == MSGLISTDATE_RECEIVED) and not AA->havereceivedstamp())
|
||||
AA->SetMsglistdate(MSGLISTDATE_WRITTEN);
|
||||
else if((AA->Msglistdate() == MSGLISTDATE_ARRIVED) and not AA->havearrivedstamp())
|
||||
AA->SetMsglistdate(MSGLISTDATE_WRITTEN);
|
||||
|
||||
mlst_with_date(AA->Msglistdate());
|
||||
|
||||
|
@@ -602,9 +602,9 @@ void GMsg::LinesToText() {
|
||||
strxcpy(re, _buf, sizeof(ISub));
|
||||
}
|
||||
|
||||
int _lfterm = EDIT->CrLfTerm() and not AA->ispcboard();
|
||||
int _hardterm = AA->Edithardterm() or AA->ispcboard() or AA->iswildcat();
|
||||
int _isezycom = AA->isezycom();
|
||||
bool _lfterm = EDIT->CrLfTerm() and strcmp(AA->basetype(), "PCBOARD");
|
||||
bool _hardterm = AA->Edithardterm() or AA->requirehardterm();
|
||||
bool _softterm = AA->requiresoftterm();
|
||||
|
||||
uint _alloc_size = 1024;
|
||||
Line* _line = lin;
|
||||
@@ -650,10 +650,10 @@ void GMsg::LinesToText() {
|
||||
if(*_buf and not _line->ishard()) {
|
||||
if(_line->next) {
|
||||
if((*(_bptr-1) != ' ') and (*_line->next->txt.c_str() != ' '))
|
||||
if(_isezycom or not _hardterm)
|
||||
if(_softterm or not _hardterm)
|
||||
*_bptr++ = ' ';
|
||||
if(not _hardterm) {
|
||||
if(_isezycom and not CFG->switches.get(dispsoftcr))
|
||||
if(_softterm and not CFG->switches.get(dispsoftcr))
|
||||
*_bptr++ = SOFTCR;
|
||||
_hterm = false;
|
||||
}
|
||||
|
@@ -247,9 +247,9 @@ static void MakeMsg3(int& mode, GMsg* msg) {
|
||||
tp->tm_isdst = -1;
|
||||
time_t b = mktime(tp);
|
||||
a += a - b;
|
||||
if(AA->isjam() or AA->iswildcat())
|
||||
if(AA->havereceivedstamp())
|
||||
msg->received = a;
|
||||
else
|
||||
if(AA->havearrivedstamp())
|
||||
msg->arrived = a;
|
||||
}
|
||||
|
||||
@@ -958,7 +958,7 @@ void MakeMsg(int mode, GMsg* omsg, bool ignore_replyto) {
|
||||
throw_release(msg->references);
|
||||
}
|
||||
if(CurrArea == OrigArea) {
|
||||
if((CFG->replylink == REPLYLINK_DIRECT) or AA->isjam())
|
||||
if((CFG->replylink == REPLYLINK_DIRECT) or streql(AA->basetype(), "JAM"))
|
||||
reply_msgno = omsg->msgno;
|
||||
else if(CFG->replylink == REPLYLINK_CHAIN)
|
||||
GetLastLink(omsg, reply_msgno);
|
||||
@@ -1110,7 +1110,7 @@ void MakeMsg(int mode, GMsg* omsg, bool ignore_replyto) {
|
||||
if(AA->LoadHdr(reply, reply_msgno, false)) {
|
||||
ulong replynext;
|
||||
bool ok2save = false;
|
||||
if(AA->issquish()) {
|
||||
if(streql(AA->basetype(), "SQUISH")) {
|
||||
if(reply->link.first()) {
|
||||
for(int r=0; r<reply->link.list_max()-1; r++) {
|
||||
if(reply->link.list(r) == 0) {
|
||||
@@ -1125,7 +1125,7 @@ void MakeMsg(int mode, GMsg* omsg, bool ignore_replyto) {
|
||||
ok2save = true;
|
||||
}
|
||||
}
|
||||
else if(AA->isjam()) {
|
||||
else if(streql(AA->basetype(), "JAM")) {
|
||||
if(reply->link.first()) {
|
||||
replynext = reply->link.first();
|
||||
do {
|
||||
|
@@ -413,6 +413,7 @@ void ZonegateIt(ftn_addr& gate, ftn_addr& orig, ftn_addr& dest);
|
||||
char* strtmp(const char* str);
|
||||
int quotecolor(const char* line);
|
||||
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);
|
||||
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
|
@@ -155,16 +155,13 @@ int AreaList::AreaScan(int mode, uint currno, int pmscan, int& pmails, int& pmar
|
||||
currno = AreaIdToNo(currid);
|
||||
|
||||
#ifndef GMB_NOPCB
|
||||
if(AL.msgbases & MT_PCBOARD) PcbWideOpen();
|
||||
if(find(AL.basetypes, "PCBOARD")) PcbWideOpen();
|
||||
#endif
|
||||
#ifndef GMB_NOGOLD
|
||||
if(AL.msgbases & MT_GOLDBASE) GoldWideOpen();
|
||||
if(find(AL.basetypes, "GOLDBASE")) GoldWideOpen();
|
||||
#endif
|
||||
#ifndef GMB_NOHUDS
|
||||
if(AL.msgbases & MT_HUDSON) HudsWideOpen();
|
||||
#endif
|
||||
#ifndef GMB_NOXBBS
|
||||
if(AL.msgbases & MT_ADEPTXBBS) XbbsWideOpen();
|
||||
if(find(AL.basetypes, "HUDSON")) HudsWideOpen();
|
||||
#endif
|
||||
|
||||
for(uint n=0; n<idx.size(); n++) {
|
||||
@@ -264,17 +261,14 @@ int AreaList::AreaScan(int mode, uint currno, int pmscan, int& pmails, int& pmar
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef GMB_NOXBBS
|
||||
if(AL.msgbases & MT_ADEPTXBBS) XbbsWideClose();
|
||||
#endif
|
||||
#ifndef GMB_NOHUDS
|
||||
if(AL.msgbases & MT_HUDSON) HudsWideClose();
|
||||
if(find(AL.basetypes, "HUDSON")) HudsWideClose();
|
||||
#endif
|
||||
#ifndef GMB_NOGOLD
|
||||
if(AL.msgbases & MT_GOLDBASE) GoldWideClose();
|
||||
if(find(AL.basetypes, "GOLDBASE")) GoldWideClose();
|
||||
#endif
|
||||
#ifndef GMB_NOPCB
|
||||
if(AL.msgbases & MT_PCBOARD) PcbWideClose();
|
||||
if(find(AL.basetypes, "PCBOARD")) PcbWideClose();
|
||||
#endif
|
||||
|
||||
return scanned;
|
||||
|
@@ -602,3 +602,13 @@ char* strtmp(const char* str) {
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
|
||||
bool find(const std::vector<const char *> &vec, const char *str) {
|
||||
|
||||
std::vector<const char *>::const_iterator i;
|
||||
|
||||
for(i = vec.begin(); i != vec.end(); i++)
|
||||
if(streql(*i, str))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
@@ -291,7 +291,7 @@ void Area::SaveMsg(int mode, GMsg* msg) {
|
||||
echopost++;
|
||||
}
|
||||
|
||||
if(isjam() and (isecho() or isnet())) {
|
||||
if(streql(basetype(), "JAM") and (isecho() or isnet())) {
|
||||
Path p;
|
||||
|
||||
sprintf(file, "%s%smail.jam", CFG->jampath, isecho() ? "echo" : "net");
|
||||
|
@@ -191,7 +191,7 @@ public:
|
||||
char sortspec[20];
|
||||
|
||||
// Active msgbases (bitmap of MT_* contants)
|
||||
uint msgbases;
|
||||
std::vector<const char *> basetypes;
|
||||
|
||||
// Additional items to the area scan menu
|
||||
GAreaListScan ListScan;
|
||||
@@ -214,7 +214,7 @@ public:
|
||||
void Reset();
|
||||
|
||||
// Return pointer to a new'd area of the specified format
|
||||
Area* NewArea(int msgbase);
|
||||
Area* NewArea(const char *basetype);
|
||||
|
||||
// Sort areas
|
||||
void Sort(const char* specs=NULL, int first=0, int last=-1);
|
||||
@@ -393,7 +393,7 @@ public:
|
||||
int areaid() const { return area->areaid(); }
|
||||
int groupid() const { return area->groupid(); }
|
||||
uint type() const { return area->type(); }
|
||||
uint msgbase() const { return area->msgbase(); }
|
||||
const char *basetype() const { return area->basetype(); }
|
||||
uint board() const { return area->board(); }
|
||||
const ftn_addr& aka() const { return area->aka(); }
|
||||
int originno() const { return area->originno(); }
|
||||
@@ -418,7 +418,7 @@ public:
|
||||
void set_areaid(int a) { area->set_areaid(a); }
|
||||
void set_groupid(int g) { area->set_groupid(g); }
|
||||
void set_type(uint t) { area->set_type(t); }
|
||||
void set_msgbase(uint m) { area->set_msgbase(m); }
|
||||
void set_basetype(const char *m) { area->set_basetype(m); }
|
||||
void set_board(uint b) { area->set_board(b); }
|
||||
void set_aka(ftn_addr& a) { area->set_aka(a); }
|
||||
void set_originno(int o) { area->set_originno(o); }
|
||||
@@ -439,20 +439,17 @@ public:
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
// Determine msgbase format
|
||||
bool isseparator() const;
|
||||
|
||||
int isfts1() const;
|
||||
int isopus() const;
|
||||
int isezycom() const;
|
||||
int isfido() const;
|
||||
int isgoldbase() const;
|
||||
int ishudson() const;
|
||||
int isjam() const;
|
||||
int ispcboard() const;
|
||||
int issquish() const;
|
||||
int issmb() const;
|
||||
int iswildcat() const;
|
||||
int isadeptxbbs() const;
|
||||
int isseparator() const;
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
// Determine area features
|
||||
|
||||
bool issoftdelete() const;
|
||||
bool havearrivedstamp() const;
|
||||
bool havereceivedstamp() const;
|
||||
bool requirehardterm() const;
|
||||
bool requiresoftterm() const;
|
||||
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
@@ -607,19 +604,13 @@ public:
|
||||
// ------------------------------------------------------------------
|
||||
// Inline implementations
|
||||
|
||||
inline int Area::isfts1() const { return area->isfts1(); }
|
||||
inline int Area::isopus() const { return area->isopus(); }
|
||||
inline int Area::isezycom() const { return area->isezycom(); }
|
||||
inline int Area::isfido() const { return area->isfido(); }
|
||||
inline int Area::isgoldbase() const { return area->isgoldbase(); }
|
||||
inline int Area::ishudson() const { return area->ishudson(); }
|
||||
inline int Area::isjam() const { return area->isjam(); }
|
||||
inline int Area::ispcboard() const { return area->ispcboard(); }
|
||||
inline int Area::issquish() const { return area->issquish(); }
|
||||
inline int Area::issmb() const { return area->issmb(); }
|
||||
inline int Area::iswildcat() const { return area->iswildcat(); }
|
||||
inline int Area::isadeptxbbs() const { return area->isadeptxbbs(); }
|
||||
inline int Area::isseparator() const { return area->isseparator(); }
|
||||
inline bool Area::isseparator() const { return area->isseparator(); }
|
||||
|
||||
inline bool Area::issoftdelete() const { return area->issoftdelete(); }
|
||||
inline bool Area::havearrivedstamp() const { return area->havearrivedstamp(); }
|
||||
inline bool Area::havereceivedstamp() const { return area->havereceivedstamp(); }
|
||||
inline bool Area::requirehardterm() const { return area->requirehardterm(); }
|
||||
inline bool Area::requiresoftterm() const { return area->requiresoftterm(); }
|
||||
|
||||
inline int Area::isnet() const { return area->isnet(); }
|
||||
inline int Area::isecho() const { return area->isecho(); }
|
||||
@@ -656,22 +647,6 @@ inline void Area::ResetHighwaterMark() { area->reset_highwater_mark(); }
|
||||
inline void Area::UpdateTimesread(GMsg* msg) { area->update_timesread(msg); }
|
||||
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
|
||||
class MsgbaseManager {
|
||||
|
||||
public:
|
||||
|
||||
void Init();
|
||||
void Exit();
|
||||
|
||||
void WideScanBegin();
|
||||
void WideScanEnd();
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
// Arealist picker class
|
||||
|
||||
|
Reference in New Issue
Block a user