X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/f4a1732b0e65ea4459098e4e852dff10a5af9320..ef69a6cce5a09e9972441b034e24076027fbc479:/IkiWiki/Plugin/rename.pm?ds=inline

diff --git a/IkiWiki/Plugin/rename.pm b/IkiWiki/Plugin/rename.pm
index d3ca8bd3a..8dad92be3 100644
--- a/IkiWiki/Plugin/rename.pm
+++ b/IkiWiki/Plugin/rename.pm
@@ -10,7 +10,7 @@ sub import {
 	hook(type => "formbuilder_setup", id => "rename", call => \&formbuilder_setup);
 	hook(type => "formbuilder", id => "rename", call => \&formbuilder);
 	hook(type => "sessioncgi", id => "rename", call => \&sessioncgi);
-	hook(type => "rename", id => "rename", call => \&rename);
+	hook(type => "rename", id => "rename", call => \&rename_subpages);
 }
 
 sub getsetup () {
@@ -319,14 +319,6 @@ sub sessioncgi ($$) {
 				session => $session,
 			);
 
-			# remove duplicates from @torename
-			my %seen=();
-			my @uniq_torename;
-			foreach my $item (@torename) {
-				push(@uniq_torename, $item) unless $seen{$item->{src}}++;
-			}
-			@torename=@uniq_torename;
-
 			require IkiWiki::Render;
 			IkiWiki::disable_commit_hook() if $config{rcs};
 			my %origpagesources=%pagesources;
@@ -422,7 +414,7 @@ sub sessioncgi ($$) {
 }
 
 # Add subpages to the list of pages to be renamed, if needed.
-sub rename(@) {
+sub rename_subpages (@) {
 	my %params = @_;
 
 	my %torename = %{$params{torename}};
@@ -494,33 +486,34 @@ sub rename_hook (@) {
 	my $q=$params{cgi};
 	my $session=$params{session};
 
+	return () unless @torename;
+
 	my @nextset;
-	if (@torename) {
-		foreach my $torename (@torename) {
-			unless (exists $done{$torename->{src}} && $done{$torename->{src}}) {
-				IkiWiki::run_hooks(rename => sub {
-					push @nextset, shift->(
-						torename => $torename,
-						cgi => $q,
-						session => $session,
-					);
-				});
-				$done{$torename->{src}}=1;
-			}
+	foreach my $torename (@torename) {
+		unless (exists $done{$torename->{src}} && $done{$torename->{src}}) {
+			IkiWiki::run_hooks(rename => sub {
+				push @nextset, shift->(
+					torename => $torename,
+					cgi => $q,
+					session => $session,
+				);
+			});
+			$done{$torename->{src}}=1;
 		}
-		push @torename, rename_hook(
-			torename => \@nextset,
-			done => \%done,
-			cgi => $q,
-			session => $session,
-		);
-		return @torename;
-	}
-	else {
-		return ();
 	}
+
+	push @torename, rename_hook(
+		torename => \@nextset,
+		done => \%done,
+		cgi => $q,
+		session => $session,
+	);
+
+	# dedup
+	my %seen;
+	return grep { ! $seen{$_->{src}}++ } @torename;
 }
-			
+
 sub do_rename ($$$) {
 	my $rename=shift;
 	my $q=shift;
@@ -540,7 +533,7 @@ sub do_rename ($$$) {
 		IkiWiki::rcs_rename($rename->{srcfile}, $rename->{destfile});
 	}
 	else {
-		if (! CORE::rename($config{srcdir}."/".$rename->{srcfile},
+		if (! rename($config{srcdir}."/".$rename->{srcfile},
 		             $config{srcdir}."/".$rename->{destfile})) {
 			error("rename: $!");
 		}