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