let dir_entries ?prefix dir =
(*
prerr_endline (Printf.sprintf "dir_entries: prefix=%s dir=%s"
(match prefix with None -> "" | Some s -> s)
dir);
*)
let d = fail_if_unix_error Unix.opendir dir in
let rec iter acc =
let name_opt =
try Some (Unix.readdir d)
with End_of_file ->
Unix.closedir d;
None
in
match name_opt with
None -> List.rev acc
| Some name ->
let acc =
match prefix with
None -> name::acc
| Some s ->
if is_prefix name s then
name :: acc
else
acc
in
iter acc
in
iter []