Hash :
dc0fe1ee
Author :
Thomas de Grivel
Date :
2017-05-28T11:53:07
;;
;; fd-flexi - Unix file descriptor flexi streams for Common Lisp
;;
;; Copyright 2017 Thomas de Grivel <thoxdg@gmail.com>
;;
;; Permission to use, copy, modify, and distribute this software for any
;; purpose with or without fee is hereby granted, provided that the above
;; copyright notice and this permission notice appear in all copies.
;;
;; THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
;; WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
;; MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
;; ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
;; WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
;; ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
;; OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
;;
(in-package :fd-flexi)
(defun stream (fd &key (external-format :utf-8))
(make-flexi-stream (make-instance 'fd-gray:stream :fd fd)
:external-format external-format))
(defmacro with-stream ((var fd &key (external-format :utf-8)) &body body)
`(let ((,var (stream ,fd :external-format ,external-format)))
(unwind-protect (progn ,@body)
(close ,var))))