X-Git-Url: https://git.distorted.org.uk/~mdw/lisp/blobdiff_plain/2c13c1cd713e033763786de1ce9fc66565abb5df..8f801ae819d1f622601c9786a0fce27102b49378:/optparse.lisp diff --git a/optparse.lisp b/optparse.lisp index ff301ee..4207933 100644 --- a/optparse.lisp +++ b/optparse.lisp @@ -446,7 +446,7 @@ Ambiguous long option `~A' -- could be any of:~{~% --~A~}" on some parameters (the ARGS) and the value of an option-argument named ARG." (let ((func (intern (format nil "OPTHANDLER/~:@(~A~)" name)))) - (multiple-value-bind (docs decls body) (parse-body body) + (with-parsed-body (body decls docs) body `(progn (setf (get ',name 'opthandler) ',func) (defun ,func (,var ,arg ,@args) @@ -464,7 +464,7 @@ Ambiguous long option `~A' -- could be any of:~{~% --~A~}" if RADIX is nil. Returns two values: the integer parsed (or nil if there wasn't enough for a sensible parse), and the index following the characters of the integer." - (unless end (setf end (length string))) + (setf-default end (length string)) (labels ((simple (i r goodp sgn) (multiple-value-bind (a i) @@ -773,8 +773,7 @@ Ambiguous long option `~A' -- could be any of:~{~% --~A~}" (flet ((emit () (write-string string stream :start start :end i) (setf start i))) - (unless end - (setf end (length string))) + (setf-default end (length string)) (loop (unless (< i end) (emit)