blob: efb6fb3bcfce10cab35c36481b0a955923004720 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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)
|