Update of /project/pg/cvsroot/pg In directory common-lisp.net:/tmp/cvs-serv4507
Modified Files: sysdep.lisp Log Message: Fix the SB-ROTATE-BYTE dependency for SBCL (was loaded twice, with unfortunate consequences).
Add support for unix-socket connections to the backend for SBCL.
(Thanks to Andreas Fuchs)
Date: Mon Dec 19 23:21:50 2005 Author: emarsden
Index: pg/sysdep.lisp diff -u pg/sysdep.lisp:1.11 pg/sysdep.lisp:1.12 --- pg/sysdep.lisp:1.11 Mon Dec 19 23:18:32 2005 +++ pg/sysdep.lisp Mon Dec 19 23:21:50 2005 @@ -146,27 +146,30 @@ :transport-error e))))
#+sbcl -(defun socket-connect (port host) +(defun socket-connect (port host-name) (declare (type integer port)) - (handler-case - (sb-bsd-sockets:socket-make-stream - (if host - (let ((s (make-instance 'sb-bsd-sockets:inet-socket - :type :stream :protocol :tcp)) - (num (car (sb-bsd-sockets:host-ent-addresses - (sb-bsd-sockets:get-host-by-name host))))) - (sb-bsd-sockets:socket-connect s num port) - s) - (let ((s (make-instance 'sb-bsd-sockets:local-socket :type :stream))) - (sb-bsd-sockets:socket-connect - s (format nil "/var/run/postgresql/.s.PGSQL.~D" port)) - s)) - :element-type '(unsigned-byte 8) - :input t - :output t - :buffering :none) - (error (e) - (error 'connection-failure :host host :port port :transport-error e)))) + (let ((host (if (typep host-name 'pathname) + (namestring host-name) + host-name))) + (handler-case + (sb-bsd-sockets:socket-make-stream + (if (eql #/ (char host 0)) + (let ((s (make-instance 'sb-bsd-sockets:local-socket :type :stream))) + (sb-bsd-sockets:socket-connect + s (format nil "~A.s.PGSQL.~D" (string host) port)) + s) + (let ((s (make-instance 'sb-bsd-sockets:inet-socket + :type :stream :protocol :tcp)) + (num (car (sb-bsd-sockets:host-ent-addresses + (sb-bsd-sockets:get-host-by-name host))))) + (sb-bsd-sockets:socket-connect s num port) + s)) + :element-type '(unsigned-byte 8) + :input t + :output t + :buffering :none) + (error (e) + (error 'connection-failure :host host :port port :transport-error e)))))
#+allegro (defun socket-connect (port host)