X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=contrib%2Fsb-bsd-sockets%2Flocal.lisp;h=ccc220b08d1e68089284cce941f3ec31a1bdbba3;hb=d4c7ab04ed10729a2cfa3321f4382d8a218ad958;hp=cf106f1ae7b27538dd2a2834a0d88064fa33a1b1;hpb=235c8f10a2d6b6f34e0122aa2b4ac57c74e3a484;p=sbcl.git diff --git a/contrib/sb-bsd-sockets/local.lisp b/contrib/sb-bsd-sockets/local.lisp index cf106f1..ccc220b 100644 --- a/contrib/sb-bsd-sockets/local.lisp +++ b/contrib/sb-bsd-sockets/local.lisp @@ -19,22 +19,17 @@ a network. (let ((sockaddr (or sockaddr (sockint::allocate-sockaddr-un)))) (setf (sockint::sockaddr-un-family sockaddr) sockint::af-local) (when filename - (loop for c across filename - ;; XXX magic constant ew ew ew. should grovel this from - ;; system headers - for i from 0 to (min 107 (1- (length filename))) - do (setf (sockint::sockaddr-un-path sockaddr i) (char-code c)) - finally - (setf (sockint::sockaddr-un-path sockaddr (1+ i)) 0))) + (setf (sockint::sockaddr-un-path sockaddr) filename)) sockaddr)) +(defmethod free-sockaddr-for ((socket local-socket) sockaddr) + (sockint::free-sockaddr-un sockaddr)) + (defmethod size-of-sockaddr ((socket local-socket)) sockint::size-of-sockaddr-un) (defmethod bits-of-sockaddr ((socket local-socket) sockaddr) "Return the file name of the local socket address SOCKADDR." - (let ((name (sb-c-call::%naturalize-c-string - (sb-sys:sap+ (sb-grovel::array-data-address sockaddr) - sockint::offset-of-sockaddr-un-path)))) + (let ((name (sockint::sockaddr-un-path sockaddr))) (if (zerop (length name)) nil name)))