From 3a2102d8c1abec791f7ac972f8a29610572b6af6 Mon Sep 17 00:00:00 2001 From: Pascal Rigaux Date: Wed, 5 Nov 2003 10:33:56 +0000 Subject: find out the association (loopX <=> clp) instead of hard writing it --- move/tree/mdk_move_loop | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) (limited to 'move/tree') diff --git a/move/tree/mdk_move_loop b/move/tree/mdk_move_loop index 6b239316b..01f7a78fb 100755 --- a/move/tree/mdk_move_loop +++ b/move/tree/mdk_move_loop @@ -1,17 +1,24 @@ #!/usr/bin/perl -my %loop = (boot => 'loop0', always => 'loop1', totem => 'loop2'); - -sub check { - my ($loop, $file) = @_; - `sudo losetup /dev/$loop 2>/dev/null` =~ m!/$file!; -} - sub name2file { my ($name) = @_; "live_tree_$name.clp"; } +sub get_file2loop { + my (@names) = @_; + my %files = map { name2file($_) => 1 } @names; + my %file2loop; + foreach (0 .. 9) { + my ($file) = `sudo losetup /dev/loop$_ 2>/dev/null` =~ m!\([^)]*/([^)]*)\)! or last; + if (delete $files{$file}) { + $file2loop{$file} = "loop$_"; + last if !%files; + } + } + %file2loop; +} + sub to_memory { my ($loop, $file) = @_; @@ -38,9 +45,10 @@ my ($direction, @names) = @ARGV; my $f = $direction eq 'to_memory' && \&to_memory || $direction eq 'to_cdrom' && \&to_cdrom; $f && @names or usage(); +my %file2loop = get_file2loop(@names); + foreach my $name (@names) { - my $loop = $loop{$name} or die "unknown name $name\n"; my $file = name2file($name); - check($loop, $file) or next; + my $loop = $file2loop{$file} or die "unknown name $name\n"; $f->($loop, $file); } -- cgit v1.2.1