open Unix;; open Filename;; let usage_string = ("Usage: " ^ Sys.argv.(0) ^ " profondeur");; let prerr_usage () = prerr_endline usage_string;; let rec mon_find depth file = let dir_handle = opendir file in let rec rec_print_dir () = let name = readdir dir_handle in if name <> current_dir_name && name <> parent_dir_name then begin let full_name = (concat file name) in print_endline full_name; if depth <> 1 then begin let stat = lstat full_name in if stat.st_kind = S_DIR then mon_find (depth - 1) full_name end; end; rec_print_dir () in try rec_print_dir () with End_of_file -> closedir dir_handle | e -> closedir dir_handle; raise e;; let mon_find1 () = if Array.length Sys.argv <> 2 then begin prerr_usage (); exit 1 end else try let max_depth = int_of_string Sys.argv.(1) in print_endline current_dir_name; mon_find max_depth current_dir_name; exit 0 with _ -> prerr_usage (); exit 1;; handle_unix_error mon_find1 ();; |