9.1
libz
| (require libz) | package: libz |
Racket bindings to zlib for gzip compression.
1 One-Shot Compression
procedure
(gzip-compress src [level]) → bytes?
src : bytes? level : gzip-level/c = 6
Compresses src using gzip format and returns the compressed bytes.
(require libz) (define compressed (gzip-compress #"hello world")) (gzip-decompress compressed)
procedure
(gzip-decompress src [max-decompressed-size]) → bytes?
src : bytes? max-decompressed-size : (or/c #f exact-positive-integer?) = #f
Decompresses gzip-encoded src and returns the original bytes. If
max-decompressed-size is not #f, limits the output size to
prevent decompression bombs.
value
Integer in the range 0 to 9.
2 Buffer Compression
procedure
(gzip-compress! src dst [level]) → exact-nonnegative-integer?
src : bytes? dst : bytes? level : gzip-level/c = 6
Compresses src into the pre-allocated buffer dst using gzip
format. Returns the number of bytes written. Raises an error if dst is
too small.
procedure
(gzip-decompress! src dst) → exact-nonnegative-integer?
src : bytes? dst : bytes?
Decompresses gzip-encoded src into the pre-allocated buffer
dst. Returns the number of bytes written. Raises an error if
dst is too small.
3 Streaming Ports
procedure
(open-gzip-output out [ #:level level #:close? close? #:name name]) → output-port? out : output-port? level : gzip-level/c = 6 close? : boolean? = #t name : symbol? = 'gzip-output
Returns an output port that compresses data written to it using gzip format and
forwards the compressed bytes to out. Closing the returned port flushes
the remaining compressed data. If close? is #t, closing also
closes out.
(require libz) (define out (open-output-bytes)) (define gzip-out (open-gzip-output out)) (write-bytes #"hello world" gzip-out) (close-output-port gzip-out) (gzip-decompress (get-output-bytes out))
procedure
(open-gzip-input in [ #:close? close? #:name name]) → input-port? in : input-port? close? : boolean? = #t name : symbol? = 'gzip-input
Returns an input port that decompresses gzip-encoded data read from
in. If close? is #t, closing the returned port also
closes in.