summaryrefslogtreecommitdiff
path: root/apt-pkg/policy.cc
diff options
context:
space:
mode:
Diffstat (limited to 'apt-pkg/policy.cc')
-rw-r--r--apt-pkg/policy.cc45
1 files changed, 24 insertions, 21 deletions
diff --git a/apt-pkg/policy.cc b/apt-pkg/policy.cc
index 4996007a3..922efb0dd 100644
--- a/apt-pkg/policy.cc
+++ b/apt-pkg/policy.cc
@@ -201,35 +201,38 @@ pkgCache::VerIterator pkgPolicy::GetCandidateVer(pkgCache::PkgIterator Pkg)
void pkgPolicy::CreatePin(pkgVersionMatch::MatchType Type,string Name,
string Data,signed short Priority)
{
- Pin *P = 0;
-
if (Name.empty() == true)
- P = &*Defaults.insert(Defaults.end(),PkgPin());
- else
{
- // Get a spot to put the pin
- pkgCache::PkgIterator Pkg = Cache->FindPkg(Name);
- if (Pkg.end() == true)
+ Pin *P = &*Defaults.insert(Defaults.end(),PkgPin());
+ P->Type = Type;
+ P->Priority = Priority;
+ P->Data = Data;
+ return;
+ }
+
+ // Get a spot to put the pin
+ pkgCache::GrpIterator Grp = Cache->FindGrp(Name);
+ for (pkgCache::PkgIterator Pkg = Grp.FindPkg("any");
+ Pkg.end() != true; Pkg = Grp.NextPkg(Pkg))
+ {
+ Pin *P = 0;
+ if (Pkg.end() == false)
+ P = Pins + Pkg->ID;
+ else
{
// Check the unmatched table
- for (vector<PkgPin>::iterator I = Unmatched.begin();
+ for (vector<PkgPin>::iterator I = Unmatched.begin();
I != Unmatched.end() && P == 0; I++)
if (I->Pkg == Name)
P = &*I;
-
+
if (P == 0)
- P = &*Unmatched.insert(Unmatched.end(),PkgPin());
+ P = &*Unmatched.insert(Unmatched.end(),PkgPin());
}
- else
- {
- P = Pins + Pkg->ID;
- }
+ P->Type = Type;
+ P->Priority = Priority;
+ P->Data = Data;
}
-
- // Set..
- P->Type = Type;
- P->Priority = Priority;
- P->Data = Data;
}
/*}}}*/
// Policy::GetMatch - Get the matching version for a package pin /*{{{*/
@@ -288,9 +291,9 @@ bool ReadPinDir(pkgPolicy &Plcy,string Dir)
if (Dir.empty() == true)
Dir = _config->FindDir("Dir::Etc::PreferencesParts");
- if (FileExists(Dir) == false)
+ if (DirectoryExists(Dir) == false)
{
- _error->WarningE("FileExists",_("Unable to read %s"),Dir.c_str());
+ _error->WarningE("DirectoryExists",_("Unable to read %s"),Dir.c_str());
return true;
}