zlib bindings for Chicken Scheme
zlib is a popular data compression library that uses the DEFLATE algorithm internally. It is defined in RFC 1950.
These bindings provide two procedures:
(open-zlib-compressed-input-port [INPUT-PORT]) (open-zlib-compressed-output-port [OUTPUT-PORT])
The first is for inflating an existing zlib stream and the second for deflating data into a new stream.
Inflating a stream:
(with-input-from-port (open-zlib-compressed-input-port) read-string)
Deflating a stream:
(with-output-to-port (open-zlib-compressed-output-port) (lambda () (write-string (read-string)) (close-output-port (current-output-port))))
- This is expecting the zlib format, not raw DEFLATE or the gzip format, which are defined in RFCs 1951 and 1952 respectively.
- When finished deflating, it is important to always close the zlib output-port. This will ensure that the zlib trailing data is written along with any data still buffered. The destination port will remain open after the zlib port is closed.