X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Focaml%2Fgetter%2Fhttp_getter_wget.ml;h=a6118c82c1cebf295b0e53f4405bbea55f7c4109;hb=4167cea65ca58897d1a3dbb81ff95de5074700cc;hp=99a9f01e72947bb8baa431d997f2270b4ec9f9c4;hpb=617285cac8aabbe62699d5d7144b0df4f5771000;p=helm.git diff --git a/helm/ocaml/getter/http_getter_wget.ml b/helm/ocaml/getter/http_getter_wget.ml index 99a9f01e7..a6118c82c 100644 --- a/helm/ocaml/getter/http_getter_wget.ml +++ b/helm/ocaml/getter/http_getter_wget.ml @@ -28,30 +28,41 @@ open Http_getter_types let send cmd = try ignore (Http_user_agent.get cmd) - with e -> raise (Http_client_error (cmd, Printexc.to_string e)) + with exn -> raise (Http_client_error (cmd, Printexc.to_string exn)) -let get uri = +let get url = try - Http_user_agent.get uri - with e -> raise (Http_client_error (Printexc.to_string e, uri)) + Http_user_agent.get url + with exn -> raise (Http_client_error (Printexc.to_string exn, url)) -let get_and_save uri dest_filename = +let get_and_save url dest_filename = let out_channel = open_out dest_filename in - Http_user_agent.get_iter (output_string out_channel) uri; + (try + Http_user_agent.get_iter (output_string out_channel) url; + with exn -> + close_out out_channel; + Sys.remove dest_filename; + raise (Http_client_error (Printexc.to_string exn, url))); close_out out_channel -let get_and_save_to_tmp uri = +let get_and_save_to_tmp url = let flat_string s s' c = let cs = String.copy s in for i = 0 to (String.length s) - 1 do if String.contains s' s.[i] then cs.[i] <- c - done ; + done; cs in let user = try Unix.getlogin () with _ -> "" in let tmp_file = - Filename.temp_file (user ^ flat_string uri ".-=:;!?/&" '_') "" + Filename.temp_file (user ^ flat_string url ".-=:;!?/&" '_') "" in - get_and_save uri tmp_file ; + get_and_save url tmp_file; tmp_file +let exists url = + try + ignore (Http_user_agent.head url); + true + with Http_user_agent.Http_error _ -> false +