X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=conffile.ml;fp=conffile.ml;h=d9fe12941ca83d50ba5e025f1d7619fe11cd399f;hb=46e48c60e9d524bf71631561e193c443613a2bb5;hp=21175e9e6968bebf4a4709d03eccbe7dfee6d796;hpb=f37863116494a4011988ad51100e6b956bcb4bd7;p=vsys.git diff --git a/conffile.ml b/conffile.ml index 21175e9..d9fe129 100644 --- a/conffile.ml +++ b/conffile.ml @@ -5,13 +5,23 @@ open Scanf let split_conf_line s = sscanf s "%s %s" (fun s1 s2->(s1,s2)) +let rec in_list elt lst = + match lst with + | car::cdr -> + if (elt = car) then true else in_list elt cdr + | [] -> false + let read_frontends f = let f_file = try open_in f with e -> fprintf logfd "Could not open config file\n";flush logfd;raise e in let rec read_conf_file cur_list = let next_line = try Some(input_line f_file) with _ -> None in match next_line with - | Some(inp_line) -> read_conf_file (split_conf_line(inp_line)::cur_list) + | Some(inp_line) -> + let fe = split_conf_line inp_line in + let new_list = if (not (in_list fe cur_list)) then (fe::cur_list) else cur_list + in + read_conf_file new_list | None -> cur_list in read_conf_file []