Module Bz2

module Bz2: sig .. end

Bzip2 interface

The module Bz provides a basic interface to the bzip2 compression library.

Datatypes & exceptions

type in_channel 
type out_channel 
exception IO_error of string
Exception IO_error is raised when there is an error reading or writing on a compressed channel ; the string argument is the message reported by the OS.
exception Data_error
Exception Data_error is raised when a data integrity error is detected during decompression.
exception Unexpected_EOF
Exception Unexpected_EOF is raised when an in_channel finishes before the logical end of stream is detected.

When any of these exception is raised, the channel is automatically closed (but you still have to close the Pervasives channel).
val version : string
Version of the underlying bzip2 library.

File I/O

File input

val open_in : ?small:bool -> ?unused:string -> Pervasives.in_channel -> in_channel
open_in ic opens a compressed stream reading from the Pervasives input channel ic.
small : when true requests usage of a different method for decompressing that is slower but uses less memory. Defaults: false
val read : in_channel -> string -> int -> int -> int
read buf pos len reads up to len characters and store them in the string buffer buf, starting at position pos.
Raises End_of_file if end of stream was already reached.
Returns number of bytes actually read, (a value strictly less than len means end of stream).
val read_get_unused : in_channel -> string
If there's some data after the compressed stream that you want to read from the same Pervasives in_channel, use read_get_unused.
val close_in : in_channel -> unit

File output

val open_out : ?block:int -> Pervasives.out_channel -> out_channel
open_out oc creates an out_channel writing to the Pervasives output channel oc. Once the write operations are finished and the compressed channel is closed, it is possible to continue writing on the Pervasives channel. However, reading back requires special care (cf. above).
block : block size to use for compresion. It is a value between 1 and 9 inclusive. 9 is the default and provides best compression but takes most memory.
val write : out_channel -> string -> int -> int -> unit
write oc buf pos len writes len characters, coming from buf and starting at position pos, to oc
val close_out : out_channel -> unit

In-memory compression

These functions compress to/decompress from string buffers.
val compress : ?block:int -> string -> int -> int -> string
compress buf pos len compress a data chunk coming from buf, len character long, and starting at pos.
Returns compressed data chunk as string
val uncompress : ?small:bool -> string -> int -> int -> string
uncompress buf pos len uncompress a data chunk comfing from buf, len character long, and starting at pos.
Returns uncompressed data chunk as string
small : see Bz2.open_in above