doc/list-exports.lisp: Some sketchy code to report on exported symbols.
[sod] / src / optparse.lisp
index 38a3ae4..70bb012 100644 (file)
@@ -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)
 
    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*))))
 
   "Increments VAR by STEP (defaults to 1), but not greater than MAX (default
    nil for no maximum).  No errors are signalled."
   (incf var step)
-  (when (>= var max)
+  (when (and max (>= var max))
     (setf var max)))
 
 (export 'dec)
   "Decrements VAR by STEP (defaults to 1), but not less than MIN (default nil
    for no maximum).  No errors are signalled."
   (decf var step)
-  (when (<= var min)
+  (when (and min (<= var min))
     (setf var min)))
 
 (export 'read)
 ;;;--------------------------------------------------------------------------
 ;;; Full program descriptions.
 
+(export '(*help* *version* *usage*))
 (defvar *help* nil "Help text describing the program.")
 (defvar *version* "<unreleased>" "The program's version number.")
 (defvar *usage* nil "A usage summary string")