On Friday, 14 July 2017 15:39:21 CEST Richard W.M. Jones wrote: > +(* All device mapper devices are called /dev/mapper/ldm_vol_*. XXX We > + * could tighten this up in future if ldmtool had a way to read these > + * names back after they have been created. > + *) > +let list_ldm_volumes () = > + (* If /dev/mapper doesn't exist at all, don't give an error. *) > + if not (is_directory "/dev/mapper") then > + [] > + else ( > + let dir = Sys.readdir "/dev/mapper" in > + let dir = Array.to_list dir in > + let dir = > + List.filter (fun d -> String.is_prefix d "ldm_vol_") dir in > + let dir = List.map ((^) "/dev/mapper/") dir in > + List.sort compare dir > + ) > + > +(* Same as above but /dev/mapper/ldm_part_*. *) > +let list_ldm_partitions () = > + (* If /dev/mapper doesn't exist at all, don't give an error. *) > + if not (is_directory "/dev/mapper") then > + [] > + else ( > + let dir = Sys.readdir "/dev/mapper" in > + let dir = Array.to_list dir in > + let dir = > + List.filter (fun d -> String.is_prefix d "ldm_part_") dir in > + let dir = List.map ((^) "/dev/mapper/") dir in > + List.sort compare dir > + )
IMHO most of their code can be shared, like done in the C
implementations -- something like the following (untested):
let get_devices prefix =
(* If /dev/mapper doesn't exist at all, don't give an error. *)
if not (is_directory "/dev/mapper") then
[]
else (
let dir = Sys.readdir "/dev/mapper" in
let dir = Array.to_list dir in
let dir =
List.filter (fun d -> String.is_prefix d prefix) dir in
let dir = List.map ((^) "/dev/mapper/") dir in
List.sort compare dir
)
let list_ldm_volumes () =
get_devices "ldm_vol_"
let list_ldm_partitions () =
get_devices "ldm_part_"
--
Pino Toscano
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ Libguestfs mailing list [email protected] https://www.redhat.com/mailman/listinfo/libguestfs
