X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/88a8975f156e452d9f3ebe76822b236e8962ebba..63c7141275c8c5c0f6e60f5242785e50cabaf2a0:/apt-pkg/indexfile.cc?ds=sidebyside diff --git a/apt-pkg/indexfile.cc b/apt-pkg/indexfile.cc index 8e50ecfae..fad339197 100644 --- a/apt-pkg/indexfile.cc +++ b/apt-pkg/indexfile.cc @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -143,11 +144,15 @@ std::string IndexTarget::Option(OptionKeys const EnumKey) const /*{{{*/ APT_CASE(REPO_URI); APT_CASE(TARGET_OF); APT_CASE(CREATED_BY); + APT_CASE(PDIFFS); + APT_CASE(DEFAULTENABLED); + APT_CASE(COMPRESSIONTYPES); + APT_CASE(SOURCESENTRY); #undef APT_CASE case FILENAME: return _config->FindDir("Dir::State::lists") + URItoFileName(URI); case EXISTING_FILENAME: std::string const filename = Option(FILENAME); - std::vector const types = APT::Configuration::getCompressionTypes(); + std::vector const types = VectorizeString(Option(COMPRESSIONTYPES), ' '); for (std::vector::const_iterator t = types.begin(); t != types.end(); ++t) { if (t->empty()) @@ -164,6 +169,11 @@ std::string IndexTarget::Option(OptionKeys const EnumKey) const /*{{{*/ return M->second; } /*}}}*/ +bool IndexTarget::OptionBool(OptionKeys const EnumKey) const /*{{{*/ +{ + return StringToBool(Option(EnumKey)); +} + /*}}}*/ std::string IndexTarget::Format(std::string format) const /*{{{*/ { for (std::map::const_iterator O = Options.begin(); O != Options.end(); ++O) @@ -202,7 +212,7 @@ std::string pkgDebianIndexTargetFile::IndexFileName() const /*{{{*/ if (FileExists(s)) return s; - std::vector types = APT::Configuration::getCompressionTypes(); + std::vector const types = VectorizeString(Target.Option(IndexTarget::COMPRESSIONTYPES), ' '); for (std::vector::const_iterator t = types.begin(); t != types.end(); ++t) { std::string p = s + '.' + *t; @@ -257,9 +267,13 @@ std::string pkgDebianIndexTargetFile::GetProgressDescription() const return Target.Description; } -pkgDebianIndexRealFile::pkgDebianIndexRealFile(std::string const &File, bool const Trusted) :/*{{{*/ - pkgDebianIndexFile(Trusted), d(NULL), File(flAbsPath(File)) +pkgDebianIndexRealFile::pkgDebianIndexRealFile(std::string const &pFile, bool const Trusted) :/*{{{*/ + pkgDebianIndexFile(Trusted), d(NULL) { + if (pFile == "/nonexistent/stdin") + File = pFile; + else + File = flAbsPath(pFile); } /*}}}*/ // IndexRealFile::Size - Return the size of the index /*{{{*/ @@ -328,6 +342,7 @@ bool pkgDebianIndexFile::Merge(pkgCacheGenerator &Gen,OpProgress * const Prog) _error->PushToStack(); std::unique_ptr Parser(CreateListParser(Pkg)); bool const newError = _error->PendingError(); + _error->MergeWithStack(); if (newError == false && Parser == nullptr) return true; if (Parser == NULL)