From 4ac20e3bbed1cba5c16d4573431db20a84d5e28b Mon Sep 17 00:00:00 2001 From: Mark Wooding Date: Mon, 17 Aug 2015 17:44:57 +0100 Subject: [PATCH] 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. --- src/optparse.lisp | 24 ++++++++---------------- src/sod-frontend.asd | 2 +- 2 files changed, 9 insertions(+), 17 deletions(-) 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") -- 2.11.0