SI/blkid.pm
changeset 3 1b975c58c5bf
parent 1 b9ddf49db5b8
child 6 df6ca24871d4
equal deleted inserted replaced
2:1f1d347eff00 3:1b975c58c5bf
     3 use strict;
     3 use strict;
     4 use warnings;
     4 use warnings;
     5 use File::Find;
     5 use File::Find;
     6 
     6 
     7 sub ff($$) {
     7 sub ff($$) {
     8 	my ($dir, $id) = @_;
     8     my ($dir, $id) = @_;
     9 	my $found;
     9     my $found;
    10 	find(sub { 
    10     find(
    11 		return if $found;
    11         sub {
    12 		$found = (stat)[6] == $id ? $File::Find::name : undef;
    12             return if $found;
    13 		return;
    13             $found = (stat)[6] == $id ? $File::Find::name : undef;
    14 		}, $dir);
    14             return;
    15 	return $found;
    15         },
       
    16         $dir
       
    17     );
       
    18     return $found;
    16 }
    19 }
    17 
    20 
    18 sub info($\%) {
    21 sub info($\%) {
    19 	my ($file, $part) = @_;
    22     my ($file, $part) = @_;
    20 
    23 
    21 	foreach (`blkid -c /dev/null`) {
    24     foreach (`blkid -c /dev/null`) {
    22 		my ($dev) = (split /:/)[0];
    25         my ($dev) = (split /:/)[0];
    23 
    26 
    24 		my ($uuid) = /\sUUID=.(.*?).\s/;
    27         my ($uuid)  = /\sUUID=.(.*?).\s/;
    25 		my ($type) = /\sTYPE=.(.*?).\s/;
    28         my ($type)  = /\sTYPE=.(.*?).\s/;
    26 		my ($label) = /\sLABEL=.(.*?).\s/;
    29         my ($label) = /\sLABEL=.(.*?).\s/;
    27 
    30 
    28 		if ($dev ~~ $part->{physical}) {
    31         if ($dev ~~ $part->{physical}) {
    29 			$part->{physical}{$dev}{uuid} = $uuid;
    32             $part->{physical}{$dev}{uuid}  = $uuid;
    30 			$part->{physical}{$dev}{type} = $type;
    33             $part->{physical}{$dev}{type}  = $type;
    31 			$part->{physical}{$dev}{label} = $label;
    34             $part->{physical}{$dev}{label} = $label;
    32 			next;
    35             next;
    33 		}
    36         }
    34 	
    37 
    35 		# dev mapper names should be replace by nicer ones
    38         # dev mapper names should be replace by nicer ones
    36 		if ($dev ~~ /^\/dev\/dm-/) {
    39         if ($dev ~~ /^\/dev\/dm-/) {
    37 			$dev = ff("/dev/mapper", (stat $dev)[6])
    40             $dev = ff("/dev/mapper", (stat $dev)[6])
    38 				or next;
    41               or next;
    39 			$part->{logical}{$dev}{uuid} = $uuid;
    42             $part->{logical}{$dev}{uuid}  = $uuid;
    40 			$part->{logical}{$dev}{type} = $type;
    43             $part->{logical}{$dev}{type}  = $type;
    41 			$part->{logical}{$dev}{label} = $label;
    44             $part->{logical}{$dev}{label} = $label;
    42 		}
    45         }
    43 		
    46 
    44 	}
    47     }
    45 }
    48 }
    46 
    49 
    47 1;
    50 1;
       
    51 # vim:sts=4 sw=4 aw ai si: