summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2010-11-15 16:33:17 +0100
committerMichael Vogt <michael.vogt@ubuntu.com>2010-11-15 16:33:17 +0100
commitc9f3e0cdacbe24abccb2bbc0eab6c6b1a15d3bd9 (patch)
tree9f4a703c4d0e61e4edb69df1d0093d350496bab5
parent459b5f5dcc2fcdd754b8f273a6e40d6ac4e48659 (diff)
cmdline/apt-get.cc: add hash to the downloader
-rw-r--r--cmdline/apt-get.cc21
1 files changed, 15 insertions, 6 deletions
diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc
index 3fab4b17e..4e96bc67d 100644
--- a/cmdline/apt-get.cc
+++ b/cmdline/apt-get.cc
@@ -2751,6 +2751,7 @@ bool DoDownload(CommandLine &CmdL)
if (verset.empty() == true)
return false;
+ bool result = true;
pkgRecords Recs(Cache);
pkgSourceList *SrcList = Cache.GetSourceList();
for (APT::VersionSet::const_iterator Ver = verset.begin();
@@ -2770,12 +2771,20 @@ bool DoDownload(CommandLine &CmdL)
return _error->Error("FindIndex failed");
string uri = index->ArchiveURI(rec.FileName());
strprintf(descr, _("Downloading %s %s"), Pkg.Name(), Ver.VerStr());
- // down
- new pkgAcqFile(&Fetcher, uri, "", 0, descr, Pkg.Name(), ".");
- int res = Fetcher.Run();
- }
-
- return true;
+ // get the most appropriate hash
+ HashString hash;
+ if (rec.SHA256Hash() != "")
+ hash = HashString("sha256", rec.SHA256Hash());
+ else if (rec.SHA1Hash() != "")
+ hash = HashString("sha1", rec.SHA1Hash());
+ else if (rec.MD5Hash() != "")
+ hash = HashString("md5", rec.MD5Hash());
+ // get the file
+ new pkgAcqFile(&Fetcher, uri, hash.toStr(), 0, descr, Pkg.Name(), ".");
+ result &= (Fetcher.Run() == pkgAcquire::Continue);
+ }
+
+ return result;
}
/*}}}*/
// DoMoo - Never Ask, Never Tell /*{{{*/