Update of /project/cl-irc/cvsroot/cl-irc In directory common-lisp.net:/tmp/cvs-serv31157
Modified Files: utility.lisp Log Message: fix parsing of mode args that contain #+ or #-, e.g. -o+b.
Date: Mon Oct 3 16:11:03 2005 Author: afuchs
Index: cl-irc/utility.lisp diff -u cl-irc/utility.lisp:1.7 cl-irc/utility.lisp:1.8 --- cl-irc/utility.lisp:1.7 Sun Apr 17 21:45:42 2005 +++ cl-irc/utility.lisp Mon Oct 3 16:11:02 2005 @@ -1,4 +1,4 @@ -;;;; $Id: utility.lisp,v 1.7 2005/04/17 19:45:42 ehuelsmann Exp $ +;;;; $Id: utility.lisp,v 1.8 2005/10/03 14:11:02 afuchs Exp $ ;;;; $Source: /project/cl-irc/cvsroot/cl-irc/utility.lisp,v $
;;;; See the LICENSE file for licensing information. @@ -319,18 +319,21 @@ (unless (position this-op "+-") (throw 'illegal-mode-spec nil)) (dotimes (i (length modes)) - (let* ((mode-rec - (mode-description connection target - (mode-name-from-char connection target - (char modes i)))) - (param-p (funcall param-req mode-rec))) - (when (and param-p - (= 0 (length arguments))) - (throw 'illegal-mode-spec nil)) - (push (list this-op - (mode-desc-symbol mode-rec) - (when param-p - (if (mode-desc-nick-param-p mode-rec) - (find-user connection (pop arguments)) - (pop arguments)))) ops))))))))) + (case (char modes i) + ((#+ #-) (setf this-op (char modes i))) + (t + (let* ((mode-rec + (mode-description connection target + (mode-name-from-char connection target + (char modes i)))) + (param-p (funcall param-req mode-rec))) + (when (and param-p + (= 0 (length arguments))) + (throw 'illegal-mode-spec nil)) + (push (list this-op + (mode-desc-symbol mode-rec) + (when param-p + (if (mode-desc-nick-param-p mode-rec) + (find-user connection (pop arguments)) + (pop arguments)))) ops)))))))))))