]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/deb/deblistparser.cc
* merged latest fixes from debian-sid
[apt.git] / apt-pkg / deb / deblistparser.cc
index b708296d3fd53511349dfc3e739da3d0d2519741..d23207f4ae85839421f67d6d72b32b8a19082362 100644 (file)
@@ -456,7 +456,7 @@ const char *debListParser::ConvertRelation(const char *I,unsigned int &Op)
  *
  * The complete architecture, consisting of <kernel>-<cpu>.
  */
-static string CompleteArch(std::stringarch) {
+static string CompleteArch(std::string const &arch) {
     if (arch == "armel")              return "linux-arm";
     if (arch == "armhf")              return "linux-arm";
     if (arch == "lpia")               return "linux-i386";
@@ -495,9 +495,13 @@ const char *debListParser::ParseDepends(const char *Start,const char *Stop,
    Package.assign(Start,I - Start);
 
    // We don't want to confuse library users which can't handle MultiArch
+   string const arch = _config->Find("APT::Architecture");
    if (StripMultiArch == true) {
       size_t const found = Package.rfind(':');
-      if (found != string::npos)
+      if (found != string::npos &&
+         (strcmp(Package.c_str() + found, ":any") == 0 ||
+          strcmp(Package.c_str() + found, ":native") == 0 ||
+          strcmp(Package.c_str() + found + 1, arch.c_str()) == 0))
         Package = Package.substr(0,found);
    }
 
@@ -538,7 +542,6 @@ const char *debListParser::ParseDepends(const char *Start,const char *Stop,
 
    if (ParseArchFlags == true)
    {
-      string arch = _config->Find("APT::Architecture");
       string completeArch = CompleteArch(arch);
 
       // Parse an architecture