X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/632f24768e4fdcebe4e26e02471beb8f583e073b..3d1e34b0be262a611ae91a2c24b0f99de9671faf:/apt-pkg/policy.cc diff --git a/apt-pkg/policy.cc b/apt-pkg/policy.cc index a1e903178..4f953bd50 100644 --- a/apt-pkg/policy.cc +++ b/apt-pkg/policy.cc @@ -222,8 +222,8 @@ pkgCache::VerIterator pkgPolicy::GetCandidateVer(pkgCache::PkgIterator const &Pk return Pref; } - -// Policy::GetCandidateVer - Get the candidate install version /*{{{*/ + /*}}}*/ +// Policy::GetCandidateVerNew - Get the candidate install version /*{{{*/ // --------------------------------------------------------------------- /* Evaluate the package pins and the default list to deteremine what the best package is. */ @@ -409,7 +409,8 @@ bool ReadPinDir(pkgPolicy &Plcy,string Dir) if (DirectoryExists(Dir) == false) { - _error->WarningE("DirectoryExists",_("Unable to read %s"),Dir.c_str()); + if (Dir != "/dev/null") + _error->WarningE("DirectoryExists",_("Unable to read %s"),Dir.c_str()); return true; } @@ -438,7 +439,7 @@ bool ReadPinFile(pkgPolicy &Plcy,string File) FileFd Fd(File,FileFd::ReadOnly); pkgTagFile TF(&Fd); - if (_error->PendingError() == true) + if (Fd.IsOpen() == false || Fd.Failed()) return false; pkgUserTagSection Tags; @@ -477,10 +478,13 @@ bool ReadPinFile(pkgPolicy &Plcy,string File) } for (; Word != End && isspace(*Word) != 0; Word++); - int priority = Tags.FindI("Pin-Priority", 0); + _error->PushToStack(); + int const priority = Tags.FindI("Pin-Priority", 0); + bool const newError = _error->PendingError(); + _error->MergeWithStack(); if (priority < std::numeric_limits::min() || priority > std::numeric_limits::max() || - _error->PendingError()) { + newError) { return _error->Error(_("%s: Value %s is outside the range of valid pin priorities (%d to %d)"), File.c_str(), Tags.FindS("Pin-Priority").c_str(), std::numeric_limits::min(),