diff --git a/include/optlist.h b/include/optlist.h index efee4a80..44372c50 100644 --- a/include/optlist.h +++ b/include/optlist.h @@ -37,7 +37,6 @@ #include "nsc.h" -/* Default econfig file */ extern char dflt_econfig[]; /* Game parameters, can be set in econfig */ @@ -45,7 +44,8 @@ extern char dflt_econfig[]; #include "econfig-spec.h" #undef EMP_CONFIG_H_OUTPUT -/* Variables that get values derived from econfig */ +extern char *configdir; + extern char *motdfil; extern char *downfil; extern char *disablefil; diff --git a/src/lib/gen/emp_config.c b/src/lib/gen/emp_config.c index 1f31a597..fba69426 100644 --- a/src/lib/gen/emp_config.c +++ b/src/lib/gen/emp_config.c @@ -78,6 +78,7 @@ emp_config(char *file) char scanspace[1024]; char *av[128]; char buf[1024]; + char *slash; struct keymatch *kp; int lno = 0; int errors = 0; @@ -94,6 +95,11 @@ emp_config(char *file) return -1; } + if ((slash = strrchr(file, '/'))) + configdir = strndup(file, slash + 1 - file); + else + configdir = NULL; + while (fgets(buf, sizeof buf, fp) != NULL) { ++lno; for (i = 0; buf[i] && isspace(buf[i]); ++i) ; diff --git a/src/lib/global/path.c.in b/src/lib/global/path.c.in index b1b70ebc..37e9b9ef 100644 --- a/src/lib/global/path.c.in +++ b/src/lib/global/path.c.in @@ -37,8 +37,16 @@ #include "optlist.h" +/* econfig file to try when user doesn't specify one */ char dflt_econfig[] = "@econfig@"; + +/* Where to find configuration, which is wherever econfig is looked for */ +char *configdir; + +/* Where to find info pages */ char *infodir = "@einfodir@"; + +/* Where this game's data is stored */ char *gamedir = "@gamedir@"; /* relative to DATADIR */