with-open-passive-socket ver 20120322
with-open-passive-socket 改 ver 20110709 - Shammerismで完成かと思っていたが、一部冗長なところが見つかったので改良。
(defmacro with-open-passive-socket (&rest body) (let ((server-symbol-value (caar body)) (server-listen-addr (cadar body)) (server-listen-port (caddar body)) (main-body (cdr body))) `(let ((,server-symbol-value (open-socket-server ,server-listen-addr ,server-listen-port))) (unwind-protect (when ,server-symbol-value ,@main-body) (unless (null ,server-symbol-value) (format t "Close server socket...~%") (close-server-socket ,server-symbol-value))))))
main-body は一旦バラバラにして再度リストにしていたが、こんなことはする必要なかった。