From: Mark Wooding Date: Mon, 17 Aug 2015 16:44:57 +0000 (+0100) Subject: src/optparse.lisp: Simplify `set-command-line-arguments'. X-Git-Tag: 0.2.0~72 X-Git-Url: https://git.distorted.org.uk/~mdw/sod/commitdiff_plain/4ac20e3bbed1cba5c16d4573431db20a84d5e28b src/optparse.lisp: Simplify `set-command-line-arguments'. If we depend on `cl-launch' and assume that we're always started through it then we don't need to do such complicated things to put together the command line. It's not all happy bunnies, unfortunately, because we have to mess with system-specific details to discover the program name from a dumped executable image. --- diff --git a/src/optparse.lisp b/src/optparse.lisp index fc46ba4..70bb012 100644 --- a/src/optparse.lisp +++ b/src/optparse.lisp @@ -24,7 +24,7 @@ ;;; Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. (cl:defpackage #:optparse - (:use #:common-lisp #:sod-utilities)) + (:use #:common-lisp #:cl-launch #:sod-utilities)) (cl:in-package #:optparse) @@ -62,21 +62,13 @@ Set `*command-line*' and `*program-name*'." (setf *command-line* - (or (when (member :cl-launch *features*) - (let* ((cllpkg (find-package :cl-launch)) - (name (funcall (intern "GETENV" cllpkg) - "CL_LAUNCH_FILE")) - (args (symbol-value (intern "*ARGUMENTS*" cllpkg)))) - (if name - (cons name args) - args))) - #+sbcl sb-ext:*posix-argv* - #+cmu ext:*command-line-strings* - #+clisp (loop with argv = (ext:argv) - for i from 7 below (length argv) - collect (aref argv i)) - #+ecl (loop from i below (ext:argc) collect (ext:argv i)) - '("")) + (cons (or (getenv "CL_LAUNCH_FILE") + #+sbcl (car sb-ext:*posix-argv*) + #+cmu (car ext:*command-line-strings*) + #+clisp (aref (ext:argv) 0) + #+ecl (ext:argv 0) + #-(or sbcl cmu clisp ecl) "sod") + *arguments*) *program-name* (pathname-name (car *command-line*)))) diff --git a/src/sod-frontend.asd b/src/sod-frontend.asd index 348c4be..6ba17cd 100644 --- a/src/sod-frontend.asd +++ b/src/sod-frontend.asd @@ -49,7 +49,7 @@ a separate system because it has additional dependencies and Lisp-system-specific code." - :depends-on ("sod") + :depends-on ("cl-launch" "sod") :components ((:file "optparse")