+
+$out_dir =~ s/\/$//;
+if (-d $out_dir) {
+ dirmove ($out_dir, $out_dir . ".bak")
+ or die "Could not move $out_dir to $out_dir.bak: $!";
+}
+if (! dirmove ("$tempdir/out", "$out_dir")) {
+ warn "Could not move $tempdir/out to $out_dir: $!";
+ warn "Rollback";
+ remove_tree($out_dir);
+ dirmove ($out_dir . ".bak", $out_dir);
+} else {
+ remove_tree($out_dir . ".bak");
+}