]> matita.cs.unibo.it Git - helm.git/commitdiff
Bug fix: index.theory dereferentiation works also for exists and resolve.
authorStefano Zacchiroli <zack@upsilon.cc>
Thu, 3 Nov 2005 17:36:39 +0000 (17:36 +0000)
committerStefano Zacchiroli <zack@upsilon.cc>
Thu, 3 Nov 2005 17:36:39 +0000 (17:36 +0000)
helm/ocaml/getter/http_getter.ml

index 53f4951c7f05e61ee298e66a24bd1cf70e75622c..3fe39a40682d6637b861b1e3f6e69b8d1e2fdee3 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