Quellcode durchsuchen

dpkg-divert: Support diverting files from and to different file systems

Based on a patch by Juergen Kreileder. Closes: #102144, #149961
Guillem Jover vor 18 Jahren
Ursprung
Commit
0c5963d09d
3 geänderte Dateien mit 15 neuen und 1 gelöschten Zeilen
  1. 6 0
      ChangeLog
  2. 2 0
      debian/changelog
  3. 7 1
      scripts/dpkg-divert.pl

+ 6 - 0
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

+ 2 - 0
debian/changelog

@@ -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

+ 7 - 1
scripts/dpkg-divert.pl

@@ -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, $!));
         }
     }
 }