anchor.diff:      ((vector (unsigned-byte 8))
        (let ((count (- (or end (length buffer)) start)))
          (with-foreign-object (p :uint8 count)
  -	 (let ((sts (with-funcall-else-socket-error (%recv fd p count 0))))		 
  +	 (let ((sts (with-syscall-else-error (%recv fd p count 0) +socket-error+)))		 
   	   (dotimes (i sts)
   	     (setf (aref buffer (+ start i))
   		   (mem-aref p :uint8 i)))
   	   sts))))
       (foreign-pointer
        (let ((count (- (or end (error "Must provide end when passing pointer")) start)))
  -       (with-funcall-else-socket-error (%recv fd 
  +       (with-syscall-else-error (%recv fd 
   			 (inc-pointer buffer start)
   			 count
  -			 0))))
  +			 0)
  +	 +socket-error+)))
  +			 
       (can-packet
        (with-foreign-object (frame '(:struct can-frame))
  -       (let ((sts (with-funcall-else-socket-error
  -		      (%read fd frame (foreign-type-size '(:struct can-frame))))))	 
  +       (let ((sts (with-syscall-else-error
  +		      (%read fd frame (foreign-type-size '(:struct can-frame)))
  +		    +socket-error+)))	 
   	 (with-foreign-slots ((can_id can_dlc data) frame (:struct can-frame))
   	   (let* ((ptr-data (foreign-slot-pointer frame '(:struct can-frame) 'data))
   		  (data (foreign-array-to-lisp ptr-data `(:array :int8 ,can_dlc))))
   	     (setf (can-packet-id buffer) can_id
   		   (can-packet-data buffer) data)
   	     (with-foreign-object (tv '(:struct timeval))
  -	       (%ioctl fd +siocgstamp+ tv)
  +	       (with-syscall-else-error (%ioctl fd +siocgstamp+ tv) +syscall-error+)
   	       (with-foreign-slots ((tv_sec tv_usec) tv (:struct timeval))
   		 (setf (can-packet-timestamp buffer) (list tv_sec tv_usec))))))
   	 sts)))))
  
positive.code: 	     (setf (foreign-slot-value frame '(:struct can-frame) 'can_dlc) payload-size)
  	     (let ((ptr (foreign-slot-pointer frame '(:struct can-frame) 'data)))	       
  	       (lisp-array-to-foreign payload ptr `(:array :uint8 ,payload-size)))
  	     (%write fd frame (foreign-type-size '(:struct can-frame)))))))))
  	 
  ;; ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
  ;;                const struct sockaddr *dest_addr, socklen_t addrlen);
  
negative.code: 
  Returns the number of octets actually sent, which can be less than the number requested."
    (declare (type (or (vector (unsigned-byte 8)) foreign-pointer can-packet) buffer))
    (with-syscall-else-error
        (etypecase buffer
  	((vector (unsigned-byte 8))
  	 (let ((count (- (or end (length buffer)) start))
  