From fb99dc7d1bc34c5d8a57d27410a47f24e1ef2454 Mon Sep 17 00:00:00 2001 From: Thierry Vignaud Date: Tue, 24 Jun 2003 08:28:20 +0000 Subject: - move read_proc_partitions_raw() from fsedit.pm to devices.pm - (devices::from_devfs, devices::from_devfs) handle block devices too, with read_proc_partitions_raw() helper --- perl-install/devices.pm | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'perl-install/devices.pm') diff --git a/perl-install/devices.pm b/perl-install/devices.pm index e3ecc3185..c4b6126ce 100644 --- a/perl-install/devices.pm +++ b/perl-install/devices.pm @@ -201,7 +201,19 @@ sub to_devfs { my $r = $to_devfs_prefix{$1}; return "$r$2" if $r; } - undef; + readlink("/dev/" . $dev); +} + +sub read_proc_partitions_raw() { + my (undef, undef, @all) = cat_("/proc/partitions"); + grep { + $_->{size} != 1 && # skip main extended partition + $_->{size} != 0x3fffffff # skip cdroms (otherwise stops cd-audios) + } map { + my %l; + @l{qw(major minor size dev)} = split; + \%l; + } @all; } sub from_devfs { @@ -214,7 +226,11 @@ sub from_devfs { my $r = $from_devfs_prefix{$1}; return "$r$2" if $r; } - undef; + $dev = "/dev/" . $dev; + if (-e $dev) { + my ($major, $minor) = unmakedev((stat($dev))[6]); + (find { $_->{major} == $major && $_->{minor} == $minor } read_proc_partitions_raw())->{dev}; + } } 1; -- cgit v1.2.1