let _servers = ref None
let servers =
- lazy
+ function () ->
(match !_servers with
| None -> failwith "Getter not yet initialized: servers not available"
| Some servers -> servers)
let save_servers () =
let oc = open_out (Lazy.force servers_file) in
List.iter (fun (_,server) -> output_string oc (server ^ "\n"))
- (Lazy.force servers);
+ (servers ());
close_out oc
let host =
(match Lazy.force cache_mode with Enc_normal -> "Normal" | Enc_gzipped -> "GZipped")
(String.concat "\n\t" (* (position * server) list *)
(List.map (fun (pos, server) -> sprintf "%3d: %s" pos server)
- (Lazy.force servers)))
+ (servers ())))
let add_server ?position url =
let new_servers =
- let servers = Lazy.force servers in
+ let servers = servers () in
match position with
| None -> servers @ [-1, url];
| Some p when p > 0 ->
reload_servers ()
let remove_server position =
- _servers := Some (List.remove_assoc position (Lazy.force servers));
+ _servers := Some (List.remove_assoc position (servers ()));
save_servers ();
reload_servers ()