X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fruntime.c;h=087efc45b2aaca8fe6c2a8d275a0f8155a420e8c;hb=b870615b146940f661e5d0e9069ca4e16e9f483d;hp=55f4d503bb84561743dfe495a38902d7ec63b0f6;hpb=73d6a1047f224613b617a0047c962c62e2de8d7d;p=sbcl.git diff --git a/src/runtime/runtime.c b/src/runtime/runtime.c index 55f4d50..087efc4 100644 --- a/src/runtime/runtime.c +++ b/src/runtime/runtime.c @@ -15,6 +15,7 @@ #include #include +#include #include #include #include @@ -44,6 +45,10 @@ #include "save.h" #include "lispregs.h" +#include "genesis/static-symbols.h" +#include "genesis/symbol.h" + + #ifdef irix #include #include "interr.h" @@ -271,15 +276,33 @@ main(int argc, char *argv[], char *envp[]) core = copied_existing_filename_or_null(lookhere); free(lookhere); } else { - core = copied_existing_filename_or_null("/usr/lib/sbcl.core"); + putenv("SBCL_HOME=/usr/local/lib/sbcl/"); + core = copied_existing_filename_or_null("/usr/local/lib/sbcl/sbcl.core"); if (!core) { + putenv("SBCL_HOME=/usr/lib/sbcl/"); core = - copied_existing_filename_or_null("/usr/local/lib/sbcl.core"); + copied_existing_filename_or_null("/usr/lib/sbcl/sbcl.core"); } } if (!core) { lose("can't find core file"); } + } else { + /* If a core was specified and SBCL_HOME is unset, set it */ + char *sbcl_home = getenv("SBCL_HOME"); + if (!sbcl_home) { + char *envstring, *copied_core, *dir; + char *stem = "SBCL_HOME="; + copied_core = copied_string(core); + dir = dirname(copied_core); + envstring = (char *) calloc(strlen(stem) + + strlen(dir) + + 1, + sizeof(char)); + sprintf(envstring, "%s%s", stem, dir); + putenv(envstring); + free(copied_core); + } } if (!noinform) {