]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/policy.cc
give rc-status packages a pin of -1
[apt.git] / apt-pkg / policy.cc
index d442e5c9069dce37789d80b6bbfd3dd375c8cf41..7c57f9deaa12dd2b59f888b3cc93ee1bed7ac496 100644 (file)
@@ -374,7 +374,7 @@ APT_PURE signed short pkgPolicy::GetPriority(pkgCache::VerIterator const &Ver, b
    if (!ConsiderFiles)
       return 0;
 
-   int priority = std::numeric_limits<int>::min();
+   signed short priority = std::numeric_limits<signed short>::min();
    for (pkgCache::VerFileIterator file = Ver.FileList(); file.end() == false; file++)
    {
       /* If this is the status file, and the current version is not the
@@ -382,14 +382,13 @@ APT_PURE signed short pkgPolicy::GetPriority(pkgCache::VerIterator const &Ver, b
          then it is not a candidate for installation, ever. This weeds
          out bogus entries that may be due to config-file states, or
          other. */
-      if (file.File().Flagged(pkgCache::Flag::NotSource) && Ver.ParentPkg().CurrentVer() != Ver) {
-        // Ignore
-      } else if (GetPriority(file.File()) > priority) {
-        priority = GetPriority(file.File());
-      }
+      if (file.File().Flagged(pkgCache::Flag::NotSource) && Ver.ParentPkg().CurrentVer() != Ver)
+        priority = std::max(priority, static_cast<decltype(priority)>(-1));
+      else
+        priority = std::max(priority, GetPriority(file.File()));
    }
 
-   return priority == std::numeric_limits<int>::min() ? 0 : priority;
+   return priority == std::numeric_limits<decltype(priority)>::min() ? 0 : priority;
 }
 APT_PURE signed short pkgPolicy::GetPriority(pkgCache::PkgFileIterator const &File)
 {
@@ -438,11 +437,11 @@ bool ReadPinFile(pkgPolicy &Plcy,string File)
       return true;
    
    FileFd Fd(File,FileFd::ReadOnly);
-   pkgTagFile TF(&Fd);
+   pkgTagFile TF(&Fd, pkgTagFile::SUPPORT_COMMENTS);
    if (Fd.IsOpen() == false || Fd.Failed())
       return false;
 
-   pkgUserTagSection Tags;
+   pkgTagSection Tags;
    while (TF.Step(Tags) == true)
    {
       // can happen when there are only comments in a record