X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fhttp_getter%2Fhttp_getter_env.ml;h=54269279535eaf0828818a2770672d0fa24375d4;hb=fde0ad77237a2fbdfb5621d5b5085fe7c82e3f92;hp=661b4ae47762ed38b0e4bf254e0cbef559f1092c;hpb=bcb3a166855c11d57aee0130df8f666c9db303ec;p=helm.git diff --git a/helm/http_getter/http_getter_env.ml b/helm/http_getter/http_getter_env.ml index 661b4ae47..542692795 100644 --- a/helm/http_getter/http_getter_env.ml +++ b/helm/http_getter/http_getter_env.ml @@ -3,8 +3,7 @@ * Stefano Zacchiroli * for the HELM Team http://helm.cs.unibo.it/ * - * This file is part of HELM, an Hypertextual, Electronic - * Library of Mathematics, developed at the Computer Science + * This file is part of HELM, an Hypertextual, Electronic * Library of Mathematics, developed at the Computer Science * Department, University of Bologna, Italy. * * HELM is free software; you can redistribute it and/or @@ -77,9 +76,17 @@ let safe_getenv ?(from = Both) var = | v -> return_value var v))) let servers_file = safe_getenv "HTTP_GETTER_SERVERS_FILE" + + (* TODO BUG HERE: is commented lines are included in the servers file the + server index (used for example by the remove_server method) gets out of sync! + *) 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 +158,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 ()