diff options
author | Michael Vogt <michael.vogt@ubuntu.com> | 2010-11-15 16:33:17 +0100 |
---|---|---|
committer | Michael Vogt <michael.vogt@ubuntu.com> | 2010-11-15 16:33:17 +0100 |
commit | c9f3e0cdacbe24abccb2bbc0eab6c6b1a15d3bd9 (patch) | |
tree | 9f4a703c4d0e61e4edb69df1d0093d350496bab5 | |
parent | 459b5f5dcc2fcdd754b8f273a6e40d6ac4e48659 (diff) |
cmdline/apt-get.cc: add hash to the downloader
-rw-r--r-- | cmdline/apt-get.cc | 21 |
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 /*{{{*/ |