anchor.diff:    (let ((code (or ecode *errno*)))
       (error 'posix-error :code code)))
   
  +(defun with-funcall-else-socket-error (call)
  +  (if (= call +socket-error+)
  +      (get-last-error)
  +      nil))
   ;; --------------------------------------
   
   (defctype canid_t :uint32) 
  
positive.code: 
  Returns (values count addr) where
  COUNT ::= number of octets actually received, which can be less tha nthe number requested.
  ADDR ::= remote address from which the data was received.
  "
    (declare (type (or (vector (unsigned-byte 8)) foreign-pointer can-packet) buffer))
    (etypecase buffer
  
negative.code: (defun socket-shutdown (fd &optional (how :receive))
    "Shutdown traffic on the TCP socket.
  HOW ::= :SEND to stop sending, :RECEIVE to stop receiving, :BOTH to stop both."
    (with-funcall-else-socket-error      
        (%shutdown-socket fd
  			(ecase how
  			  (:send 1)
  			  (:both 2)
  			  (:receive 0)))))
      
  ;; ------------------------------------------------
  
  (defctype size-t
  