SI/blkid.pm
branchstable
changeset 33 6432e90cc34d
parent 26 39421a9700c5
parent 32 8f9e45f83a65
child 34 28090de7d005
equal deleted inserted replaced
26:39421a9700c5 33:6432e90cc34d
     1 package SI::blkid;
       
     2 
       
     3 use if $ENV{DEBUG} ~~ /blkid|all/ => "Smart::Comments";
       
     4 
       
     5 use strict;
       
     6 use warnings;
       
     7 use IO::File;
       
     8 use File::Basename;
       
     9 
       
    10 use SI::tools;
       
    11 
       
    12 sub ids($\%) {
       
    13     my ($file, $devs) = @_;
       
    14 
       
    15     my @volumes = sort keys %{ $devs->{volume} };
       
    16     verbose("reading blkids: @volumes");
       
    17     foreach (`blkid -c /dev/null @volumes`) {
       
    18         my $dev = (split /:/)[0];
       
    19 
       
    20         my ($uuid)  = /\sUUID=.(.*?).\s/;
       
    21         my ($type)  = /\sTYPE=.(.*?).\s/;
       
    22         my ($label) = /\sLABEL=.(.*?).\s/;
       
    23 
       
    24         if (exists $devs->{volume}{$dev}) {
       
    25             $devs->{volume}{$dev}{uuid}  = $uuid;
       
    26             $devs->{volume}{$dev}{type}  = $type;
       
    27             $devs->{volume}{$dev}{label} = $label;
       
    28 
       
    29             my ($of, $oh);
       
    30             if (defined $uuid) {
       
    31                 $of = sprintf $file, "uuid." . basename $dev;
       
    32                 $oh = new IO::File ">$of" or die "ERR: Can't open $of: $!\n";
       
    33                 $oh->print("$uuid\n");
       
    34             }
       
    35 
       
    36             if (defined $label) {
       
    37                 $of = sprintf $file, "label." . basename $dev;
       
    38                 $oh = new IO::File ">$of" or die "ERR: Can't open $of: $!\n";
       
    39                 $oh->print("$label\n");
       
    40             }
       
    41 
       
    42             if (defined $type) {
       
    43                 $of = sprintf $file, "type." . basename $dev;
       
    44                 $oh = new IO::File ">$of" or die "ERR: Can't open $of: $!\n";
       
    45                 $oh->print("$type\n");
       
    46             }
       
    47 
       
    48         }
       
    49 
       
    50     }
       
    51     verbose("\n");
       
    52 }
       
    53 
       
    54 1;
       
    55 
       
    56 # vim:sts=4 sw=4 aw ai si: