module Fromfile (F : FILENAME) : DISKDATA =
  struct
    (* On effectue les 3 liaisons simultanément afin de pouvoir
       refermer le descripteur ouvert en cas d'erreur. *)
    let block_sizeblock_nbblocks =
      let chan = open_in F.name in
      try_finalize
        begin fun () ->
          let block_size = input_binary_int chan in
          let block_nb = input_binary_int chan in
          let blocks =
            let block_init i =
              Array.init block_size (fun _ -> input_binary_int chanin
            Array.init block_nb block_init in
          block_sizeblock_nbblocks
        end () close_in chan
  end;;