X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fcommon-os.lisp;h=bf7174477bf001e90a7516348eaa720dad8a82d1;hb=5762f26aae78beaead9919074963f67d92794599;hp=51ebbc1a7e65eba367e9e63ff89ba12d6b54f3a7;hpb=01488e5ddb6c8c10bc01bc9c502be1fe9de8e370;p=sbcl.git diff --git a/src/code/common-os.lisp b/src/code/common-os.lisp index 51ebbc1..bf71744 100644 --- a/src/code/common-os.lisp +++ b/src/code/common-os.lisp @@ -15,7 +15,10 @@ (sb!alien:define-alien-variable ("posix_argv" *native-posix-argv*) (* (* char))) (sb!alien:define-alien-variable ("core_string" *native-core-string*) (* char)) -(sb!alien:define-alien-routine os-get-runtime-executable-path sb!alien:c-string) +(sb!alien:define-alien-routine + os-get-runtime-executable-path sb!alien:c-string (external-path boolean)) +(sb!alien:define-alien-variable + ("saved_runtime_path" *native-saved-runtime-path*) (* char)) ;;; if something ever needs to be done differently for one OS, then ;;; split out the different part into per-os functions. @@ -43,5 +46,8 @@ (setf *core-pathname* (merge-pathnames (native-pathname *core-string*))) (/show0 "setting *RUNTIME-PATHNAME*") - (setf *runtime-pathname* (native-pathname (os-get-runtime-executable-path))) + (let ((exe (os-get-runtime-executable-path t)) + (saved (sb!alien:cast *native-saved-runtime-path* sb!alien:c-string))) + (setf *runtime-pathname* + (when (or exe saved) (native-pathname (or exe saved))))) (/show0 "leaving OS-COLD-INIT-OR-REINIT"))