]> err.no Git - dpkg/commitdiff
dpkg-divert: Support diverting files from and to different file systems
authorGuillem Jover <guillem@debian.org>
Tue, 17 Jun 2008 04:15:36 +0000 (07:15 +0300)
committerGuillem Jover <guillem@debian.org>
Thu, 19 Jun 2008 02:31:11 +0000 (05:31 +0300)
Based on a patch by Juergen Kreileder. Closes: #102144, #149961

ChangeLog
debian/changelog
scripts/dpkg-divert.pl

index cf90cee486b127002e3b962a1627c6be18a07cc5..b4edc4a586bbebf909043024d6fb7a9dca601136 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-06-17  Juergen Kreileder <jk@blackdown.de>,
+            Guillem Jover  <guillem@debian.org>
+
+       * scripts/dpkg-divert.pl (rename_mv): New function.
+       (dorename): Use rename_mv instead of rename.
+
 2008-06-10  Guillem Jover  <guillem@debian.org>
 
        * lib/varbuf.c (varbufvprintf): Call va_end when done with the va_list
index 41d475037c3527b15bf580d1a7b1dcd308e1b9a4..d071ec6f2cf08228979fa1f38aac39713529f7ab 100644 (file)
@@ -19,6 +19,8 @@ dpkg (1.15.0) UNRELEASED; urgency=low
     inherited by the childs. Closes: #471488
   * Add '.hgignore' to the default dpkg-source -i regex and -I pattern.
     Closes: #485365
+  * Support diverting files when origin and destination are on different file
+    systems. Based on a patch by Juergen Kreileder. Closes: #102144, #149961
 
   [ Raphael Hertzog ]
   * Enhance dpkg-shlibdeps's error message when a library can't be found to
index 56257ed3ccdb55494c76841dc3d3988abc1e6160..d6500d80ae0a1e7783bf42aa1241d9108b263936 100755 (executable)
@@ -264,6 +264,11 @@ sub checkrename {
     }
 }
 
+sub rename_mv($$)
+{
+    return (rename($_[0], $_[1]) || (system(("mv", $_[0], $_[1])) == 0));
+}
+
 sub dorename {
     return unless $dorename;
     return if $testmode;
@@ -271,7 +276,8 @@ sub dorename {
         if (@sdest) {
             unlink($rsrc) || &quit(sprintf(_g("rename: remove duplicate old link \`%s': %s"), $rsrc, $!));
         } else {
-            rename($rsrc,$rdest) || &quit(sprintf(_g("rename: rename \`%s' to \`%s': %s"), $rsrc, $rdest, $!));
+            rename_mv($rsrc, $rdest) ||
+                quit(sprintf(_g("rename: rename \`%s' to \`%s': %s"), $rsrc, $rdest, $!));
         }
     }
 }