]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/cic/cicParser.ml
ported to new getter interface
[helm.git] / helm / ocaml / cic / cicParser.ml
index 619e947f21d4af37334eff3052fec896cc5592fd..e4a840ccf5243ad59a90669318429a8b26de6fa2 100644 (file)
@@ -658,6 +658,13 @@ let end_element ctxt tag =
 
 (** {2 Parser internals} *)
 
+let has_gz_suffix fname =
+  try
+    let idx = String.rindex fname '.' in
+    let suffix = String.sub fname idx (String.length fname - idx) in
+    suffix = ".gz"
+  with Not_found -> false
+
 let parse uri filename =
   let ctxt = new_parser_context uri in
   ctxt.filename <- filename;
@@ -671,7 +678,11 @@ let parse uri filename =
   ctxt.xml_parser <- Some xml_parser;
   try
     (try
-      P.parse xml_parser (`Gzip_file filename);
+      let xml_source =
+        if has_gz_suffix filename then `Gzip_file filename
+        else `File filename
+      in
+      P.parse xml_parser xml_source
     with exn ->
       ctxt.xml_parser <- None;
       (* ZACK: the above "<- None" is vital for garbage collection. Without it