chiark / gitweb /
sys-base.lisp: Support for newer `uiop'-based `cl-launch'.
[lisp] / sys-base.lisp
index 7e450a221f28cb0cc8eb6dc024ed9c310e883097..60bc8a405a5e22e0437d912b091420a322ff9b92 100644 (file)
@@ -41,11 +41,16 @@ (defvar *program-name*)
 (defun set-command-line-arguments ()
   (setf *command-line*
        (or (when (member :cl-launch *features*)
-             (let* ((cll-package (find-package :cl-launch))
-                    (name (funcall (intern "GETENV" cll-package)
-                                   "CL_LAUNCH_FILE"))
-                    (args (symbol-value (intern "*ARGUMENTS*"
-                                                cll-package))))
+             (let* ((uiop-package (find-package :uiop))
+                    (cll-package (find-package :cl-launch))
+                    (name (some (intern "GETENV"
+                                        (or uiop-package cll-package))
+                                (list "__CL_ARGV0" "CL_LAUNCH_FILE")))
+                    (args (symbol-value
+                           (if uiop-package
+                               (intern "*COMMAND-LINE-ARGUMENTS*"
+                                       uiop-package)
+                               (intern "*ARGUMENTS*" cll-package)))))
                (if name
                    (cons name args)
                    args)))