X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;ds=inline;f=utils.ml;h=a3eca86bc72b2a461b9825d3e1951c0b25bae9ab;hb=b07102fda0034da5840a9f33bd6d404a195b8cc9;hp=8f7ce3a87bf6ddf56668a42ab4d1e4ce6333ce43;hpb=bbfe03c47f1d7f03c3e6c0cab9e4f500f588c80a;p=guestfs-browser.git diff --git a/utils.ml b/utils.ml index 8f7ce3a..a3eca86 100644 --- a/utils.ml +++ b/utils.ml @@ -16,17 +16,47 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *) -type ('a, 'b) choice = Either of 'a | Or of 'b +open Printf -let verbose = ref true (* XXX settable *) +let (+^) = Int64.add +let (-^) = Int64.sub +let ( *^ ) = Int64.mul +let (/^) = Int64.div + +type ('a, 'b) either = Left of 'a | Right of 'b + +let verbose = ref false +let set_verbose_flag () = verbose := true +let verbose () = !verbose + +let write_flag = ref false +let set_write_flag () = write_flag := true +let write_flag () = !write_flag let debug fs = - let f str = if !verbose then (prerr_string str; prerr_newline ()) in + let f str = + if verbose () then ( + prerr_string Config.package; + prerr_string ": "; + prerr_string str; + prerr_newline () + ) + in ksprintf f fs let failwith fs = let f str = - if !verbose then (prerr_string str; prerr_newline ()); + if verbose () then (prerr_string str; prerr_newline ()); raise (Failure str) in ksprintf f fs + +let utf8_rarrow = "\xe2\x86\x92" + +let human_size_1k i = + if i < 1024L then + sprintf "%LdK" i + else if i < 1024L *^ 1024L then + sprintf "%.1fM" (Int64.to_float i /. 1024.) + else + sprintf "%.1fG" (Int64.to_float i /. 1024. /. 1024.)