- Timestamp:
- Aug 30, 2015, 2:33:49 AM (10 years ago)
- Location:
- branches/3.2/MondoRescue
- Files:
-
- 1 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/3.2/MondoRescue/Makefile.PL
r3265 r3447 18 18 EXE_FILES => [ qw( bin/mr-analyze-lvm 19 19 bin/mr-check-lvm 20 bin/mr-device-mounted 20 21 bin/mr-process-ldd 21 22 bin/mr-read-all-link -
branches/3.2/MondoRescue/lib/MondoRescue/Disk.pm
r3432 r3447 13 13 use ProjectBuilder::Base; 14 14 use English; 15 use MondoRescue::File; 15 16 16 17 # Inherit from the "Exporter" module which handles exporting functions. … … 22 23 23 24 our @ISA = qw(Exporter); 24 our @EXPORT = qw(mr_disk_type );25 our @EXPORT = qw(mr_disk_type mr_device_mounted); 25 26 26 27 =pod … … 66 67 67 68 69 =item B<mr_device_mounted> 70 71 This function returns the mount point if a device is mounted and undef if not. 72 73 =cut 74 75 sub mr_device_mounted { 76 77 my $device = shift; 78 79 return(1) if ((not defined $device) || ($device =~ "^/sys|^/proc")); 80 81 my $h = mr_file_read_all_link($device); 82 # Preserve that hash locally before earsing it to reuse another one 83 my $h2 = mr_file_copy_and_erase_hash($h); 84 85 foreach my $f (keys %$h2) { 86 pb_log(2,"Working on device $f\n"); 87 # TODO: get them from a conf file - FreeBSD needs swapinfo for swap request 88 foreach my $dev ("mount","cat /proc/swaps") { 89 # Look for the device in the command result 90 open(MOUNT,"$dev|") || die "Unable to execute the $dev command"; 91 while (<MOUNT>) { 92 my ($mntp,$void) = split('\s',$_,2); 93 $h = mr_file_read_all_link($mntp); 94 foreach my $m (keys %$h) { 95 pb_log(2,"== Working on mounted device $m\n"); 96 if ($m eq $f) { 97 # Find the mountpoint and return it 98 my ($void1,$mountpoint,$void2) = split('\s',$void); 99 pb_log(2,"*** Found $m on $mountpoint\n") if (defined $mountpoint); 100 return($mountpoint); 101 } 102 } 103 my $h3 = mr_file_copy_and_erase_hash($h); 104 } 105 close(MOUNT); 106 } 107 } 108 109 # Not found 110 return(undef); 111 } -
branches/3.2/MondoRescue/lib/MondoRescue/File.pm
r3262 r3447 26 26 27 27 our @ISA = qw(Exporter); 28 our @EXPORT = qw(mr_file_read_all_link mr_file_process_ldd mr_file_normalize );28 our @EXPORT = qw(mr_file_read_all_link mr_file_process_ldd mr_file_normalize mr_file_copy_and_erase_hash); 29 29 30 30 =pod … … 85 85 =over 4 86 86 87 =item B<mr_file_erase_hash> 88 89 This function erases all elements in the hash passed in parameter (such as the one created in mr_file_read_all_link) 90 Takes as param the hash to delete and returns a new fresh one 91 92 =cut 93 94 sub mr_file_copy_and_erase_hash { 95 96 my $files = shift; 97 my %h; 98 99 foreach my $i (keys %$files) { 100 $h{$i} = $files->{$i}; 101 delete $files->{$i}; 102 } 103 return(\%h); 104 } 105 106 =over 4 107 87 108 =item B<mr_file_read_all_link> 88 109 89 110 This function returns all the links found for a given file passed as parameter 90 111 Example: mr_file_read_all_link(/lib64) returns (/lib64,/usr/lib64) on a system having a link from /lib64 to /usr/lib64 91 The return value is a hash of all input files pointing to hash of links 112 The return value is a hash of all input files pointing to the hash of their links 113 That hash needs to be cleaned up after usage 92 114 93 115 =cut … … 96 118 97 119 # TODO: Can be parallelized 120 # use "our" to keep info between recursive calls 98 121 our $files; 122 99 123 100 124 foreach my $f (@_) {
Note:
See TracChangeset
for help on using the changeset viewer.