anchor.diff:    (addrlen :pointer))
   
   (define-socket-call ("getsockopt" %getsockopt) :int
  -  "Retrieve socket configuration."
     (socket  fd)
     (level   :int)
     (optname :int)
  
positive.code:      ,@args))
  
  (defmacro define-socket-call (name return-type &body args)
    (multiple-value-bind (forms declarations docstring)
        (alexandria:parse-body args :documentation t)
      (declare (ignore declarations))
      `(deforeign ,name (errno-wrapper ,return-type
                                       :object ,(caar forms) ; the socket FD
                                       :error-generator signal-socket-error)
         ,docstring
         ,@forms)))
  
  (defctype fd :int)
  
negative.code: ;;;; sys/socket.h
  
  (define-socket-call ("accept" %accept) :int
    (socket  fd)
    (address :pointer) ; sockaddr-foo
    (addrlen :pointer))
  
  (define-socket-call ("bind" %bind) :int
    (socket  fd)
    (address :pointer)
    (addrlen socklen))
  
  (define-socket-call ("connect" %connect) :int
    (socket  fd)
    (address :pointer) ; sockaddr-foo
    (addrlen socklen))
  