]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/getter/http_getter.ml
ocaml 3.09 transition
[helm.git] / helm / ocaml / getter / http_getter.ml
index 53f4951c7f05e61ee298e66a24bd1cf70e75622c..191117a20e38c182d3af6a43824cf8c27af198af 100644 (file)
@@ -129,6 +129,13 @@ let resolve_remote uri =
   | Exception e -> raise e
   | Resolved url -> url
 
+let deref_index_theory uri =
+ if Http_getter_storage.exists (uri ^ xml_suffix) then uri
+ else if is_theory_uri uri && Filename.basename uri = "index.theory" then
+    strip_trailing_slash (Filename.dirname uri) ^ theory_suffix
+ else
+    uri
+
 (* API *)
 
 let help () = Http_getter_const.usage_string (Http_getter_env.env_to_string ())
@@ -138,32 +145,24 @@ let exists uri =
   if remote () then
     exists_remote uri
   else
+   let uri = deref_index_theory uri in
     Http_getter_storage.exists (uri ^ xml_suffix)
        
 let resolve uri =
   if remote () then
     resolve_remote uri
   else
+   let uri = deref_index_theory uri in
     try
       Http_getter_storage.resolve (uri ^ xml_suffix)
     with Http_getter_storage.Resource_not_found _ -> raise (Key_not_found uri)
 
-let deref_index_theory uri =
-  if is_theory_uri uri && Filename.basename uri = "index.theory" then
-    strip_trailing_slash (Filename.dirname uri) ^ theory_suffix
-  else
-    uri
-
 let getxml uri =
   if remote () then getxml_remote uri
   else begin
     let uri' = deref_index_theory uri in
     (try
-      try
-        Http_getter_storage.filename (uri' ^ xml_suffix)
-      with Http_getter_storage.Resource_not_found _ as exn ->
-        if uri <> uri' then Http_getter_storage.filename (uri ^ xml_suffix)
-        else raise (Key_not_found uri)
+      Http_getter_storage.filename (uri' ^ xml_suffix)
     with Http_getter_storage.Resource_not_found _ -> raise (Key_not_found uri))
   end
 
@@ -347,7 +346,13 @@ let getxml' uri = getxml (UriManager.string_of_uri uri)
 let resolve' uri = resolve (UriManager.string_of_uri uri)
 let exists' uri = exists (UriManager.string_of_uri uri)
 
+let tilde_expand_key k =
+  try
+    Helm_registry.set k (HExtlib.tilde_expand (Helm_registry.get k))
+  with Helm_registry.Key_not_found _ -> ()
+
 let init () =
+  List.iter tilde_expand_key ["getter.cache_dir"; "getter.dtd_dir"];
   Http_getter_logger.set_log_level
     (Helm_registry.get_opt_default Helm_registry.int ~default:1
       "getter.log_level");