373 lines
8.7 KiB
C++
373 lines
8.7 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 4.
|
|
// ------------------------------------------------------------------
|
|
|
|
#include <golded.h>
|
|
#include <gcprot.h>
|
|
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
extern char* val;
|
|
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgExcludenodes() {
|
|
|
|
// Only used by GoldNODE
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgExternoptions() {
|
|
|
|
const word CRC_CLS = 0x34F4;
|
|
const word CRC_CURSOR = 0x0D67;
|
|
const word CRC_RELOAD = 0xDEC0;
|
|
const word CRC_PAUSE = 0x3926;
|
|
const word CRC_PAUSEONERROR = 0xD99A;
|
|
const word CRC_WIPE = 0x1E80;
|
|
const word CRC_KEEPCTRL = 0x0738;
|
|
const word CRC_NOCLS = 0x2FAA;
|
|
const word CRC_NOCURSOR = 0x9345;
|
|
const word CRC_NORELOAD = 0x40E2;
|
|
const word CRC_NOPAUSE = 0x5D94;
|
|
const word CRC_NOPAUSEONERROR = 0xDBAA;
|
|
const word CRC_NOWIPE = 0xE3DA;
|
|
const word CRC_NOKEEPCTRL = 0x38FC;
|
|
|
|
// Handle options
|
|
while(*val) {
|
|
|
|
if(*val == '-')
|
|
val++;
|
|
|
|
char* _key;
|
|
word _crc = getkeyvalcrc(&_key, &val);
|
|
|
|
switch(_crc) {
|
|
|
|
case CRC_CLS:
|
|
CFG->externoptions |= EXTUTIL_CLS;
|
|
break;
|
|
case CRC_CURSOR:
|
|
CFG->externoptions |= EXTUTIL_CURSOR;
|
|
break;
|
|
case CRC_RELOAD:
|
|
CFG->externoptions |= EXTUTIL_RELOAD;
|
|
break;
|
|
case CRC_PAUSE:
|
|
CFG->externoptions |= EXTUTIL_PAUSE;
|
|
break;
|
|
case CRC_PAUSEONERROR:
|
|
CFG->externoptions |= EXTUTIL_PAUSEONERROR;
|
|
break;
|
|
case CRC_WIPE:
|
|
CFG->externoptions |= EXTUTIL_WIPE;
|
|
break;
|
|
case CRC_KEEPCTRL:
|
|
CFG->externoptions |= EXTUTIL_KEEPCTRL;
|
|
break;
|
|
case CRC_NOCLS:
|
|
CFG->externoptions &= ~EXTUTIL_CLS;
|
|
break;
|
|
case CRC_NOCURSOR:
|
|
CFG->externoptions &= ~EXTUTIL_CURSOR;
|
|
break;
|
|
case CRC_NORELOAD:
|
|
CFG->externoptions &= ~EXTUTIL_RELOAD;
|
|
break;
|
|
case CRC_NOPAUSE:
|
|
CFG->externoptions &= ~EXTUTIL_PAUSE;
|
|
break;
|
|
case CRC_NOPAUSEONERROR:
|
|
CFG->externoptions &= ~EXTUTIL_PAUSEONERROR;
|
|
break;
|
|
case CRC_NOWIPE:
|
|
CFG->externoptions &= ~EXTUTIL_WIPE;
|
|
break;
|
|
case CRC_NOKEEPCTRL:
|
|
CFG->externoptions &= ~EXTUTIL_KEEPCTRL;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgExternutil() {
|
|
|
|
ExtUtil extutil;
|
|
|
|
// Get util number
|
|
char* _key;
|
|
char* _val = val;
|
|
getkeyval(&_key, &_val);
|
|
extutil.utilno = atoi(_key);
|
|
|
|
// Get options
|
|
int _optbak = CFG->externoptions;
|
|
while(strchr("-", *_val)) {
|
|
getkeyval(&_key, &_val);
|
|
val = _key;
|
|
CfgExternoptions();
|
|
}
|
|
extutil.options = CFG->externoptions;
|
|
CFG->externoptions = _optbak;
|
|
|
|
// Get commandline
|
|
strxcpy(extutil.cmdline, _val, sizeof(extutil.cmdline));
|
|
|
|
// Count it
|
|
CFG->externutil.push_back(extutil);
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgEzycommsgbase(const char *path, bool force) {
|
|
|
|
if(force or strblank(CFG->ezycom.msgbasepath))
|
|
MapPath(PathCopy(CFG->ezycom.msgbasepath, path));
|
|
}
|
|
|
|
void CfgEzycommsgbase() {
|
|
|
|
CfgEzycommsgbase(val, true);
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgEzycomuserbase(const char *path, bool force) {
|
|
|
|
if(force or strblank(CFG->ezycom.userbasepath))
|
|
MapPath(PathCopy(CFG->ezycom.userbasepath, path));
|
|
}
|
|
|
|
void CfgEzycomuserbase() {
|
|
|
|
CfgEzycomuserbase(val, true);
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgEzycomuserno() {
|
|
|
|
CFG->ezycomuserno = atoi(val);
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgFidolastread(const char *path) {
|
|
|
|
MapPath(strxcpy(CFG->fidolastread, val, sizeof(Path)));
|
|
}
|
|
|
|
void CfgFidolastread() {
|
|
|
|
CfgFidolastread(val);
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgFidomsgtype() {
|
|
|
|
if(striinc("FTS", val))
|
|
CFG->fidomsgtype = MT_FTS1;
|
|
else
|
|
CFG->fidomsgtype = MT_OPUS;
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgFidouserlist() {
|
|
|
|
strcpy(CFG->fidouserlist, val);
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgFidouserno() {
|
|
|
|
CFG->fidouserno = atoi(val);
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgFilealias() {
|
|
|
|
char* ptr = strskip_txt(val);
|
|
if(*ptr) {
|
|
*ptr++ = NUL;
|
|
ptr = strskip_wht(ptr);
|
|
FileAlias tmp;
|
|
strxcpy(tmp.alias, val, sizeof(tmp.alias));
|
|
strxcpy(tmp.file, ptr, sizeof(Path));
|
|
CFG->filealias.push_back(tmp);
|
|
}
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgForcetemplate() {
|
|
|
|
bool flag = GetYesno(val);
|
|
if(cfgingroup)
|
|
CFG->grp.AddItm(GRP_FORCETEMPLATE, flag);
|
|
else
|
|
CFG->forcetemplate = flag;
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgFrqext(const char* v) {
|
|
|
|
char* ptr = val = throw_strdup(v);
|
|
CfgFrqext();
|
|
throw_free(ptr);
|
|
}
|
|
|
|
void CfgFrqext() {
|
|
|
|
tokenize(CFG->frqext, val);
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgFrqnodemap() {
|
|
|
|
char* key;
|
|
FrqNodeMap fnm;
|
|
getkeyval(&key, &val);
|
|
fnm.to.reset(key);
|
|
getkeyval(&key, &val);
|
|
fnm.from.reset(key);
|
|
|
|
CFG->frqnodemap.push_back(fnm);
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgFrqoptions() {
|
|
|
|
if(striinc("SORT", val))
|
|
CFG->frqoptions |= FREQ_SORT;
|
|
if(striinc("FROMTOP", val))
|
|
CFG->frqoptions |= FREQ_FROMTOP;
|
|
if(striinc("NOFILES", val))
|
|
CFG->frqoptions |= FREQ_NOFILES;
|
|
if(striinc("FAST", val))
|
|
CFG->frqoptions |= FREQ_FAST;
|
|
if(striinc("NOWAZOOMSG", val))
|
|
CFG->frqoptions |= FREQ_NOWAZOOMSG;
|
|
if(striinc("NOTFROMTOP", val))
|
|
CFG->frqoptions &= ~FREQ_FROMTOP;
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgGedhandshake() {
|
|
|
|
CFG->gedhandshake = GetYesno(val);
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgGermankeyboard() {
|
|
|
|
right_alt_same_as_left = not GetYesno(val);
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgGoldbasepath(const char *path, bool force) {
|
|
|
|
if(force or strblank(CFG->goldbasepath))
|
|
MapPath(PathCopy(CFG->goldbasepath, path));
|
|
}
|
|
|
|
void CfgGoldbasepath() {
|
|
|
|
CfgGoldbasepath(val, true);
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgGoldbasesyspath() {
|
|
|
|
PathCopy(CFG->goldbasesyspath, val);
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgGoldbaseuserno() {
|
|
|
|
CFG->goldbaseuserno = atoi(val);
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgGoldhelp() {
|
|
|
|
MapPath(strxcpy(CFG->helpcfg.fn, val, sizeof(Path)));
|
|
replaceextension(CFG->helpged, CFG->helpcfg.fn, __gver_cfgext__);
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgGoldlang() {
|
|
|
|
MapPath(strxcpy(CFG->langcfg, val, sizeof(Path)));
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgGoldpath() {
|
|
|
|
MapPath(PathCopy(CFG->goldpath, val));
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgGoldxlat() {
|
|
|
|
MapPath(val);
|
|
replaceextension(CFG->xlatged, val, __gver_cfgext__);
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|
|
void CfgGroup() {
|
|
|
|
char* _key;
|
|
getkeyval(&_key, &val);
|
|
CFG->grp.AddGrp(_key);
|
|
cfgingroup = true;
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
|