diff options
author | Pascal Rigaux <pixel@mandriva.com> | 2007-04-25 15:08:17 +0000 |
---|---|---|
committer | Pascal Rigaux <pixel@mandriva.com> | 2007-04-25 15:08:17 +0000 |
commit | 2033330a441ab99695c064faf6d55af3d2f7732d (patch) | |
tree | ae8483790358b1a7e971b8676191a156fced72b1 /src/config_file.ml | |
parent | 60e159ef702b60aeb4515f36ca23b8a73181d028 (diff) | |
download | perl_checker-2033330a441ab99695c064faf6d55af3d2f7732d.tar perl_checker-2033330a441ab99695c064faf6d55af3d2f7732d.tar.gz perl_checker-2033330a441ab99695c064faf6d55af3d2f7732d.tar.bz2 perl_checker-2033330a441ab99695c064faf6d55af3d2f7732d.tar.xz perl_checker-2033330a441ab99695c064faf6d55af3d2f7732d.zip |
re-sync after the big svn loss
Diffstat (limited to 'src/config_file.ml')
-rw-r--r-- | src/config_file.ml | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/config_file.ml b/src/config_file.ml new file mode 100644 index 0000000..efb6fb3 --- /dev/null +++ b/src/config_file.ml @@ -0,0 +1,40 @@ +open Common + +type config_file = { + basedir : int option ; + } + +let ignored_packages = ref [] + +let default = { basedir = None } + + +let config_cache = Hashtbl.create 16 + +let read dir = + try Hashtbl.find config_cache dir with Not_found -> + try + let file_name = dir ^ "/.perl_checker" in + let fh = open_in file_name in + let config = + fold_lines (fun config line -> + match words line with + | [ "Basedir"; ".." ] -> { basedir = Some 1 } + | [ "Basedir"; "../.." ] -> { basedir = Some 2 } + | [] -> config (* blank line *) + | [ "Ignore"; pkg ] + | [ pkg ] (* the deprecated form *) + -> lpush ignored_packages pkg; config + | _ -> prerr_endline (Printf.sprintf "bad line \"%s\" in %s" line file_name); config + ) default fh + in + Hashtbl.add config_cache dir config ; + if !Flags.verbose then print_endline_flush ("reading config file " ^ file_name); + config + with Sys_error _ -> default + + +let rec read_any dir depth = + if depth = 0 then () else + let _ = read dir in + read_any (updir dir 1) (depth - 1) |