From: Stefano Zacchiroli Date: Fri, 27 Dec 2002 08:57:24 +0000 (+0000) Subject: - moved wget, gzip, gunzip, tempfile from Http_getter_common to X-Git-Tag: v0_3_99~110 X-Git-Url: http://matita.cs.unibo.it/gitweb/?p=helm.git;a=commitdiff_plain;h=d599c257fed6a37da72494676ed24315a6d8b2fb - moved wget, gzip, gunzip, tempfile from Http_getter_common to Http_getter_misc - added Unix.process_status pretty printer to Http_getter_misc --- diff --git a/helm/http_getter/http_getter_common.ml b/helm/http_getter/http_getter_common.ml index c076c2e70..fc3867128 100644 --- a/helm/http_getter/http_getter_common.ml +++ b/helm/http_getter/http_getter_common.ml @@ -110,42 +110,3 @@ let return_file ~fname ?contype ?contenc ?(patch_fun = fun x -> x) outchan = fname let return_400 body outchan = Http_daemon.respond_error ~code:400 ~body outchan -let wget ?output url = - let flags = - (match output with Some file -> ["-O"; file] | None -> []) @ [url] - in - Shell.call - ~stdout:Shell.to_dev_null ~stderr:Shell.to_dev_null - [Shell.cmd "wget" flags] - - (* TODO gzip and gunzip create executables file, but umask seems to be - correctly inherited from the shell .... boh *) - - (* stderr shown as usual *) -let gzip ?(keep = false) fname = - if keep then (* keep original file *) - Shell.call - ~stdout:(Shell.to_file (fname ^ ".gz")) - [Shell.cmd "gzip" ["-f"; "-c"; fname]] - else (* don't keep original file *) - Shell.call [Shell.cmd "gzip" ["-f"; fname]] - - (* stderr shown as usual *) -let gunzip ?(keep = false) fname = - if not (Pcre.pmatch ~pat:"\\.gz$" fname) then - failwith "gunzip: source file doesn't end with '.gz'"; - let basename = Pcre.replace ~pat:"\\.gz$" fname in - if keep then (* keep original file *) - Shell.call - ~stdout:(Shell.to_file basename) - [Shell.cmd "gunzip" ["-f"; "-c"; fname]] - else (* don't keep original file *) - Shell.call [Shell.cmd "gunzip" ["-f"; fname]] - -let tempfile () = - let buf = Buffer.create 28 in (* strlen("/tmp/fileSzb3Mw_http_getter") *) - Shell.call - ~stdout:(Shell.to_buffer buf) - [Shell.cmd "tempfile" ["--suffix=_http_getter"]]; - Pcre.replace ~pat:"\n" (Buffer.contents buf) - diff --git a/helm/http_getter/http_getter_common.mli b/helm/http_getter/http_getter_common.mli index 63c37ea01..ea321159e 100644 --- a/helm/http_getter/http_getter_common.mli +++ b/helm/http_getter/http_getter_common.mli @@ -57,8 +57,3 @@ val return_file: out_channel -> unit -val wget: ?output: string -> string -> unit -val gzip: ?keep: bool -> string -> unit -val gunzip: ?keep: bool -> string -> unit -val tempfile: unit -> string - diff --git a/helm/http_getter/http_getter_misc.ml b/helm/http_getter/http_getter_misc.ml index d40fbf4f6..1bd552213 100644 --- a/helm/http_getter/http_getter_misc.ml +++ b/helm/http_getter/http_getter_misc.ml @@ -24,6 +24,8 @@ * http://cs.unibo.it/helm/. *) +open Printf;; + let fold_file f init fname = let inchan = open_in fname in let rec fold_lines' value = @@ -43,3 +45,47 @@ let hashtbl_sorted_fold f tbl init = in List.fold_left (fun acc k -> f k (Hashtbl.find tbl k) acc) init sorted_keys +let wget ?output url = + let flags = + (match output with Some file -> ["-O"; file] | None -> []) @ [url] + in + Shell.call + ~stdout:Shell.to_dev_null ~stderr:Shell.to_dev_null + [Shell.cmd "wget" flags] + + (* TODO gzip and gunzip create executables file, but umask seems to be + correctly inherited from the shell .... boh *) + + (* stderr shown as usual *) +let gzip ?(keep = false) fname = + if keep then (* keep original file *) + Shell.call + ~stdout:(Shell.to_file (fname ^ ".gz")) + [Shell.cmd "gzip" ["-f"; "-c"; fname]] + else (* don't keep original file *) + Shell.call [Shell.cmd "gzip" ["-f"; fname]] + + (* stderr shown as usual *) +let gunzip ?(keep = false) fname = + if not (Pcre.pmatch ~pat:"\\.gz$" fname) then + failwith "gunzip: source file doesn't end with '.gz'"; + let basename = Pcre.replace ~pat:"\\.gz$" fname in + if keep then (* keep original file *) + Shell.call + ~stdout:(Shell.to_file basename) + [Shell.cmd "gunzip" ["-f"; "-c"; fname]] + else (* don't keep original file *) + Shell.call [Shell.cmd "gunzip" ["-f"; fname]] + +let tempfile () = + let buf = Buffer.create 28 in (* strlen("/tmp/fileSzb3Mw_http_getter") *) + Shell.call + ~stdout:(Shell.to_buffer buf) + [Shell.cmd "tempfile" ["--suffix=_http_getter"]]; + Pcre.replace ~pat:"\n" (Buffer.contents buf) + +let string_of_proc_status = function + | Unix.WEXITED code -> sprintf "[Exited: %d]" code + | Unix.WSIGNALED sg -> sprintf "[Killed: %d]" sg + | Unix.WSTOPPED sg -> sprintf "[Stopped: %d]" sg + diff --git a/helm/http_getter/http_getter_misc.mli b/helm/http_getter/http_getter_misc.mli index c1afb198f..bb99827de 100644 --- a/helm/http_getter/http_getter_misc.mli +++ b/helm/http_getter/http_getter_misc.mli @@ -31,3 +31,10 @@ val iter_file : (string -> unit) -> string -> unit val hashtbl_sorted_fold : ('a -> 'b -> 'c -> 'c) -> ('a, 'b) Hashtbl.t -> 'c -> 'c +val wget: ?output: string -> string -> unit +val gzip: ?keep: bool -> string -> unit +val gunzip: ?keep: bool -> string -> unit +val tempfile: unit -> string + +val string_of_proc_status : Unix.process_status -> string +