]> matita.cs.unibo.it Git - helm.git/commitdiff
changed local_url so that it returns the local part of a file:// scheme url
authorStefano Zacchiroli <zack@upsilon.cc>
Fri, 4 Feb 2005 15:03:22 +0000 (15:03 +0000)
committerStefano Zacchiroli <zack@upsilon.cc>
Fri, 4 Feb 2005 15:03:22 +0000 (15:03 +0000)
helm/ocaml/getter/http_getter_misc.ml
helm/ocaml/getter/http_getter_misc.mli

index c6a5954e55a243c271d69d3175053be8f482cabf..289ebad9af9f22b477e5d6f8d25a7a57c1386b20 100644 (file)
 
 open Printf
 
+let file_scheme_prefix = "file://"
+
 let trailing_dot_gz_RE = Pcre.regexp "\\.gz$"   (* for g{,un}zip *)
 let url_RE = Pcre.regexp "^([\\w.-]+)(:(\\d+))?(/.*)?$"
 let http_scheme_RE = Pcre.regexp ~flags:[`CASELESS] "^http://"
-let file_scheme_RE = Pcre.regexp ~flags:[`CASELESS] "^file://"
+let file_scheme_RE = Pcre.regexp ~flags:[`CASELESS] ("^" ^ file_scheme_prefix)
 let dir_sep_RE = Pcre.regexp "/"
 let heading_slash_RE = Pcre.regexp "^/"
 
-let is_local_url s = Pcre.pmatch ~rex:file_scheme_RE s
+let local_url =
+  let rex = Pcre.regexp ("^(" ^ file_scheme_prefix ^ ")(.*)(.gz)$") in
+  fun s ->
+    try
+      Some ((Pcre.extract ~rex s).(2))
+    with Not_found -> None
 
 let bufsiz = 16384  (* for file system I/O *)
 let tcp_bufsiz = 4096 (* for TCP I/O *)
index 5daac8c32eda068248210d5802bede58ba331bd7..39b40e3b5e8fb9c8f295d47bfa280e4141034a4d 100644 (file)
  failure reason *)
 exception Mkdir_failure of string * string
 
-  (** true for URI belonging to the "file://" scheme *)
-val is_local_url: string -> bool
+  (** @return Some localpart for URI belonging to the "file://" scheme, None for
+  * other URIs
+  * removes trailing ".gz", if any
+  * e.g.: local_url "file:///etc/passwd.gz" = Some "/etc/passwd"
+  *       local_url "http://...." = None *)
+val local_url: string -> string option
 
  (** "fold_left" like function on file lines, trailing newline is not passed to
  the given function *)