491 lines
11 KiB
C++
491 lines
11 KiB
C++
|
|
// ------------------------------------------------------------------
|
|
// GoldED+
|
|
// Copyright (C) 1990-1999 Odinn Sorensen
|
|
// Copyright (C) 1999-2000 Alexander S. Aganichev
|
|
// ------------------------------------------------------------------
|
|
// This program is free software; you can redistribute it and/or
|
|
// modify it under the terms of the GNU General Public License as
|
|
// published by the Free Software Foundation; either version 2 of the
|
|
// License, or (at your option) any later version.
|
|
//
|
|
// This program 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
|
|
// General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with this program; if not, write to the Free Software
|
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
|
// MA 02111-1307 USA
|
|
// ------------------------------------------------------------------
|
|
// $Id$
|
|
// ------------------------------------------------------------------
|
|
// Configuration functions, part 5.
|
|
// ------------------------------------------------------------------
|
|
|
|
#include <golded.h>
|
|
#include <gccfgg.h>
|
|
#include <gcprot.h>
|
|
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
extern char* val;
|
|
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgHighlighturls() {
|
|
|
|
CFG->highlighturls = make_bool(GetYesno(val));
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgHudsonpath(const char *path, bool force) {
|
|
|
|
if(force or strblank(CFG->hudsonpath))
|
|
MapPath(PathCopy(CFG->hudsonpath, path));
|
|
}
|
|
|
|
void CfgHudsonpath() {
|
|
|
|
CfgHudsonpath(val, true);
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgHudsonsizewarn() {
|
|
|
|
CFG->hudsonsizewarn = atol(val);
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgHudsonsyspath() {
|
|
|
|
PathCopy(CFG->hudsonsyspath, val);
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgHudsonuserno() {
|
|
|
|
CFG->hudsonuserno = atoi(val);
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgIgnorecharset() {
|
|
|
|
CFG->ignorecharset = make_bool(GetYesno(val));
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgImportbegin() {
|
|
|
|
strxcpy(CFG->importbegin, StripQuotes(val), sizeof(CFG->importbegin));
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgImportend() {
|
|
|
|
strxcpy(CFG->importend, StripQuotes(val), sizeof(CFG->importend));
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgInboundpath() {
|
|
|
|
PathCopy(CFG->inboundpath, val);
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgIncludenodes() {
|
|
|
|
// Only used by GoldNODE
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgInputfile() {
|
|
|
|
Path buf;
|
|
strxcpy(buf, val, sizeof(buf));
|
|
if(cfgingroup)
|
|
CFG->grp.AddItm(GRP_INPUTFILE, buf, strlen(buf)+1);
|
|
else
|
|
strcpy(CFG->inputfile, buf);
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgIntensecolors() {
|
|
|
|
CFG->intensecolors = make_bool(GetYesno(val));
|
|
if(CFG->intensecolors)
|
|
memcpy(CFG->color, gold_color2, sizeof(CFG->color));
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgInternetaddress() {
|
|
|
|
IAdr buf;
|
|
strxcpy(buf, val, sizeof(buf));
|
|
if(cfgingroup)
|
|
CFG->grp.AddItm(GRP_INTERNETADDRESS, buf, strlen(buf)+1);
|
|
else
|
|
strcpy(CFG->internetaddress, buf);
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgInternetdomain() {
|
|
|
|
strxcpy(CFG->internetdomain, val, sizeof(CFG->internetdomain));
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgInternetgate() {
|
|
|
|
Node tmp;
|
|
char* ptr = strchr(val, ',');
|
|
if(ptr) {
|
|
*ptr++ = NUL;
|
|
strxcpy(tmp.name, strtrim(val), sizeof(Name));
|
|
}
|
|
else {
|
|
ptr = val;
|
|
tmp.name[0] = NUL;
|
|
}
|
|
if(not CFG->aka.empty())
|
|
tmp.addr = CFG->aka[0].addr;
|
|
tmp.addr.set(strskip_wht(ptr));
|
|
if(cfgingroup)
|
|
CFG->grp.AddItm(GRP_INTERNETGATE, &tmp, sizeof(Node));
|
|
else
|
|
CFG->internetgate = tmp;
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgInternetgateexp() {
|
|
|
|
uint exp = 0;
|
|
char *key;
|
|
do {
|
|
getkeyval(&key, &val);
|
|
if(strieql(key, "Name"))
|
|
exp = (exp << 2) | RFCName;
|
|
if(strieql(key, "Address"))
|
|
exp = (exp << 2) | RFCAddress;
|
|
}
|
|
while(*val != NUL);
|
|
CFG->internetgateexp = exp;
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgInternetmsgid() {
|
|
|
|
bool flag = make_bool(GetYesno(val));
|
|
if(cfgingroup)
|
|
CFG->grp.AddItm(GRP_INTERNETMSGID, flag);
|
|
else
|
|
CFG->internetmsgid = flag;
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgInternetrfcbody() {
|
|
|
|
int flag = atoi(val);
|
|
if(flag == 0)
|
|
flag = GetYesno(val) ? 1 : 0;
|
|
if(cfgingroup)
|
|
CFG->grp.AddItm(GRP_INTERNETRFCBODY, flag);
|
|
else
|
|
CFG->internetrfcbody = flag;
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgInternetviagate() {
|
|
|
|
CFG->internetviagate = make_bool(GetYesno(val));
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgInvalidate() {
|
|
|
|
const word CRC_SEENBY = 0x01D0;
|
|
const word CRC_CC = 0x4343;
|
|
const word CRC_XC = 0x5843;
|
|
const word CRC_XP = 0x5850;
|
|
|
|
char* key;
|
|
|
|
switch(getkeyvalcrc(&key, &val)) {
|
|
case CRC_TEARLINE:
|
|
getkeyval(&key, &val);
|
|
CFG->invalidate.tearline.first = StripQuotes(key);
|
|
CFG->invalidate.tearline.second = StripQuotes(val);
|
|
break;
|
|
case CRC_ORIGIN:
|
|
getkeyval(&key, &val);
|
|
CFG->invalidate.origin.first = StripQuotes(key);
|
|
CFG->invalidate.origin.second = StripQuotes(val);
|
|
break;
|
|
case CRC_SEENBY:
|
|
getkeyval(&key, &val);
|
|
CFG->invalidate.seenby.first = StripQuotes(key);
|
|
CFG->invalidate.seenby.second = StripQuotes(val);
|
|
break;
|
|
case CRC_CC:
|
|
getkeyval(&key, &val);
|
|
CFG->invalidate.cc.first = StripQuotes(key);
|
|
CFG->invalidate.cc.second = StripQuotes(val);
|
|
break;
|
|
case CRC_XC:
|
|
getkeyval(&key, &val);
|
|
CFG->invalidate.xc.first = StripQuotes(key);
|
|
CFG->invalidate.xc.second = StripQuotes(val);
|
|
break;
|
|
case CRC_XP:
|
|
getkeyval(&key, &val);
|
|
CFG->invalidate.xp.first = StripQuotes(key);
|
|
CFG->invalidate.xp.second = StripQuotes(val);
|
|
break;
|
|
}
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgJampath(const char *path, bool force) {
|
|
|
|
if(force or strblank(CFG->jampath))
|
|
MapPath(PathCopy(CFG->jampath, path));
|
|
}
|
|
|
|
void CfgJampath() {
|
|
|
|
CfgJampath(val, true);
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgKeybmode() {
|
|
|
|
if(strnieql(val, "Poll", 4))
|
|
CFG->keybmode = KEYB_POLL;
|
|
else if(strnieql(val, "Block", 5))
|
|
CFG->keybmode = KEYB_BLOCK;
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgKeybstack() {
|
|
|
|
strcat(CFG->keybstack, val);
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgKludge() {
|
|
|
|
StripQuotes(val);
|
|
if(*val == CTRL_A)
|
|
val++;
|
|
CFG->kludge.push_back(val);
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgLatintolocal()
|
|
{
|
|
memset(CFG->latintolocal, 0, sizeof(CFG->latintolocal));
|
|
CFG->latin2local = true;
|
|
|
|
char *ptr = val, chr;
|
|
for (chr = 'A'; chr <= 'Z'; chr++, ptr++)
|
|
CFG->latintolocal[int(chr)] = *ptr;
|
|
for (chr = 'a'; chr <= 'z'; chr++, ptr++)
|
|
CFG->latintolocal[int(chr)] = *ptr;
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgLoadlanguage() {
|
|
|
|
Path buf;
|
|
strxcpy(buf, val, sizeof(buf));
|
|
if(cfgingroup)
|
|
CFG->grp.AddItm(GRP_LOADLANGUAGE, buf, strlen(buf)+1);
|
|
else
|
|
strcpy(CFG->loadlanguage, buf);
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgLocationalias()
|
|
{
|
|
char* key;
|
|
getkeyval(&key, &val);
|
|
StripQuotes(key);
|
|
StripQuotes(val);
|
|
CFG->locationalias.Add(strupr(key), val);
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgLocationdelimiter()
|
|
{
|
|
StripQuotes(val);
|
|
CFG->locationdelimiter = val;
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgLogfile() {
|
|
|
|
strcpy(CFG->logfile, val);
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgLogformat() {
|
|
|
|
if(strieql(val, "FD"))
|
|
CFG->logformat = GLOG_FD;
|
|
else if(strieql(val, "MAX"))
|
|
CFG->logformat = GLOG_MAX;
|
|
else if(strieql(val, "BINK"))
|
|
CFG->logformat = GLOG_BINK;
|
|
else if(strieql(val, "QBBS"))
|
|
CFG->logformat = GLOG_QBBS;
|
|
else if(strieql(val, "DB"))
|
|
CFG->logformat = GLOG_DB;
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgMailinglist() {
|
|
|
|
char* key;
|
|
MailList mlst;
|
|
mlst.sender_is_pattern = false;
|
|
getkeyval(&key, &val);
|
|
strxcpy(mlst.echoid, key, sizeof(Echo));
|
|
getkeyval(&key, &val);
|
|
strxcpy(mlst.sender, key, sizeof(IAdr));
|
|
getkeyval(&key, &val);
|
|
strxcpy(mlst.contribution, key, sizeof(IAdr));
|
|
CFG->mailinglist.push_back(mlst);
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgMailtoss() {
|
|
|
|
char* key;
|
|
MailList mlst;
|
|
mlst.sender_is_pattern = true;
|
|
getkeyval(&key, &val);
|
|
strxcpy(mlst.echoid, key, sizeof(Echo));
|
|
getkeyval(&key, &val);
|
|
strxcpy(mlst.contribution, key, sizeof(IAdr));
|
|
strxcpy(mlst.sender, val, sizeof(IAdr));
|
|
CFG->mailinglist.push_back(mlst);
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgMappath() {
|
|
|
|
char* key;
|
|
std::pair<std::string, std::string> mapentry;
|
|
|
|
getkeyval(&key, &val);
|
|
|
|
mapentry.first = key;
|
|
mapentry.second = val;
|
|
CFG->mappath.push_back(mapentry);
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgMember() {
|
|
|
|
if(cfgingroup) {
|
|
val = strtok(val, ", \t");
|
|
while(val) {
|
|
CFG->grp.AddMbr(val);
|
|
val = strtok(NULL, ", \t");
|
|
}
|
|
}
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgMenumarked() {
|
|
|
|
if(strieql(val, "Marked"))
|
|
CFG->menumarked = MODE_MARKED;
|
|
else if(strieql(val, "Current"))
|
|
CFG->menumarked = MODE_CURRENT;
|
|
else if(strieql(val, "Previous"))
|
|
CFG->menumarked = MODE_PREVIOUS;
|
|
else
|
|
CFG->menumarked = MODE_DONT;
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgMenunextarea()
|
|
{
|
|
if (strieql(val, "Unread"))
|
|
CFG->menunextarea = ALWAYS;
|
|
else
|
|
CFG->menunextarea = GetYesno(val);
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgMsglistdate() {
|
|
|
|
int flag;
|
|
if(strieql(val, "Written"))
|
|
flag = MSGLISTDATE_WRITTEN;
|
|
else if(strieql(val, "Arrived"))
|
|
flag = MSGLISTDATE_ARRIVED;
|
|
else if(strieql(val, "Received"))
|
|
flag = MSGLISTDATE_RECEIVED;
|
|
else
|
|
flag = GetYesno(val) ? MSGLISTDATE_WRITTEN : MSGLISTDATE_NONE;
|
|
if(cfgingroup)
|
|
CFG->grp.AddItm(GRP_MSGLISTDATE, flag);
|
|
else
|
|
CFG->msglistdate = flag;
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgMsglistfast() {
|
|
|
|
bool flag = make_bool(GetYesno(val));
|
|
if(cfgingroup)
|
|
CFG->grp.AddItm(GRP_MSGLISTFAST, flag);
|
|
else
|
|
CFG->msglistfast = flag;
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|