[Libguestfs] [PATCH] inspector: Canonicalize device names (fix RHBZ#526717).
Jim Meyering
jim at meyering.net
Thu Oct 1 15:26:10 UTC 2009
Richard W.M. Jones wrote:
> This seems to be the completed fix for:
> https://bugzilla.redhat.com/show_bug.cgi?id=526717
...
> Subject: [PATCH] inspector: Canonicalize device names (fix RHBZ#526717).
>
> Make filesystem device names canonical, so they are /dev/sd*
> instead of /dev/vd*.
> ---
> perl/lib/Sys/Guestfs/Lib.pm | 14 +++++++++++++-
> 1 files changed, 13 insertions(+), 1 deletions(-)
>
> diff --git a/perl/lib/Sys/Guestfs/Lib.pm b/perl/lib/Sys/Guestfs/Lib.pm
> index a9868e2..068cde5 100644
> --- a/perl/lib/Sys/Guestfs/Lib.pm
> +++ b/perl/lib/Sys/Guestfs/Lib.pm
> @@ -575,7 +575,19 @@ sub inspect_all_partitions
> my $g = shift;
> my $parts = shift;
> my @parts = @$parts;
> - return map { $_ => inspect_partition ($g, $_, @_) } @parts;
> + return map { _canonical_dev ($_) => inspect_partition ($g, $_, @_) } @parts;
> +}
> +
> +# Turn /dev/vd* and /dev/hd* into canonical device names
> +# (see BLOCK DEVICE NAMING in guestfs(3)).
> +
> +sub _canonical_dev
> +{
> + local $_ = shift;
> +
> + return "/dev/sd$1" if m{^/dev/hd(\w+)};
> + return "/dev/sd$1" if m{^/dev/vd(\w+)};
> + return $_;
> }
>
> =head2 inspect_partition
Hi Rich,
I prefer to define such functions before
their first use, and using the prototype notation,
so that perl can check the number of arguments in any use:
sub _canonical_dev ($)
{
my ($dev) = @_;
$dev =~ m{^/dev/[vh]d(\w+)}
and $dev = "/dev/sd$1";
return $dev;
}
Also, I find that not using $_ (even when declared local)
improves maintainability.
Finally, you can combine those two matches into one.
More information about the Libguestfs
mailing list