]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/http_getter/http_getter_env.ml
ignore comments and blank line in servers file
[helm.git] / helm / http_getter / http_getter_env.ml
index 661b4ae47762ed38b0e4bf254e0cbef559f1092c..7b59cf1220f6c8c63eeecd8755d6bcdc7afb638d 100644 (file)
@@ -78,8 +78,12 @@ let safe_getenv ?(from = Both) var =
 
 let servers_file = safe_getenv "HTTP_GETTER_SERVERS_FILE"
 let parse_servers () =
-  (let cons hd tl = hd @ [ tl ] in
-  Http_getter_misc.fold_file cons [] servers_file)
+  List.rev (Http_getter_misc.fold_file
+    (fun servers line ->
+      if Http_getter_misc.is_blank_line line then servers else line::servers)
+    []
+    servers_file)
+;;
 let servers = ref (parse_servers ())
 let reload_servers () = servers := parse_servers ()
 
@@ -151,5 +155,20 @@ servers:
     cic_dir nuprl_dir rdf_dir dtd_dir servers_file host port my_own_url
     dtd_base_url
     (match cache_mode with Enc_normal -> "Normal" | Enc_gzipped -> "GZipped")
-    conf_file conf_dir (String.concat "\n\t" !servers)
+    conf_file conf_dir
+    (String.concat "\n\t" (* servers list prepended with server number *)
+      (List.map
+        (let idx = ref ~-1 in
+        fun server -> incr idx; sprintf "%3d: %s" !idx server)
+        !servers))
+
+let add_server ?position url =
+  (match position with
+  | Some p -> Http_getter_misc.add_line ~fname:servers_file ~position:p url
+  | None -> Http_getter_misc.add_line ~fname:servers_file url);
+  reload_servers ()
+
+let remove_server position =
+  Http_getter_misc.remove_line ~fname:servers_file position;
+  reload_servers ()