let (-^) = Int64.sub
let ( *^ ) = Int64.mul
let (/^) = Int64.div
+let (&^) = Int64.logand
type ('a, 'b) either = Left of 'a | Right of 'b
let set_connect_uri conn = connect_uri := conn
let connect_uri () = !connect_uri
+let utf8_copyright = "\194\169"
let utf8_rarrow = "\xe2\x86\x92"
let pretty_string_of_exn =
and test_bit mask mode = Int64.logand mode mask = mask
+let file_permissions_string mode =
+ let c =
+ if is_socket mode then 's'
+ else if is_symlink mode then 'l'
+ else if is_regular_file mode then '-'
+ else if is_block mode then 'b'
+ else if is_directory mode then 'd'
+ else if is_char mode then 'c'
+ else if is_fifo mode then 'p' else '?' in
+ let ru = if is_ru mode then 'r' else '-' in
+ let wu = if is_wu mode then 'w' else '-' in
+ let xu = if is_xu mode then 'x' else '-' in
+ let rg = if is_rg mode then 'r' else '-' in
+ let wg = if is_wg mode then 'w' else '-' in
+ let xg = if is_xg mode then 'x' else '-' in
+ let ro = if is_ro mode then 'r' else '-' in
+ let wo = if is_wo mode then 'w' else '-' in
+ let xo = if is_xo mode then 'x' else '-' in
+ let str = sprintf "%c%c%c%c%c%c%c%c%c%c" c ru wu xu rg wg xg ro wo xo in
+
+ let suid = is_suid mode in
+ let sgid = is_sgid mode in
+ let svtx = is_svtx mode in
+ let str = Bytes.of_string str in
+ if suid then Bytes.set str 3 's';
+ if sgid then Bytes.set str 6 's';
+ if svtx then Bytes.set str 9 't';
+
+ Bytes.to_string str
+
let tmpdir () =
let chan = open_in "/dev/urandom" in
- let data = String.create 16 in
- really_input chan data 0 (String.length data);
+ let data = Bytes.create 16 in
+ really_input chan data 0 (Bytes.length data);
close_in chan;
- let data = Digest.to_hex (Digest.string data) in
+ let data = Digest.to_hex (Digest.bytes data) in
(* Note this is secure, because if the name already exists, even as a
* symlink, mkdir(2) will fail.
*)
- let tmpdir = Filename.temp_dir_name // sprintf "guestfsbrowser%s.tmp" data in
+ let tmpdir =
+ Filename.get_temp_dir_name () // sprintf "guestfsbrowser%s.tmp" data in
Unix.mkdir tmpdir 0o700;
at_exit
(fun () ->