• Properties

  • Git HTTP https://git.kmx.io/cffi-posix/fd-gray.git
    Git SSH git@git.kmx.io:cffi-posix/fd-gray.git
    Public access ? public
    Description

    Unix file descriptor gray streams for Common Lisp

    Users
    thodg
    Tags

  • README.md

  • fd-gray

    fd-gray streams are binary gray streams operating on (unsigned-byte 8) data using unistd:read, unistd:write and unistd:close to embed Unix file descriptors in standard Common Lisp streams.

    fd-gray:input-stream fd –> stream

    Creates an input stream for file descriptor fd.

    (let ((seq (make-array 128 '(unsigned-byte 8))))
      (read-sequence seq (fd-gray:input-stream 0)))

    fd-gray:output-stream fd –> stream

    Creates an output stream for file descriptor fd.

    (let ((seq (make-array 128 '(unsigned-byte 8))))
      (write-sequence seq (fd-gray:output-stream 1)))

    fd-gray:io-stream fd –> stream

    Creates an input/output stream for file descriptor fd.

    (let ((seq (make-array 128 '(unsigned-byte 8))
          (stream (fd-gray:io-stream (fcntl:open "file.bin" fcntl:+o-rdwr+))))
      (read-sequence seq stream)
      (write-sequence seq stream))

    fd-gray:with-input-stream (var fd) &body body –> result

    Creates an input stream for file descriptor fd that will be closed returning from body.

    (fd-gray:with-input-stream (in (fcntl:open "file.bin" fcntl:+o-rdonly+))
      (let ((seq (make-array 128 '(unsigned-byte 8))))
        (read-sequence seq in)
        seq))

    fd-gray:with-output-stream (var fd) &body body –> result

    Creates an output stream for file descriptor fd that will be closed returning from body.

    (let ((seq (make-array 128 '(unsigned-byte 8))))
      (fd-gray:with-output-stream (out (fcntl:open "file.bin" fcntl:+o-wronly+))
        (write-sequence seq out)))

    fd-gray:with-io-stream (var fd) &body body –> result

    Creates an input/output stream for file descriptor fd that will be closed returning from body.

    (fd-gray:with-io-stream (out (fcntl:open "file.bin" fcntl:+o-rdwr+))
      (let ((seq (make-array 128 '(unsigned-byte 8))))
        (read-sequence seq out)
        (write-sequence seq out)))