std::vector<std::string> Architectures;
std::vector<std::string> Languages;
bool UsePDiffs;
+ std::string UseByHash;
};
std::vector<debSectionEntry> DebEntries;
bool const KeepCompressed = APT_T_CONFIG_BOOL("KeepCompressed", GzipIndex);
bool const DefaultEnabled = APT_T_CONFIG_BOOL("DefaultEnabled", true);
bool const UsePDiffs = APT_T_CONFIG_BOOL("PDiffs", E->UsePDiffs);
+ std::string const UseByHash = APT_T_CONFIG_STR("By-Hash", E->UseByHash);
std::string const CompressionTypes = APT_T_CONFIG_STR("CompressionTypes", DefCompressionTypes);
#undef APT_T_CONFIG_BOOL
#undef APT_T_CONFIG_STR
Options.insert(std::make_pair("TARGET_OF", Type));
Options.insert(std::make_pair("CREATED_BY", *T));
Options.insert(std::make_pair("PDIFFS", UsePDiffs ? "yes" : "no"));
+ Options.insert(std::make_pair("BY_HASH", UseByHash));
Options.insert(std::make_pair("DEFAULTENABLED", DefaultEnabled ? "yes" : "no"));
Options.insert(std::make_pair("COMPRESSIONTYPES", CompressionTypes));
Options.insert(std::make_pair("SOURCESENTRY", E->sourcesEntry));
std::vector<std::string> const &Targets,
std::vector<std::string> const &Architectures,
std::vector<std::string> Languages,
- bool const usePDiffs)
+ bool const usePDiffs, std::string const &useByHash)
{
if (Languages.empty() == true)
Languages.push_back("none");
debReleaseIndexPrivate::debSectionEntry const entry = {
- sourcesEntry, Name, Targets, Architectures, Languages, usePDiffs
+ sourcesEntry, Name, Targets, Architectures, Languages, usePDiffs, useByHash
};
if (isSrc)
d->DebSrcEntries.push_back(entry);
return false;
pkgTagFile TagFile(&Fd, Fd.Size());
- if (_error->PendingError() == true)
+ if (Fd.IsOpen() == false || Fd.Failed())
{
if (ErrorText != NULL)
strprintf(*ErrorText, _("Unable to parse Release file %s"),Filename.c_str());
// signature for an 'InRelease' file couldn't be checked
if (OpenMaybeClearSignedFile(ReleaseFile, Rel) == false)
return false;
- if (_error->PendingError() == true)
- return false;
// Store the IMS information
pkgCache::RlsFileIterator File = Gen.GetCurRlsFile();
pkgTagFile TagFile(&Rel, Rel.Size());
pkgTagSection Section;
- if (_error->PendingError() == true || TagFile.Step(Section) == false)
+ if (Rel.IsOpen() == false || Rel.Failed() || TagFile.Step(Section) == false)
return false;
std::string data;
if (data.empty() == false) \
{ \
map_stringitem_t const storage = Gen.StoreString(pkgCacheGenerator::TYPE, data); \
+ if (storage == 0) return false; \
STORE = storage; \
}
APT_INRELEASE(MIXED, "Suite", File->Archive)
Section.FindFlag("NotAutomatic", File->Flags, pkgCache::Flag::NotAutomatic);
Section.FindFlag("ButAutomaticUpgrades", File->Flags, pkgCache::Flag::ButAutomaticUpgrades);
- return !_error->PendingError();
+ return true;
}
/*}}}*/
// ReleaseIndex::FindInCache - Find this index /*{{{*/
UsePDiffs = StringToBool(opt->second);
}
+ std::string UseByHash = _config->Find("APT::Acquire::By-Hash", "yes");
+ UseByHash = _config->Find("Acquire::By-Hash", UseByHash);
+ {
+ std::string const host = ::URI(URI).Host;
+ UseByHash = _config->Find("APT::Acquire::" + host + "::By-Hash", UseByHash);
+ UseByHash = _config->Find("Acquire::" + host + "::By-Hash", UseByHash);
+ std::map<std::string, std::string>::const_iterator const opt = Options.find("by-hash");
+ if (opt != Options.end())
+ UseByHash = opt->second;
+ }
+
auto const entry = Options.find("sourceslist-entry");
Deb->AddComponent(
entry->second,
mytargets,
parsePlusMinusOptions("arch", Options, APT::Configuration::getArchitectures()),
parsePlusMinusOptions("lang", Options, APT::Configuration::getLanguages(true)),
- UsePDiffs
+ UsePDiffs,
+ UseByHash
);
if (Deb->SetTrusted(GetTriStateOption(Options, "trusted")) == false ||