Author: Lukas Geyer Description: Adjusted configuration file location. --- sjeng-11.2.orig/rcfile.c +++ sjeng-11.2/rcfile.c @@ -21,16 +21,24 @@ */ +#include +#include +#include + #include "sjeng.h" #include "protos.h" #include "extvars.h" #include "config.h" +/* Local name is relative to user's home directory */ +#define RC_LOCALNAME "/.sjeng/sjeng.rc" +#define RC_GLOBALNAME "/etc/sjeng.rc" + FILE *rcfile; char line[STR_BUFF]; int TTSize; -int ECacheSize; +unsigned int ECacheSize; int PBSize; int cfg_booklearn; @@ -51,8 +59,22 @@ { int i; unsigned int setc; - - if ((rcfile = fopen ("sjeng.rc", "r")) == NULL) + struct passwd *pw; + char rcname[STR_BUFF]; + + rcfile = NULL; + pw = getpwuid(getuid()); + if (pw != NULL && + strlen(pw->pw_dir) + strlen(RC_LOCALNAME) + 1 < STR_BUFF ) { + strcpy(rcname, pw->pw_dir); + strcat(rcname, RC_LOCALNAME); + rcfile = fopen(rcname, "r"); + } + if (rcfile == NULL) { + rcfile = fopen(RC_GLOBALNAME, "r"); + } + + if (rcfile == NULL) { printf("No configuration file!\n"); @@ -100,7 +122,7 @@ fgets(line, STR_BUFF, rcfile); while (line[0] == '#') fgets(line, STR_BUFF, rcfile); - sscanf(line, "%d", &ECacheSize); + sscanf(line, "%u", &ECacheSize); fgets(line, STR_BUFF, rcfile); while (line[0] == '#') fgets(line, STR_BUFF, rcfile); @@ -181,6 +203,7 @@ sprintf(setcode, "%u", setc); + fclose(rcfile); initialize_eval(); alloc_hash(); alloc_ecache();