+ conf_file conf_dir
+ (String.concat "\n\t" (* (position * server) list *)
+ (List.map (fun (pos, server) -> sprintf "%3d: %s" pos server)
+ (servers ())))
+
+let add_server ?position url =
+ (match position with
+ | None ->
+ _servers := !_servers @ [-1, url];
+ | Some p when p > 0 ->
+ let rec add_after pos = function
+ | [] -> [-1, url]
+ | hd :: tl when p = 1 -> hd :: (-1, url) :: tl
+ | hd :: tl (* when p > 1 *) -> hd :: (add_after (pos - 1) tl)
+ in
+ _servers := add_after p !_servers
+ | Some _ -> assert false);
+ save_servers ();
+ reload_servers ()
+
+let remove_server position =
+ _servers := List.remove_assoc position !_servers;
+ save_servers ();
+ reload_servers ()