let copy_file src dst =
  try
    with_file_in_bin src
      (fun inch ->
         with_file_out_bin dst (fun outch -> copy_channels inch outch))
  with
  | e ->
      failwith
        (Printf.sprintf "Filew.copy_file: can't copy \"%s\" to \"%s\": %s"
           src dst (Printexc.to_string e))