diff defaults.c @ 1:ff5e05767bd3 ALPHA

Empty changelog
author darius
date Sat, 06 Dec 1997 05:41:28 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/defaults.c	Sat Dec 06 05:41:28 1997 +0000
@@ -0,0 +1,742 @@
+/* $Id: defaults.c,v 1.1.1.1 1997/12/06 05:41:28 darius Exp $ */
+
+/* defaults.c
+ *
+ * Kevin P. Smith  6/11/89
+ * Bill Dyess      9/29/93  - moved all default settings to resetDefaults
+ *                           from main
+ * Bill Dyess	   11/8/93  - created expandFilename function
+ * Bill Dyess      11/20/93 - added #include capability
+ */
+#include "copyright2.h"
+#include <stdio.h>
+#ifdef hpux
+#include <time.h>
+#else
+#include <sys/time.h>
+#endif
+#ifdef __STDC__
+#include <stdlib.h>
+#endif
+#include<ctype.h>
+#include<pwd.h>
+#include <string.h>
+#include <stdlib.h>
+#include "Wlib.h"
+#include "defs.h"
+#include "struct.h"
+#include "data.h"
+#include "proto.h"
+
+#define MAXLINE 1024
+
+/* list of files to search for [BDyess] */
+static char *filelist[] = {".paradiserc",".netrekrc",".xtrekrc",NULL};
+
+/* Prototypes */
+static FILE *findDefaults P((char *home, char **deffile, char *base));
+
+char   *
+expandFilename(filename)
+    char   *filename;
+/* expands ~ (home dir) and environment vars in filenames.  This is primarily
+   for filenames specified in the .xtrekrc file, where the shell never gets
+   a chance to expand them.  [BDyess] */
+{
+    char    buf[MAXLINE], *src = filename, *dest = buf, tmpbuf[MAXLINE],
+           *tmppntr, *envpntr;
+    struct passwd *pw;
+
+    if (!src)
+	return filename;
+    while (*src) {
+	if (*src == '~') {
+	    src++;
+	    if (*src != '/' && *src) {	/* ~username */
+		tmppntr = tmpbuf;
+		while (isalpha(*src))
+		    *tmppntr++ = *src++;
+		*tmppntr = 0;
+		pw = getpwnam(tmpbuf);
+		if (!pw) {
+		    fprintf(stderr, "Error: can't find username %s, inserting ~ literally.\n", tmpbuf);
+		    *dest++ = '~';
+		    strcpy(dest, tmpbuf);
+		} else
+		    strcpy(dest, pw->pw_dir);
+	    } else {		/* just ~, insert $HOME */
+		envpntr = getenv("HOME");
+		if (envpntr != NULL)
+		    strcpy(dest, envpntr);
+		else
+		    printf("HOME environment variable missing, ignoring ~.\n");
+	    }
+	    while (*dest)
+		dest++;
+	} else if (*src == '$') {
+	    /* copy the shortest env var that matches */
+	    /* if in {}'s, the work is done for us */
+	    src++;
+	    if (*src == '{') {
+		src++;
+		tmppntr = tmpbuf;
+		while (*src != '}' && *src)
+		    *tmppntr++ = *src;
+		*tmppntr = 0;
+		envpntr = getenv(tmpbuf);
+		if (envpntr)
+		    strcpy(dest, getenv(tmpbuf));
+		while (*dest)
+		    dest++;
+	    } else if (*src) {	/* we have to work */
+		tmppntr = tmpbuf;
+		*tmppntr++ = *src++;
+		*tmppntr = 0;
+		while (!getenv(tmpbuf) && *src) {
+		    *tmppntr++ = *src++;
+		    *tmppntr = 0;
+		}
+		if (*src)
+		    strcpy(dest, getenv(tmpbuf));
+		while (*dest)
+		    dest++;
+	    }
+	} else if (*src == '\\') {	/* escaped char */
+	    src++;
+	    if (*src)
+		*dest++ = *src++;
+	} else {		/* just a regular char */
+	    *dest++ = *src++;
+	}
+    }
+    *dest = 0;
+    dest = (char *) realloc(filename, strlen(buf) + 1);
+    strcpy(dest, buf);
+    return dest;
+}
+
+void
+freeDefaults()
+{
+    struct stringlist *tmp;
+    while (defaults) {
+	tmp = defaults;
+	defaults = defaults->next;
+	free(tmp->string);
+	free(tmp->value);
+	free(tmp);
+    }
+}
+
+char   *
+initDefaults(deffile)
+    char   *deffile;		/* As opposed to defile? */
+{
+    FILE   *fp;
+    char    buf[MAXLINE];
+    char   *includeFile;
+    char   *home;
+    char   *v, *r;
+    struct stringlist *new;
+    int     ok, i;
+    int     skip = 0;
+
+    /* if(defaults) freeDefaults(); */
+    if (!deffile) {
+	deffile = (char *) malloc(256);
+	home = getenv("HOME");
+#ifdef AMIGA
+	/*
+	   This is VERY MISLEADING.  Really want to say home="netrek:" but
+	   that causes other problems.  ixemul.library will translate
+	   "/netrek" into "netrek:" Unless configured not to.  Does by
+	   default. Yuck, what a mess. -JR
+	*/
+	if (!home)
+	    home = "/netrek";
+#endif				/* AMIGA */
+        for(i = 0;filelist[i];i++) {
+	  /* home == NULL means search the current directory [BDyess] */
+	  fp = findDefaults(NULL, &deffile, filelist[i]);
+	  if(fp) break;
+	  fp = findDefaults(home, &deffile, filelist[i]);
+	  if(fp) break;
+	}
+    } else {
+	fp = fopen(deffile, "r");
+    }
+#ifdef SYS_RC
+    if (!fp) {
+	fp = fopen(SYS_RC, "r");
+	if (!fp)
+	    return deffile;
+	printf("Using %s as defaults file.\n", SYS_RC);
+    } else {
+	printf("Using %s as defaults file.\n", deffile);
+    }
+#else
+    if (!fp)
+	return deffile;
+#endif
+    printf("Reading defaults from %s.\n", deffile);
+    while (fgets(buf, MAXLINE - 1, fp)) {
+	if (skip) {
+	    skip = strncmpi(buf, "paradise-include", 16);
+	    continue;
+	} else {
+	    skip = !strncmpi(buf, "paradise-exclude", 16);
+	    if (skip)
+		continue;
+	}
+	/* if (*buf=='#' || *buf==';') continue; */
+	v = buf;
+	if (*buf == '#') {
+	    if (strncmpi(buf + 1, "include", 7) == 0) {	/* #include statement */
+		v = buf + 8;
+		ok = 0;
+		while (*v == ' ' || *v == '<' || *v == '"') {
+		    if (*v != ' ')
+			ok = 1;
+		    v++;
+		}
+		if (!ok)
+		    continue;	/* must have " or < before filename */
+		includeFile = strdup(v);
+		r = includeFile + strlen(includeFile) - 1;
+		*r = 0;		/* remove trailing \n */
+		r--;
+		ok = 0;
+		while ((*r == '"' || *r == '>' || *r == ' ') && r > includeFile) {
+		    if (*r != ' ')
+			ok = 1;
+		    *r = 0;
+		    r--;
+		}
+		if (!ok || r <= includeFile)
+		    continue;	/* if no ending '>' or '"' */
+		/* or no filename, forget it */
+		includeFile = expandFilename(includeFile);
+		initDefaults(includeFile);	/* recursively add the file  */
+		free(includeFile);
+	    }
+	    continue;
+	}
+	if (*buf != 0)
+	    buf[strlen(buf) - 1] = 0;
+	while (*v != ':' && *v != 0) {
+	    v++;
+	}
+	if (*v == 0)
+	    continue;
+	*v = 0;
+	v++;
+	while (*v == ' ' || *v == '\t') {
+	    v++;
+	}
+	if (*v != 0) {
+	    new = (struct stringlist *) malloc(sizeof(struct stringlist));
+	    new->next = defaults;
+	    if(defaults)
+		defaults->prev=new;
+	    new->prev = NULL;
+	    new->string = strdup(buf);
+	    new->value = strdup(v);
+	    new->searched = 0;
+	    defaults = new;
+	}
+    }
+    fclose(fp);
+    return deffile;
+}
+
+#if 0
+char   *
+strdup(str)
+    char   *str;
+{
+    char   *s;
+
+    s = (char *) malloc(strlen(str) + 1);
+    strcpy(s, str);
+    return (s);
+}
+#endif
+
+/* changed to search the entire defaults list once instead of as many as 
+   three times.  This is faster unless you have a "default.nickname:" entry
+   for almost every default on every server... -JR */
+
+char   *
+getdefault(str)
+    char   *str;
+{
+    struct stringlist *slNick=0, *slFlavor=0, *slNorm=0, *sl;
+    char    tempNick[80], tempFlavor[80];
+    char *val;
+
+    if (!str)
+	return NULL;
+    if (!strlen(str))
+	return NULL;
+
+    if (defNickName)
+	sprintf(tempNick, "%s.%s", str, defNickName);
+
+    if (defFlavor)
+	sprintf(tempFlavor, "%s.%s", str, defFlavor);
+
+    for(sl=defaults;sl;sl=sl->next) {
+	if(defNickName && !strcmpi(sl->string, tempNick)) {
+	    return sl->value;
+	    /* in case there's ever a reason to keep searching: */
+	    if(!slNick)
+		slNick=sl;
+	} else if(defFlavor && !strcmpi(sl->string, tempFlavor)) {
+	    if(!slFlavor)
+		slFlavor = sl;
+	}
+
+	if (!strcmpi(sl->string, str)) {
+	    if(!slNorm)
+		slNorm = sl;
+	}
+    }
+    if(slNick)
+	return slNick->value;
+    if(slFlavor)
+	return slFlavor->value;
+    if(slNorm)
+	return slNorm->value;
+
+    return (NULL);
+}
+
+#if NO_STRCMPI && !defined(sgi)
+int
+strcmpi(str1, str2)
+    char   *str1, *str2;
+{
+    for (;;) {
+	register char c1 = *str1, c2 = *str2;
+	if (c1 <= 'z' && c1 >= 'a')
+	    c1 += 'A' - 'a';
+	if (c2 <= 'z' && c2 >= 'a')
+	    c2 += 'A' - 'a';
+	if (c1 != c2)
+	    return (c2 - c1);
+	if (c1 == 0 || c2 == 0)
+	    return (0);
+	str1++;
+	str2++;
+    }
+    return (strcmp(str1, str2));
+}
+#endif
+
+#if NO_STRNCMPI && !defined(sgi)
+int
+strncmpi(str1, str2, len)
+    char   *str1, *str2;
+    int     len;
+{
+    int     i;
+
+    for (i = 0; i < len; i++) {
+	if (tolower(*str1) != tolower(*str2))
+	    return (*str2 - *str1);
+	if (*str1 == 0 || *str2 == 0)
+	    return (0);
+	str1++;
+	str2++;
+    }
+    return 0;
+}
+#endif
+
+int
+booleanDefault(def, preferred)
+    char   *def;
+    int     preferred;
+{
+    char   *str;
+
+    str = getdefault(def);
+    if (str == NULL)
+	return (preferred);
+    if (!strcmpi(str, "on") || !strcmpi(str, "true") || !strcmpi(str, "1")) {
+	return (1);
+    } else {
+	return (0);
+    }
+}
+
+int
+intDefault(def, preferred)
+    char   *def;
+    int     preferred;
+{
+    char   *str;
+
+    str = getdefault(def);
+    if (!str)
+	return preferred;
+    return atoi(str);
+}
+
+/* gets the default for the given def and returns it if it exists.
+   Otherwise returns a fresh copy of the preferred string */
+char   *
+stringDefault(def, preferred)
+    char   *def;
+    char   *preferred;
+{
+    char   *str;
+
+    str = getdefault(def);
+    if (!str)
+	return strdup(preferred);
+    return strdup(str);
+}
+
+/* no default file given on command line.
+   See if serverName is defined.  If it exists we look for
+   HOME/.xtrekrc-<serverName> and .xtrekrc-<serverName>
+   Otherwise we try DEFAULT_SERVER. */
+/* modified to accept .paradiserc (or any base filename) 12/21/93 [BDyess] */
+/* extended to check for for unadorned base and to return a fp [BDyess] */
+
+static FILE *
+findDefaults(home, deffile, base)
+    char   *home, **deffile, *base;
+{
+    FILE   *fp;
+
+    /* check base-serverName */
+    if (serverName) {
+	if (home)
+	    sprintf(*deffile, "%s/%s-%s", home, base, serverName);
+	else
+	    sprintf(*deffile, "%s-%s", base, serverName);
+	fp = fopen(*deffile, "r");
+	if (fp)
+	    return fp;
+    }
+    /* check base-DEFAULT_SERVER */
+    if (home)
+	sprintf(*deffile, "%s/%s-%s", home, base, DEFAULT_SERVER);
+    else
+	sprintf(*deffile, "%s-%s", base, DEFAULT_SERVER);
+    fp = fopen(*deffile, "r");
+    if (fp)
+	return fp;
+
+    /* check just base */
+    if (home)
+	sprintf(*deffile, "%s/%s", home, base);
+    else
+	strcpy(*deffile, base);
+    fp = fopen(*deffile, "r");
+    return fp;
+}
+
+/* default ship code, courtesy of Robert Blackburn <blackburn@Virginia.EDU>.
+   used by main(), modified to accept 2 letter initials 11/15/91 TC */
+/* modified to accept pt/ut's 10/10/93 [BDyess] */
+
+int
+defaultShip(preferred)
+    int     preferred;
+{
+    char   *type;
+
+    type = getdefault("defaultship");
+    if (type == NULL)
+	return preferred;
+    if ((strcmpi(type, "scout") == 0) || (strcmpi(type, "SC") == 0))
+	return SCOUT;
+    else if ((strcmpi(type, "destroyer") == 0) || (strcmpi(type, "DD") == 0))
+	return DESTROYER;
+    else if ((strcmpi(type, "cruiser") == 0) || (strcmpi(type, "CA") == 0))
+	return CRUISER;
+    else if ((strcmpi(type, "battleship") == 0) || (strcmpi(type, "BB") == 0))
+	return BATTLESHIP;
+    else if ((strcmpi(type, "assault") == 0) || (strcmpi(type, "AS") == 0))
+	return ASSAULT;
+    else if ((strcmpi(type, "starbase") == 0) || (strcmpi(type, "SB") == 0))
+	return STARBASE;
+    else if ((strcmpi(type, "jumpship") == 0) || (strcmpi(type, "JS") == 0))
+	return JUMPSHIP;
+    else if ((strcmpi(type, "warbase") == 0) || (strcmpi(type, "WB") == 0))
+	return WARBASE;
+    else if ((strcmpi(type, "flagship") == 0) || (strcmpi(type, "FL") == 0))
+	return FLAGSHIP;
+    else if ((strcmpi(type, "lightcruiser") == 0) || (strcmpi(type, "CL") == 0))
+	return LIGHTCRUISER;
+    else if ((strcmpi(type, "carrier") == 0) || (strcmpi(type, "CV") == 0))
+	return CARRIER;
+    else if ((strcmpi(type, "patrol") == 0) || (strcmpi(type, "PT") == 0))
+	return PATROL;
+    else if ((strcmpi(type, "utility") == 0) || (strcmpi(type, "UT") == 0))
+	return UTILITY;
+    else
+	return preferred;
+}
+
+void
+initLogFile()
+{
+    if (logFile && logmess) {
+	logfilehandle = fopen(logFile, "a");
+	if (!logfilehandle) {
+	    fprintf(stderr, "Can't open %s: ", logFile);
+	    perror("");
+	    logFile = NULL;
+	} else {
+	    printf("Opening %s for logging\n", logFile);
+	    fprintf(logfilehandle, "\n-----------------------------------------------------------------\nStarted logging for server %s at%s\n-----------------------------------------------------------------\n",
+		    serverName, timeString(time(NULL)));
+	}
+    }
+}
+
+void
+resetDefaults()
+{
+    char   *buf;
+#ifdef AUTHORIZE
+    if (RSA_Client >= 0)
+	RSA_Client = booleanDefault("useRSA", RSA_Client);
+    else
+	RSA_Client = (RSA_Client == -2);
+#endif
+
+
+    showShields = booleanDefault("showshields", showShields);
+    showStats = booleanDefault("showstats", showStats);
+    keeppeace = booleanDefault("keeppeace", keeppeace);
+    reportKills = booleanDefault("reportkills", reportKills);
+#if 0
+    blk_altbits = booleanDefault("altbitmaps", blk_altbits);
+#endif
+    blk_showStars = booleanDefault("showstars", blk_showStars);
+    showMySpeed = booleanDefault("showMySpeed", showMySpeed);
+    showTractorPressor = booleanDefault("showTractorPressor",
+					showTractorPressor);
+    /* show all tractor/pressor beams, not just your own [BDyess] */
+    showAllTractorPressor = booleanDefault("showAllTractorPressor",
+					   showAllTractorPressor);
+    showLock = intDefault("showLock", showLock);
+    drawgrid = booleanDefault("showgrid", drawgrid);
+    showgalactic = intDefault("showgalactic", showgalactic);
+    showlocal = intDefault("showlocal", showlocal);
+    namemode = booleanDefault("namemode", namemode);
+
+    Dashboard = booleanDefault("newDashboard", Dashboard);
+    cup_half_full = booleanDefault("newDashboard2", cup_half_full);
+    if (cup_half_full)
+	Dashboard = 2;
+    Dashboard = intDefault("Dashboard", Dashboard);
+
+    unixSoundPath = stringDefault("soundPath", "?");
+    unixSoundDev  = stringDefault("soundDev", "?");
+
+    cloakchars = stringDefault("cloakchars", "??");
+    cloakcharslen = strlen(cloakchars);
+
+    showPhaser = intDefault("showPhaser", showPhaser);
+    logmess = booleanDefault("logging", logmess);
+    logFile = getdefault("logfile");
+    if(logFile)
+	logFile=expandFilename(strdup(logFile));
+
+    initLogFile();
+#ifdef VARY_HULL
+    vary_hull = booleanDefault("warnhull", vary_hull);
+#endif				/* VARY_HULL */
+
+#ifdef TOOLS
+  shelltools = booleanDefault("shellTools", shelltools);
+#endif
+    warpStreaks = booleanDefault("warpStreaks", warpStreaks);
+    use_msgw = booleanDefault("useMsgw", use_msgw);
+    logPhaserMissed = booleanDefault("logPhaserMissed", logPhaserMissed);
+    phaserStats = booleanDefault("phaserStats", phaserStats);
+    jubileePhasers = booleanDefault("jubileePhasers", jubileePhasers);
+    show_shield_dam = booleanDefault("showShieldDam", show_shield_dam);
+    updateSpeed = intDefault("udpupdates", updateSpeed);
+    updateSpeed = intDefault("updatespersecond", updateSpeed);
+    updateSpeed = intDefault("updatespersec", updateSpeed);
+    extraBorder = booleanDefault("extraAlertBorder", extraBorder);
+    if (booleanDefault("galacticfrequent", 0))
+	mapmode = GMAP_FREQUENT;
+#ifdef CONTINUOUS_MOUSE
+    continuousMouse = booleanDefault("continuousMouse", continuousMouse);
+    if (continuousMouse)
+	buttonRepeatMask = 1 << W_LBUTTON | 1 << W_RBUTTON | 1 << W_MBUTTON;
+    clickDelay = intDefault("clickDelay", clickDelay);
+    if (booleanDefault("continuousMouse.L", 0))
+	buttonRepeatMask |= 1 << W_LBUTTON;
+    if (booleanDefault("continuousMouse.M", 0))
+	buttonRepeatMask |= 1 << W_MBUTTON;
+    if (booleanDefault("continuousMouse.R", 0))
+	buttonRepeatMask |= 1 << W_RBUTTON;
+    if (buttonRepeatMask)
+	continuousMouse = 1;
+#endif				/* CONTINUOUS_MOUSE */
+    autoQuit = intDefault("autoQuit", autoQuit);
+    if (autoQuit > 199) {
+	autoQuit = 199;
+	printf("autoQuit reduced to 199\n");
+    }
+    pigSelf = booleanDefault("pigSelf", pigSelf);
+    /* info icon shows info in place of the icon bitmap [BDyess] */
+    infoIcon = booleanDefault("infoIcon", infoIcon);
+    showGalacticSequence = stringDefault("showGalacticSequence", "012345");
+    for (buf = showGalacticSequence; *buf; buf++) {
+	if (*buf - '0' > 5) {
+	    fprintf(stderr, "Error in showGalacticSequence: %d too high, ignoring\n", *buf);
+	    free(showGalacticSequence);
+	    showGalacticSequence = strdup("012345");
+	    break;
+	}
+    }
+    showLocalSequence = stringDefault("showLocalSequence", "01234");
+    for (buf = showLocalSequence; *buf; buf++) {
+	if (*buf - '0' > 4) {
+	    fprintf(stderr, "Error in showLocalSequence: %d too high, ignoring\n", *buf);
+	    free(showLocalSequence);
+	    showLocalSequence = strdup("01234");
+	    break;
+	}
+    }
+
+#ifdef ATM
+    udpDebug = booleanDefault("udpDebug", udpDebug);
+    udpClientSend = intDefault("udpClientSend", udpClientSend);
+    /* note: requires send */
+    udpClientRecv = intDefault("udpClientReceive", udpClientRecv);
+    tryUdp = booleanDefault("tryUdp", tryUdp);
+    udpSequenceChk = booleanDefault("udpSequenceCheck", udpSequenceChk);
+#endif				/* ATM */
+
+    tryShort = booleanDefault("tryShort", tryShort);	/* auto-try S_P [BDyess] */
+
+    /* playerlist settings */
+    robsort = booleanDefault("robsort", robsort);
+    sortPlayers = booleanDefault("sortPlayers", sortPlayers);
+    hideNoKills = booleanDefault("hidenokills", hideNoKills);
+    showDead = booleanDefault("showDead", showDead);
+    showPreLogins = booleanDefault("showPreLogins", showPreLogins);
+    sortOutfitting = booleanDefault("sortOutfitting", sortOutfitting);
+    timerType = intDefault("timertype", timerType);
+#ifdef WIDE_PLIST
+    /*
+       default: old playerlist (ie, no format string), number shiptype rank
+       name kills wins losses ratio offense defense di, number shiptype name
+       kills login ratio totalrating di [BDyess]
+    */
+    playerListStart = stringDefault("playerList",
+				    ",nTRNKWLr O D d,nTR N  K lrSd");
+    playerList = playerListStart;
+    resizePlayerList = booleanDefault("resizePlayerList",resizePlayerList);
+#endif				/* WIDE_PLIST */
+
+#ifdef PACKET_LIGHTS
+    packetLights = booleanDefault("packetLights", packetLights);
+#endif				/* PACKET_LIGHTS */
+
+    viewBox = booleanDefault("viewBox", viewBox);
+    sectorNums = booleanDefault("sectorNums", sectorNums);
+    lockLine = booleanDefault("lockLine", lockLine);
+    mapSort = booleanDefault("mapSort", mapSort);
+    autoSetWar = intDefault("autoSetWar", autoSetWar);
+    tacPlanetInfo = intDefault("tacPlanetInfo", tacPlanetInfo);
+
+    /* metaFork = booleanDefault("metaFork",metaFork); */
+
+    keepInfo = intDefault("keepInfo", keepInfo);
+
+#ifdef NOWARP
+    /* if there are alternatives to message warp, use it anyway? -JR */
+    warp = booleanDefault("messageWarp", warp);
+#endif
+
+#ifdef CHECK_DROPPED
+    reportDroppedPackets = booleanDefault("reportDroppedPackets", reportDroppedPackets);
+#endif
+
+    askforUpdate = booleanDefault("askforUpdate", askforUpdate);
+    lowercaset = booleanDefault("lowercaset", lowercaset);
+    scrollBeep = booleanDefault("scrollBeep", scrollBeep);
+#ifdef SHORT_PACKETS
+    godToAllOnKills = booleanDefault("godToAllOnKills",godToAllOnKills);
+#endif
+
+    autoZoom=intDefault("autoZoom", autoZoom);
+    autoUnZoom = intDefault("autoUnZoom",autoUnZoom);
+    autoZoomOverride = intDefault("autoZoomOverride",autoZoomOverride);
+
+#ifdef BEEPLITE
+    {
+	DefLite = booleanDefault("DefLite", DefLite);
+	UseLite = booleanDefault("UseLite", UseLite);
+
+	if (DefLite)
+	    litedefaults();
+
+	beep_lite_cycle_time_planet = intDefault("planetCycleTime",
+					       beep_lite_cycle_time_planet);
+	beep_lite_cycle_time_player = intDefault("playerCycleTime",
+					       beep_lite_cycle_time_player);
+    }
+#endif				/* BEEPLITE */
+
+#ifdef COW_HAS_IT_WHY_SHOULDNT_WE
+    showMapAtMotd = booleanDefault("showMapAtMotd",showMapAtMotd);
+#endif
+
+#ifdef LOCAL_SHIPSTATS
+    localShipStats=booleanDefault("localShipStats",localShipStats);
+    statString = stringDefault("statString","DSEWF");
+    statHeight = intDefault("statHeight",statHeight);
+    if(statHeight<4) statHeight=4;
+    if(statHeight>100) statHeight = 100;
+    localStatsX = intDefault("localStatsX", localStatsX);
+    localStatsY = intDefault("localStatsY", localStatsY);
+#endif
+
+#ifdef SHOW_IND
+    showIND = booleanDefault("showIND",showIND);
+#endif
+
+#ifdef HOCKEY
+    galacticHockeyLines = booleanDefault("galacticHockeyLines",
+    				galacticHockeyLines);
+    tacticalHockeyLines = booleanDefault("tacticalHockeyLines",
+    				tacticalHockeyLines);
+    cleanHockeyGalactic = booleanDefault("cleanHockeyGalactic",
+    				cleanHockeyGalactic);
+    teamColorHockeyLines = booleanDefault("teamColorHockeyLines",
+    				teamColorHockeyLines);
+#endif /*HOCKEY*/
+
+#ifdef AMIGA
+    getAmigaDefs();
+#endif
+
+#ifdef SOUND
+    getSoundDefs();
+#endif
+
+    redrawDelay = intDefault("redrawDelay",redrawDelay);
+
+    initkeymap(-1);
+#ifdef MACROS
+    initMacros();
+#endif				/* MACROS */
+
+    /*
+       sendOptionsPacket();
+    *//* There is nothing on the server side that should be controlled by
+       xtrekrc variables. */
+}