X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/lisp/blobdiff_plain/2c13c1cd713e033763786de1ce9fc66565abb5df..refs/heads/public:/optparse.lisp diff --git a/optparse.lisp b/optparse.lisp index ff301ee..4207933 100644 --- a/optparse.lisp +++ b/optparse.lisp @@ -446,7 +446,7 @@ (defmacro defopthandler (name (var &optional (arg (gensym))) 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 @@ (defun parse-c-integer (string &key radix (start 0) end) 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 @@ (defun print-text (string (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)