Sophie

Sophie

distrib > Mageia > 4 > x86_64 > by-pkgid > da6a3126ede73105f5d0623cfe5583cb > files > 26

ocaml-lzma-devel-0.01-9.mga4.x86_64.rpm

open Lzma

let load_file f =
  let ic = open_in f in
  let n = in_channel_length ic in
  let s = String.create n in
  really_input ic s 0 n;
  close_in ic;
  (s)

let filename = "./test_data.txt"

let buf_len = Sys.max_string_length

let () =
  let data = load_file filename in
  Printf.eprintf "data length: %d\n" (String.length data);
  let strm = new_lzma_stream() in

  let options = new_lzma_options() in
  lzma_preset ~options ~level:9 ~preset_extreme:true;
  lzma_alone_encoder ~strm ~options;  (* select lzma file format *)

  let buf = String.create buf_len in
  try
    let avail_in, avail_out =
      lzma_code ~strm ~action:LZMA_FINISH
                ~next_in:data
                ~next_out:buf
                ~ofs_in:0
                ~ofs_out:0
    in
    Printf.eprintf "avail_in: %d  avail_out: %d\n" avail_in avail_out;
  with EOF n ->
    lzma_end ~strm;
    let str = String.sub buf 0 (buf_len - n) in
    print_string str;
    flush stdout;
;;