Update of /project/beirc/cvsroot/beirc
In directory common-lisp.net:/tmp/cvs-serv9128
Modified Files:
presentations.lisp
Log Message:
add a few more checks for channel-name-ness, inspired by rfcs 2811 and 2813
Date: Sat Oct 1 20:18:50 2005
Author: afuchs
Index: beirc/presentations.lisp
diff -u beirc/presentations.lisp:1.6 beirc/presentations.lisp:1.7
--- beirc/presentations.lisp:1.6 Fri Sep 30 15:30:36 2005
+++ beirc/presentations.lisp Sat Oct 1 20:18:50 2005
@@ -116,7 +116,18 @@
(defun channelp (channel)
(and (stringp channel)
(> (length channel) 2)
- (not (null (member (char channel 0) '(#\# #\+ #\! #\&))))))
+ (< (length channel) 50)
+ (member (char channel 0) '(#\# #\+ #\! #\&))
+ (not (find-if (lambda (c)
+ (member c `(#\Space
+ #\, ,(code-char 7)
+ ;; XXX: #\: is used to separate the
+ ;; channel name from the channel
+ ;; mask, and so isn't a part of the
+ ;; channel name. see rfc2811 for
+ ;; details.
+ #\:)))
+ channel))))
(define-presentation-method accept ((type channel) *standard-input* (view textual-view) &key)
(let ((channel (accept 'string :view view :prompt nil)))