let with_cur_dir dir func =
let old_dir = Sys.getcwd () in
let finally () = chdir old_dir
in
try
if not (is_directory dir)
then
failwith
(Printf.sprintf "Filew.with_cur_dir: directory does not exist: %S"
dir)
else
(let () = chdir dir in let r = func () in let () = finally () in r)
with | e -> (finally (); raise e)