let read_frontends f =
  let setup_ok = if (!Globals.failsafe) then check_dir else fun _ -> true in
  let f_file = try open_in f with e -> logprint "Could not open config file\n";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) -> 
            let fe = split_conf_line inp_line in
            let new_list = if (not (in_list fe cur_list) && (setup_ok(fe))) then (fe::cur_list) else cur_list
            in
            read_conf_file new_list
        | None -> cur_list
  in
    read_conf_file []