Bläddra i källkod

fix apt-get download truncation (closes: #736962)

Michael Vogt 12 år sedan
förälder
incheckning
6ae22905f6
2 ändrade filer med 13 tillägg och 3 borttagningar
  1. 6 3
      cmdline/apt-get.cc
  2. 7 0
      test/integration/test-apt-get-download

+ 6 - 3
cmdline/apt-get.cc

@@ -678,14 +678,17 @@ bool DoDownload(CommandLine &CmdL)
 
    // copy files in local sources to the current directory
    for (pkgAcquire::ItemIterator I = Fetcher.ItemsBegin(); I != Fetcher.ItemsEnd(); ++I)
-      if ((*I)->Local == true && (*I)->Status == pkgAcquire::Item::StatDone)
+   {
+      std::string const filename = cwd + flNotDir((*I)->DestFile);
+      if ((*I)->Local == true &&
+          filename != (*I)->DestFile &&
+          (*I)->Status == pkgAcquire::Item::StatDone)
       {
-	 std::string const filename = cwd + flNotDir((*I)->DestFile);
 	 std::ifstream src((*I)->DestFile.c_str(), std::ios::binary);
 	 std::ofstream dst(filename.c_str(), std::ios::binary);
 	 dst << src.rdbuf();
       }
-
+   }
    return Failed == false;
 }
 									/*}}}*/

+ 7 - 0
test/integration/test-apt-get-download

@@ -24,6 +24,7 @@ testdownload() {
 	rm $1
 }
 
+# normal case(es)
 testdownload apt_1.0_all.deb apt stable
 testdownload apt_2.0_all.deb apt
 
@@ -32,3 +33,9 @@ testequal "'file://${DEBFILE}' apt_2.0_all.deb $(stat -c%s $DEBFILE) SHA512:$(sh
 
 # deb:677887
 testequal "E: Can't find a source to download version '1.0' of 'vrms:i386'" aptget download vrms
+
+# deb:736962 - apt-get download foo && 
+aptget download apt
+aptget download apt
+testsuccess test -s apt_2.0_all.deb
+rm -f apt_1.0_all.deb