X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=mlvirsh%2Fmlvirsh.ml;h=9fd3779294f330ab919d847b8b8aa4fab0354d52;hb=4d988dada41d62c5f40a24c69220184ff6b079e0;hp=6bf695a96f87d94b7c227dc5669eb3d2a89cc73b;hpb=b549cb36134996b0c9264611ed2d3c84605c7ec1;p=ocaml-libvirt.git diff --git a/mlvirsh/mlvirsh.ml b/mlvirsh/mlvirsh.ml index 6bf695a..9fd3779 100644 --- a/mlvirsh/mlvirsh.ml +++ b/mlvirsh/mlvirsh.ml @@ -302,8 +302,8 @@ let do_command = | D.VcpuRunning -> s_"running" | D.VcpuBlocked -> s_"blocked" in - let print_domain_array doms = - Array.iter ( + let print_domain_list doms = + List.iter ( fun dom -> let id = try sprintf "%d" (D.get_id dom) @@ -454,7 +454,17 @@ let do_command = cmd4 print_string (fun dom path offset size -> let buf = String.create size in - D.block_peek dom path offset size buf 0; + let max_peek = D.max_peek dom in + let rec loop i = + let remaining = size-i in + if remaining > 0 then ( + let size = min remaining max_peek in + D.block_peek dom path + (Int64.add offset (Int64.of_int i)) size buf i; + loop (i+size) + ) + in + loop 0; buf) (arg_readonly_connection domain_of_string) string_of_string Int64.of_string int_of_string, @@ -494,7 +504,17 @@ let do_command = cmd3 print_string (fun dom offset size -> let buf = String.create size in - D.memory_peek dom [D.Virtual] offset size buf 0; + let max_peek = D.max_peek dom in + let rec loop i = + let remaining = size-i in + if remaining > 0 then ( + let size = min remaining max_peek in + D.memory_peek dom [D.Virtual] + (Int64.add offset (Int64.of_int i)) size buf i; + loop (i+size) + ) + in + loop 0; buf) (arg_readonly_connection domain_of_string) Int64.of_string int_of_string, @@ -556,21 +576,17 @@ let do_command = s_"Print the hostname.", []; "list", - cmd0 print_domain_array + cmd0 print_domain_list (fun () -> let c = get_readonly_connection () in - let n = C.num_of_domains c in - let domids = C.list_domains c n in - Array.map (D.lookup_by_id c) domids), + fst (Libvirt.get_domains c ~want_info:false [D.ListActive])), s_"List the running domains.", []; "list-defined", - cmd0 print_domain_array + cmd0 print_domain_list (fun () -> let c = get_readonly_connection () in - let n = C.num_of_defined_domains c in - let domnames = C.list_defined_domains c n in - Array.map (D.lookup_by_name c) domnames), + fst (Libvirt.get_domains c ~want_info:false [D.ListInactive])), s_"List the defined but not running domains.", []; "quit",