On Friday, 14 July 2017 15:39:28 CEST Richard W.M. Jones wrote: > +let print_partition_table ~add_m_option device = > + udev_settle (); > + > + let args = ref [] in > + if add_m_option then push_back args "-m"; > + push_back args "-s"; > + push_back args "--"; > + push_back args device; > + push_back args "unit"; > + push_back args "b"; > + push_back args "print"; > + > + let out = > + try command "parted" !args > + with > + (* Translate "unrecognised disk label" into an errno code. *) > + Failure str when String.find str "unrecognised disk label" >= 0 -> > + raise (Unix.Unix_error (Unix.EINVAL, "parted", device ^ ": " ^ str)) > in > + > + udev_settle (); > + > + (* Split the output into lines. *) > + let out = String.trim out in > + let lines = String.nsplit "\n" out in > + > + (* lines[0] is "BYT;", lines[1] is the device line which we ignore, > + * lines[2..] are the partitions themselves. > + *) > + match lines with > + | "BYT;" :: _ :: lines -> lines > + | [] | [_] -> > + failwith "too few rows of output from 'parted print' command" > + | _ -> > + failwith "did not see 'BYT;' magic value in 'parted print' command"
Note the first two lines with "BYT;", and the device name must be
filtered only when running in machine-parseable mode, otherwise the
match above will fail (since the output is very different in
non-machine-parseable mode).
The other option is making this function always use -m, and implement a
separate print_partition_table only in case part_get_mbr_part_type is
ported to OCaml (since it's the single user of it).
> diff --git a/daemon/parted.mli b/daemon/parted.mli
> index 33eb6d30d..057d7e8c7 100644
> --- a/daemon/parted.mli
> +++ b/daemon/parted.mli
> @@ -16,4 +16,12 @@
> * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
> *)
>
> +type partition = {
> + part_num : int32;
> + part_start : int64;
> + part_end : int64;
> + part_size : int64;
> +}
Is this needed? Could Structs.partition be used below?
--
Pino Toscano
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ Libguestfs mailing list [email protected] https://www.redhat.com/mailman/listinfo/libguestfs
