diff options
author | Michael Vogt <mvo@debian.org> | 2013-07-24 22:06:18 +0200 |
---|---|---|
committer | Michael Vogt <mvo@debian.org> | 2013-07-24 22:06:18 +0200 |
commit | f39daeb1f66b8910f91274055bf07c3d008cdc50 (patch) | |
tree | 9283950ebf8a3089b8b16b1d09c3aec8ecc5eb07 /apt-pkg/deb/debmetaindex.cc | |
parent | 267275c59cc35704789a228c6e9b1464c4cabd74 (diff) | |
parent | c7a629dd114c41a1244744e2f5085df2f505dc90 (diff) |
Merge remote-tracking branch 'upstream/debian/sid'
Diffstat (limited to 'apt-pkg/deb/debmetaindex.cc')
-rw-r--r-- | apt-pkg/deb/debmetaindex.cc | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/apt-pkg/deb/debmetaindex.cc b/apt-pkg/deb/debmetaindex.cc index 7a88d71e3..7dd5ab2bf 100644 --- a/apt-pkg/deb/debmetaindex.cc +++ b/apt-pkg/deb/debmetaindex.cc @@ -373,10 +373,29 @@ class debSLTypeDebian : public pkgSourceList::Type string const &Dist, string const &Section, bool const &IsSrc, map<string, string> const &Options) const { - map<string, string>::const_iterator const arch = Options.find("arch"); - vector<string> const Archs = + // parse arch=, arch+= and arch-= settings + map<string, string>::const_iterator arch = Options.find("arch"); + vector<string> Archs = (arch != Options.end()) ? VectorizeString(arch->second, ',') : APT::Configuration::getArchitectures(); + if ((arch = Options.find("arch+")) != Options.end()) + { + std::vector<std::string> const plusArch = VectorizeString(arch->second, ','); + for (std::vector<std::string>::const_iterator plus = plusArch.begin(); plus != plusArch.end(); ++plus) + if (std::find(Archs.begin(), Archs.end(), *plus) == Archs.end()) + Archs.push_back(*plus); + } + if ((arch = Options.find("arch-")) != Options.end()) + { + std::vector<std::string> const minusArch = VectorizeString(arch->second, ','); + for (std::vector<std::string>::const_iterator minus = minusArch.begin(); minus != minusArch.end(); ++minus) + { + std::vector<std::string>::iterator kill = std::find(Archs.begin(), Archs.end(), *minus); + if (kill != Archs.end()) + Archs.erase(kill); + } + } + map<string, string>::const_iterator const trusted = Options.find("trusted"); for (vector<metaIndex *>::const_iterator I = List.begin(); |