X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fhttp_getter%2Fhttp_getter_misc.ml;h=1ec7101c876b274c06a935248df65a96300e86e0;hb=f4389bc575610ab6cabcc0a034ae5a3b92739f60;hp=880ddd46e4cb71060d28a2932e128d47b98b518a;hpb=1e34c17c30ee6c992f3759bd0f0d5012e6803092;p=helm.git diff --git a/helm/http_getter/http_getter_misc.ml b/helm/http_getter/http_getter_misc.ml index 880ddd46e..1ec7101c8 100644 --- a/helm/http_getter/http_getter_misc.ml +++ b/helm/http_getter/http_getter_misc.ml @@ -122,7 +122,19 @@ let string_of_proc_status = function | Unix.WSTOPPED sg -> sprintf "[Stopped: %d]" sg let http_get url = - try - Some (Http_client.Convenience.http_get url) - with Http_client.Http_error (code, _) -> None + if Pcre.pmatch ~rex:file_scheme_RE url then begin + (* file:// URL. Read data from file system *) + let fname = Pcre.replace ~rex:file_scheme_RE url in + try + let size = (Unix.stat fname).Unix.st_size in + let buf = String.create size in + let ic = open_in fname in + really_input ic buf 0 size; + close_in ic; + Some buf + with Unix.Unix_error (Unix.ENOENT, "stat", _) -> None + end else (* other URL, pass it to netclient *) + try + Some (Http_client.Convenience.http_get url) + with Http_client.Http_error (code, _) -> None