From bmastenbrook at common-lisp.net Fri May 21 16:41:58 2004 From: bmastenbrook at common-lisp.net (Brian Mastenbrook) Date: Fri, 21 May 2004 12:41:58 -0400 Subject: [Cl-irc-cvs] CVS update: cl-irc/command.lisp cl-irc/parse-message.lisp cl-irc/protocol.lisp Message-ID: Update of /project/cl-irc/cvsroot/cl-irc In directory common-lisp.net:/tmp/cvs-serv15936 Modified Files: command.lisp parse-message.lisp protocol.lisp Log Message: OpenMCL patches from marco (segv) Date: Fri May 21 12:41:58 2004 Author: bmastenbrook Index: cl-irc/command.lisp diff -u cl-irc/command.lisp:1.3 cl-irc/command.lisp:1.4 --- cl-irc/command.lisp:1.3 Thu Mar 18 16:57:25 2004 +++ cl-irc/command.lisp Fri May 21 12:41:58 2004 @@ -1,4 +1,4 @@ -;;;; $Id: command.lisp,v 1.3 2004/03/18 21:57:25 ehuelsmann Exp $ +;;;; $Id: command.lisp,v 1.4 2004/05/21 16:41:58 bmastenbrook Exp $ ;;;; $Source: /project/cl-irc/cvsroot/cl-irc/command.lisp,v $ ;;;; See LICENSE for licensing information. @@ -237,22 +237,26 @@ (defmethod time- ((connection connection) &optional (target "")) (send-irc-message connection :time nil target)) -#+sbcl (defun connect-to-server-socket (host port) + #+sbcl (let ((s (make-instance 'sb-bsd-sockets:inet-socket :type :stream :protocol :tcp))) (sb-bsd-sockets:socket-connect s (car (sb-bsd-sockets:host-ent-addresses (sb-bsd-sockets:get-host-by-name host))) port) - s)) + s) + #+openmcl + (ccl:make-socket :remote-host host :remote-port port)) -#+sbcl (defun socket-stream (socket) + #+sbcl (sb-bsd-sockets:socket-make-stream socket :element-type 'character :input t :output t - :buffering :none)) + :buffering :none) + #+openmcl + socket) (defun connect (&key (nickname *default-nickname*) (username nil) @@ -262,15 +266,15 @@ (port *default-irc-server-port*) (logging-stream t)) "Connect to server and return a connection object." - (let* ((socket #+sbcl (connect-to-server-socket server port) - #-sbcl nil) + (let* ((socket #+(or sbcl openmcl) (connect-to-server-socket server port)) (stream #+lispworks (comm:open-tcp-stream server port :errorp t) #+cmu (sys:make-fd-stream (ext:connect-to-inet-socket server port) :input t :output t :element-type 'character) #+allegro (socket:make-socket :remote-host server :remote-port port) - #+sbcl (socket-stream socket)) + #+sbcl (socket-stream socket) + #+openmcl socket) (user (make-user :nickname nickname :username username :realname realname)) Index: cl-irc/parse-message.lisp diff -u cl-irc/parse-message.lisp:1.1.1.1 cl-irc/parse-message.lisp:1.2 --- cl-irc/parse-message.lisp:1.1.1.1 Mon Jan 5 09:13:04 2004 +++ cl-irc/parse-message.lisp Fri May 21 12:41:58 2004 @@ -1,4 +1,4 @@ -;;;; $Id: parse-message.lisp,v 1.1.1.1 2004/01/05 14:13:04 eenge Exp $ +;;;; $Id: parse-message.lisp,v 1.2 2004/05/21 16:41:58 bmastenbrook Exp $ ;;;; $Source: /project/cl-irc/cvsroot/cl-irc/parse-message.lisp,v $ ;;;; See the LICENSE file for licensing information. @@ -167,15 +167,17 @@ (when ctcp (setf class (find-ctcp-message-class ctcp))) (let ((instance (make-instance class - :source source - :user user - :host host - :command command + :source (or source "") + :user (or user "") + :host (or host "") + :command (if command + (string command) + "") :arguments arguments :connection nil - :trailing-argument trailing-argument + :trailing-argument (or trailing-argument "") :received-time (get-universal-time) - :raw-message-string string))) + :raw-message-string (or string "")))) (when ctcp (setf (ctcp-command instance) ctcp)) instance)))) Index: cl-irc/protocol.lisp diff -u cl-irc/protocol.lisp:1.6 cl-irc/protocol.lisp:1.7 --- cl-irc/protocol.lisp:1.6 Sat Apr 17 07:15:50 2004 +++ cl-irc/protocol.lisp Fri May 21 12:41:58 2004 @@ -1,4 +1,4 @@ -;;;; $Id: protocol.lisp,v 1.6 2004/04/17 11:15:50 ehuelsmann Exp $ +;;;; $Id: protocol.lisp,v 1.7 2004/05/21 16:41:58 bmastenbrook Exp $ ;;;; $Source: /project/cl-irc/cvsroot/cl-irc/protocol.lisp,v $ ;;;; See LICENSE for licensing information. @@ -142,14 +142,15 @@ #+allegro (mp:process-run-function name function) #+cmu (mp:make-process function :name name) #+lispworks (mp:process-run-function name nil function) - #+sb-thread (sb-thread:make-thread function)) + #+sb-thread (sb-thread:make-thread function) + #+openmcl (ccl:process-run-function name function)) (defmethod start-background-message-handler ((connection connection)) "Read messages from the `connection', parse them and dispatch irc-message-event on them. Returns background process ID if available." (flet ((do-loop () (read-message-loop connection))) (let ((name (format nil "irc-hander-~D" (incf *process-count*)))) - #+(or allegro cmu lispworks sb-thread) + #+(or allegro cmu lispworks sb-thread openmcl) (start-process #'do-loop name) #+(and sbcl (not sb-thread)) (sb-sys:add-fd-handler (sb-bsd-sockets:socket-file-descriptor @@ -163,7 +164,8 @@ #+cmu (mp:destroy-process process) #+allegro (mp:process-kill process) #+sb-thread (sb-thread:destroy-thread process) - #+lispworks (mp:process-kill process)) + #+lispworks (mp:process-kill process) + #+openmcl (ccl:process-kill process)) (defmethod read-message-loop ((connection connection)) (loop while (read-message connection))) @@ -251,7 +253,14 @@ :stream (sb-bsd-sockets:socket-make-stream socket :input t :output t :buffering :none) :socket socket :output-stream t)) - #-sbcl + #+openmcl + (let ((socket-stream (ccl:make-socket :remote-host remote-address + :remote-port remote-port))) + (make-instance 'dcc-connection + :user user + :stream socket-stream + :output-stream output-stream)) + #-(or openmcl sbcl) (warn "make-dcc-connection not supported for this implementation.")) (defgeneric dcc-close (connection)) @@ -596,6 +605,7 @@ :pong :invite)) (defmethod find-irc-message-class (type) + (declare (ignore type)) (find-class 'irc-message)) (defmethod client-log ((connection connection) (message irc-message) &optional (prefix "")) @@ -645,6 +655,7 @@ :dcc-send-request)) (defmethod find-ctcp-message-class (type) + (declare (ignore type)) (find-class 'standard-ctcp-message)) (defmethod client-log ((connection connection) (message ctcp-mixin) &optional (prefix "")) From bmastenbrook at common-lisp.net Fri May 21 18:56:10 2004 From: bmastenbrook at common-lisp.net (Brian Mastenbrook) Date: Fri, 21 May 2004 14:56:10 -0400 Subject: [Cl-irc-cvs] CVS update: cl-irc/parse-message.lisp Message-ID: Update of /project/cl-irc/cvsroot/cl-irc In directory common-lisp.net:/tmp/cvs-serv5216 Modified Files: parse-message.lisp Log Message: Disable irc-error-reply-p for now Date: Fri May 21 14:56:10 2004 Author: bmastenbrook Index: cl-irc/parse-message.lisp diff -u cl-irc/parse-message.lisp:1.2 cl-irc/parse-message.lisp:1.3 --- cl-irc/parse-message.lisp:1.2 Fri May 21 12:41:58 2004 +++ cl-irc/parse-message.lisp Fri May 21 14:56:10 2004 @@ -1,4 +1,4 @@ -;;;; $Id: parse-message.lisp,v 1.2 2004/05/21 16:41:58 bmastenbrook Exp $ +;;;; $Id: parse-message.lisp,v 1.3 2004/05/21 18:56:10 bmastenbrook Exp $ ;;;; $Source: /project/cl-irc/cvsroot/cl-irc/parse-message.lisp,v $ ;;;; See the LICENSE file for licensing information. @@ -151,7 +151,9 @@ (ctcp (ctcp-message-type trailing-argument))) (when command (cond - ((irc-error-reply-p command) + (nil ;(irc-error-reply-p command) + ;; Disable for now, as it prevents adding hooks for some useful + ;; error types (progn (setf command (find-reply-name (parse-integer command))) (setf class 'irc-error-reply))) From bmastenbrook at common-lisp.net Fri May 21 19:12:07 2004 From: bmastenbrook at common-lisp.net (Brian Mastenbrook) Date: Fri, 21 May 2004 15:12:07 -0400 Subject: [Cl-irc-cvs] CVS update: cl-irc/event.lisp Message-ID: Update of /project/cl-irc/cvsroot/cl-irc In directory common-lisp.net:/tmp/cvs-serv30690 Modified Files: event.lisp Log Message: Bug fix Date: Fri May 21 15:12:06 2004 Author: bmastenbrook Index: cl-irc/event.lisp diff -u cl-irc/event.lisp:1.3 cl-irc/event.lisp:1.4 --- cl-irc/event.lisp:1.3 Thu Mar 18 16:57:25 2004 +++ cl-irc/event.lisp Fri May 21 15:12:06 2004 @@ -1,4 +1,4 @@ -;;;; $Id: event.lisp,v 1.3 2004/03/18 21:57:25 ehuelsmann Exp $ +;;;; $Id: event.lisp,v 1.4 2004/05/21 19:12:06 bmastenbrook Exp $ ;;;; $Source: /project/cl-irc/cvsroot/cl-irc/event.lisp,v $ ;;;; See LICENSE for licensing information. @@ -26,9 +26,10 @@ (realname (trailing-argument message)) (username (third (arguments message))) (hostname (fourth (arguments message)))) - (setf (realname user) realname) - (setf (username user) username) - (setf (hostname user) hostname))) + (when user + (setf (realname user) realname) + (setf (username user) username) + (setf (hostname user) hostname)))) (defmethod default-hook ((message irc-rpl_list-message)) (let ((connection (connection message))