;; with-open-file.jl --- Lisp-style with-open-file macro
;;
;; Author: Mark Triggs <mst@dishevelled.net>
;;

(defmacro with-open-file (filespec &rest body)
  (let ((f (car filespec))
        (file (cadr filespec))
        (direction (caddr filespec)))
    `(let ((,f (open-file ,file ,direction)))
       (unwind-protect
           ,@body
         (when ,f
           (close-file ,f))))))

(provide 'with-open-file)
