(* Copie d'un fichier, avec gestion correcte des erreurs lorsque l'un ou l'autre des fichiers ne peut être ouvert. Le premier des deux fichiers peut ne pas être ouvert s'il n'existe pas mais aussi s'il s'agit d'un répertoire ou qu'on n'a pas la permission de le lire. Ces deux dernières erreurs s'appliquent également au second fichier. Dans tous les cas, cela se manifeste pas l'exception Sys_error. On affiche alors le message qu'elle transporte en argument, avant de terminer avec exit 1. *) let copy_file f1 f2 = let c1 = open_in f1 in let c2 = open_out f2 in try while true do output_char c2 (input_char c1) done with End_of_file -> close_in c1; close_out c2 let () = try copy_file Sys.argv.(1) Sys.argv.(2) with Sys_error s -> Printf.eprintf "error: %s" s; exit 1
This document was generated using caml2html