]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/deb/debmetaindex.cc
Release 1.11~exp11
[apt.git] / apt-pkg / deb / debmetaindex.cc
index 480317db3b8c1dad4480597b0f0a00ac7b3becc4..69e41a6f46ea0572c8c2765c786323414a229ed3 100644 (file)
 #include <string>
 #include <utility>
 #include <vector>
-#include <set>
 #include <algorithm>
 
-#include <sys/types.h>
 #include <sys/stat.h>
-#include <unistd.h>
 #include <string.h>
 
 #include <apti18n.h>
@@ -157,7 +154,7 @@ static void GetIndexTargetsFor(char const * const Type, std::string const &URI,
                  Options.insert(std::make_pair("ARCHITECTURE", *A));
               Options.insert(std::make_pair("BASE_URI", baseURI));
               Options.insert(std::make_pair("REPO_URI", URI));
-              Options.insert(std::make_pair("TARGET_OF", "deb-src"));
+              Options.insert(std::make_pair("TARGET_OF", Type));
               Options.insert(std::make_pair("CREATED_BY", *T));
 
               std::string MetaKey = tplMetaKey;
@@ -718,10 +715,25 @@ class APT_HIDDEN debSLTypeDebian : public pkgSourceList::Type             /*{{{*/
         List.push_back(Deb);
       }
 
+      std::vector<std::string> const alltargets = _config->FindVector(std::string("Acquire::IndexTargets::") + Name, "", true);
+      std::vector<std::string> mytargets = parsePlusMinusOptions("target", Options, alltargets);
+      if (mytargets.empty() == false)
+        for (auto const &target : alltargets)
+        {
+           std::map<std::string, std::string>::const_iterator const opt = Options.find(target);
+           if (opt == Options.end())
+              continue;
+           auto const tarItr = std::find(mytargets.begin(), mytargets.end(), target);
+           bool const optValue = StringToBool(opt->second);
+           if (optValue == true && tarItr == mytargets.end())
+              mytargets.push_back(target);
+           else if (optValue == false && tarItr != mytargets.end())
+              mytargets.erase(std::remove(mytargets.begin(), mytargets.end(), target), mytargets.end());
+        }
       Deb->AddComponent(
            IsSrc,
            Section,
-           parsePlusMinusOptions("target", Options, _config->FindVector(std::string("Acquire::IndexTargets::") + Name, "", true)),
+           mytargets,
            parsePlusMinusOptions("arch", Options, APT::Configuration::getArchitectures()),
            parsePlusMinusOptions("lang", Options, APT::Configuration::getLanguages(true))
            );
@@ -785,34 +797,5 @@ class APT_HIDDEN debSLTypeDebSrc : public debSLTypeDebian          /*{{{*/
 };
                                                                        /*}}}*/
 
-debDebFileMetaIndex::debDebFileMetaIndex(std::string const &DebFile)   /*{{{*/
-   : metaIndex(DebFile, "local-uri", "deb-dist"), d(NULL), DebFile(DebFile)
-{
-   DebIndex = new debDebPkgFileIndex(DebFile);
-   Indexes = new std::vector<pkgIndexFile *>();
-   Indexes->push_back(DebIndex);
-}
-debDebFileMetaIndex::~debDebFileMetaIndex() {}
-                                                                       /*}}}*/
-class APT_HIDDEN debSLTypeDebFile : public pkgSourceList::Type         /*{{{*/
-{
-   public:
-
-   bool CreateItem(std::vector<metaIndex *> &List, std::string const &URI,
-                  std::string const &/*Dist*/, std::string const &/*Section*/,
-                  std::map<std::string, std::string> const &/*Options*/) const APT_OVERRIDE
-   {
-      metaIndex *mi = new debDebFileMetaIndex(URI);
-      List.push_back(mi);
-      return true;
-   }
-
-   debSLTypeDebFile() : Type("deb-file", "Debian local deb file")
-   {
-   }
-};
-                                                                       /*}}}*/
-
 APT_HIDDEN debSLTypeDeb _apt_DebType;
 APT_HIDDEN debSLTypeDebSrc _apt_DebSrcType;
-APT_HIDDEN debSLTypeDebFile _apt_DebFileType;