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.
;;; Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
(cl:defpackage #:optparse
;;; 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)
(cl:in-package #:optparse)
Set `*command-line*' and `*program-name*'."
(setf *command-line*
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))
- '("<unknown-script>"))
+ (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*))))
*program-name* (pathname-name (car *command-line*))))
a separate system because it has additional dependencies and
Lisp-system-specific code."
a separate system because it has additional dependencies and
Lisp-system-specific code."
+ :depends-on ("cl-launch" "sod")
:components
((:file "optparse")
:components
((:file "optparse")