(* Copyright 2001, 2002 b8_bavard, b8_fee_carabine, INRIA *)
(*
    This file is part of mldonkey.

    mldonkey is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    mldonkey is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with mldonkey; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*)

let bz2_extract filename =
  if Autoconf.system = "openbsd" then
    failwith "bz2 not supported on this platform"
  else begin
    let file = ref "" in
    try
      let buffer = String.create 4096 in
      let file_out = Filename.temp_file "arch_" ".tmp" in
      file := file_out;
      let ic = Bzip2.open_in filename
      in
      let oc = open_out_bin file_out in
	let rec decompress () =
	  let n = Bzip2.input ic buffer 0 (String.length buffer) in
            if n = 0 then ()
	    else
	      begin
		output oc buffer 0 n;
		decompress()
	      end
	    in decompress();
            Bzip2.close_in ic;
	    close_out oc;
	    file_out
    with e -> (try Sys.remove !file with _ -> ()); raise e
  end

let bzlib_version_num () =
  begin
    try
      let s = Printf.sprintf "%s" (Bzlib.bzlib_version ()) in s
    with e -> ""
  end
