let listdir dir = let od = Unix.opendir dir in let rec listdir_rec () = try let fs = Unix.readdir od in fs::(listdir_rec ()) with _ -> [] in let fl = listdir_rec () in Unix.closedir od; fl