diff options
| author | filliatr | 2001-04-20 07:33:33 +0000 |
|---|---|---|
| committer | filliatr | 2001-04-20 07:33:33 +0000 |
| commit | 5d042cd40c3cae007a853d6a60e49bb7ae404500 (patch) | |
| tree | ae17bc0bd2f3b5a5a843b9b8798bfd984e929805 /tools | |
| parent | 987c7ae12aaafef45992e386412f35684aea0e08 (diff) | |
support option -R pour coqdep
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@1640 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'tools')
| -rwxr-xr-x | tools/coqdep.ml | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/tools/coqdep.ml b/tools/coqdep.ml index f19dafcd93..4880423468 100755 --- a/tools/coqdep.ml +++ b/tools/coqdep.ml @@ -292,6 +292,29 @@ let rec warning_mult suf l = Hashtbl.add tab f d) l +(* Gives the list of all the directories under [dir], including [dir] *) +let all_subdirs dir = + let l = ref [dir] in + let add f = l := f :: !l in + let rec traverse dir = + let dirh = + try opendir dir with Unix_error _ -> invalid_arg "all_subdirs" + in + try + while true do + let f = readdir dirh in + if f <> "." && f <> ".." then + let file = Filename.concat dir f in + if (stat file).st_kind = S_DIR then begin + add file; + traverse file + end + done + with End_of_file -> + closedir dirh + in + traverse dir; List.rev !l + let usage () = print_string "[ usage: coqdep [-w] [-I dir] [-coqlib dir] [-c] [-i] [-D] <filename>+ ]\n"; @@ -383,13 +406,18 @@ let coqdep () = with End_of_file -> closedir dir) | _ -> () in + let add_rec_directory dir_name = + List.iter add_directory (all_subdirs dir_name) + in let rec parse = function | "-c" :: ll -> option_c := true; parse ll | "-D" :: ll -> option_D := true; parse ll | "-w" :: ll -> option_w := true; parse ll | "-i" :: ll -> option_i := true; parse ll - | "-I" :: (r :: ll) -> add_directory r; parse ll + | "-I" :: r :: ll -> add_directory r; parse ll | "-I" :: [] -> usage () + | "-R" :: r :: _ :: ll -> add_rec_directory r; parse ll + | "-R" :: ([] | [_]) -> usage () | "-coqlib" :: (r :: ll) -> coqlib := r; parse ll | "-coqlib" :: [] -> usage () | "-suffix" :: (s :: ll) -> suffixe := s ; suffixe_spec := s; parse ll |
