summaryrefslogtreecommitdiff
path: root/cmdline/apt-get.cc
diff options
context:
space:
mode:
authorMichael Vogt <mvo@debian.org>2006-01-12 22:44:04 +0000
committerMichael Vogt <mvo@debian.org>2006-01-12 22:44:04 +0000
commit5c4d7f0764f99ebe6e65933b1bc08671dbab98e9 (patch)
treec47346dc62dc38fe9247c8b1249f88ca90c98733 /cmdline/apt-get.cc
parentfacac1c52ebe40656af693502cab66eb4c09ad2f (diff)
parentac2c9fa03c9786da44320d59b3ad66f474c4634a (diff)
* merged with apt--debian-sid--0
Patches applied: * bubulle@debian.org--2005/apt--main--0--patch-134 Updated Basque translation * bubulle@debian.org--2005/apt--main--0--patch-135 Completed Basque translation * bubulle@debian.org--2005/apt--main--0--patch-136 French manpage of sources.list updated * bubulle@debian.org--2005/apt--main--0--patch-137 Disable Hebrew translation on trnaslator's request * bubulle@debian.org--2005/apt--main--0--patch-138 Swedish translation update * bubulle@debian.org--2005/apt--main--0--patch-139 Tagalog translation update * bubulle@debian.org--2005/apt--main--0--patch-140 Fix a translation glitch in German * bubulle@debian.org--2005/apt--main--0--patch-141 Revert the German fix * bubulle@debian.org--2005/apt--main--0--patch-142 Updated Vietnamese translation * bubulle@debian.org--2005/apt--main--0--patch-143 Really add the Vietnamese translation * bubulle@debian.org--2005/apt--main--0--patch-144 Greek translation update * bubulle@debian.org--2005/apt--main--0--patch-145 Simplified Chinese completed * bubulle@debian.org--2005/apt--main--0--patch-146 Czech translation update * bubulle@debian.org--2005/apt--main--0--patch-147 British translation of apt * bubulle@debian.org--2005/apt--main--0--patch-148 Italian translation update * bubulle@debian.org--2005/apt--main--0--patch-149 Merge with Michael archive (Debian version) * bubulle@debian.org--2005/apt--main--0--patch-150 Fix typo in apt-get.cc and update PO files * bubulle@debian.org--2005/apt--main--0--patch-151 Update French translation (and document the update-po I ran previously) * bubulle@debian.org--2005/apt--main--0--patch-152 Updated Slovak translation * bubulle@debian.org--2005/apt--main--0--patch-153 Close the right bug for Slovak translation * bubulle@debian.org--2005/apt--main--0--patch-154 French manpages translation update * bubulle@debian.org--2005/apt--main--0--patch-155 Swedish translation update * bubulle@debian.org--2005/apt--main--0--patch-156 Better makefile for more up-to-date PO and POT * bubulle@debian.org--2005/apt--main--0--patch-157 Run make uupdate-po * bubulle@debian.org--2005/apt--main--0--patch-158 Fix spaces errors in some translations * bubulle@debian.org--2005/apt--main--0--patch-159 Patch to allow "make apt-all.pot" work in the baz archive * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-108 * added "gl" to po/LINGUAS * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-109 * add " " in update-po * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-110 * make apt-get source smarter about not downloading the same sources twice * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-111 * merged with bubulle * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-112 * 2006 ftp-archive signing key added * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-113 * be more clever about I-M-S hits for the Release file and gpg-failures with it, requeue it without i-m-s then * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-114 * merged with mvo * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-115 * string fix * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-116 * changelog updates * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-117 * merged with bubulle * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-118 * merged from bubulle * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-119 * fix http data corruption (#280844) * mvo@debian.org--2005/apt--debian-sid--0--patch-10 * merged with apt--mvo and corrected conflicts in po/ * mvo@debian.org--2005/apt--debian-sid--0--patch-11 * changelog updates * mvo@debian.org--2005/apt--debian-sid--0--patch-12 * apt--mvo merged * mvo@debian.org--2005/apt--debian-sid--0--patch-13 * merged with mvo * mvo@debian.org--2005/apt--debian-sid--0--patch-14 * merged with apt--mvo--0 * mvo@debian.org--2005/apt--debian-sid--0--patch-15 * support multiple signatures * mvo@debian.org--2005/apt--debian-sid--0--patch-16 * merged with main * mvo@debian.org--2005/apt--debian-sid--0--patch-17 * merged with apt--mvo--0 * philippe.batailler@free.fr--2005/apt--main--0--patch-4 Update of sources.list * philippe.batailler@free.fr--2005/apt--main--0--patch-6 Change apt.ent.fr * philippe.batailler@free.fr--2005/apt--main--0--patch-7 Update manpages
Diffstat (limited to 'cmdline/apt-get.cc')
-rw-r--r--cmdline/apt-get.cc28
1 files changed, 27 insertions, 1 deletions
diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc
index 48b21a31f..abeb57c6f 100644
--- a/cmdline/apt-get.cc
+++ b/cmdline/apt-get.cc
@@ -38,6 +38,7 @@
#include <apt-pkg/version.h>
#include <apt-pkg/cachefile.h>
#include <apt-pkg/sptr.h>
+#include <apt-pkg/md5.h>
#include <apt-pkg/versionmatch.h>
#include <config.h>
@@ -45,6 +46,7 @@
#include "acqprogress.h"
+#include <set>
#include <locale.h>
#include <langinfo.h>
#include <fstream>
@@ -1899,6 +1901,9 @@ bool DoSource(CommandLine &CmdL)
DscFile *Dsc = new DscFile[CmdL.FileSize()];
+ // insert all downloaded uris into this set to avoid downloading them
+ // twice
+ set<string> queued;
// Load the requestd sources into the fetcher
unsigned J = 0;
for (const char **I = CmdL.FileList + 1; *I != 0; I++, J++)
@@ -1935,7 +1940,28 @@ bool DoSource(CommandLine &CmdL)
if (_config->FindB("APT::Get::Tar-Only",false) == true &&
I->Type != "tar")
continue;
-
+
+ // don't download the same uri twice (should this be moved to
+ // the fetcher interface itself?)
+ if(queued.find(Last->Index().ArchiveURI(I->Path)) != queued.end())
+ continue;
+ queued.insert(Last->Index().ArchiveURI(I->Path));
+
+ // check if we have a file with that md5 sum already localy
+ if(!I->MD5Hash.empty() && FileExists(flNotDir(I->Path)))
+ {
+ FileFd Fd(flNotDir(I->Path), FileFd::ReadOnly);
+ MD5Summation sum;
+ sum.AddFD(Fd.Fd(), Fd.Size());
+ Fd.Close();
+ if((string)sum.Result() == I->MD5Hash)
+ {
+ ioprintf(c1out,_("Skipping already downloaded file '%s'\n"),
+ flNotDir(I->Path).c_str());
+ continue;
+ }
+ }
+
new pkgAcqFile(&Fetcher,Last->Index().ArchiveURI(I->Path),
I->MD5Hash,I->Size,
Last->Index().SourceInfo(*Last,*I),Src);