This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
deb-goldedplus/golded3/gccfgg4.cpp

372 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() {
strxcpy(CFG->helpcfg.fn, val, sizeof(Path));
replaceextension(CFG->helpged, CFG->helpcfg.fn, __gver_cfgext__);
}
// ------------------------------------------------------------------
void CfgGoldlang() {
strxcpy(CFG->langcfg, val, sizeof(Path));
}
// ------------------------------------------------------------------
void CfgGoldpath() {
PathCopy(CFG->goldpath, val);
}
// ------------------------------------------------------------------
void CfgGoldxlat() {
replaceextension(CFG->xlatged, val, __gver_cfgext__);
}
// ------------------------------------------------------------------
void CfgGroup() {
char* _key;
getkeyval(&_key, &val);
CFG->grp.AddGrp(_key);
cfgingroup = true;
}
// ------------------------------------------------------------------