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 ""))