From dbe4afb325e7c607919837cc51f01387ac0460ec Mon Sep 17 00:00:00 2001 From: Ward Wouts Date: Wed, 11 Dec 2002 11:51:42 +0000 Subject: [PATCH] in case of doubles, show which files are the culprits --- mvwrap/mvwrap | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/mvwrap/mvwrap b/mvwrap/mvwrap index 84231e0..d5372bb 100755 --- a/mvwrap/mvwrap +++ b/mvwrap/mvwrap @@ -150,12 +150,13 @@ sub run_checks { } if ( &check_unique(@target) ) { + &which_doubles(@source, @target); &cdie("Aborting. You're trying to move multiple files to the same name.\n"); } } # returns 0 if all entries in @target_list are unique. 1 if not. -sub check_unique (@){ +sub check_unique (@) { my @uniqu; my @target_list = @_; my %seen = (); @@ -163,6 +164,23 @@ sub check_unique (@){ return (scalar(@uniqu) != scalar(@target)) } +sub which_doubles () { + my %selector = (); + foreach $i (0 .. $#target) { + if ( exists $selector{$target[$i]} ) { + push @{$selector{$target[$i]}}, $i; + } else { + $selector{$target[$i]} = [$i]; + } + } + foreach (keys %selector) { + if ( scalar(@{$selector{$_}}) > 1 ) { + print "Doubles detected:\n"; + map {print "$source[$_] -> $target[$_]\n";} @{$selector{$_}}; + } + } +} + # Compares one array of file names to another, making sure files # can be moved safely without overwriting each other # Must be called like: