summaryrefslogtreecommitdiff
path: root/apt-pkg/versionmatch.cc
diff options
context:
space:
mode:
authorJulian Andres Klode <jak@debian.org>2015-08-10 11:19:11 +0200
committerJulian Andres Klode <jak@debian.org>2015-08-10 11:19:11 +0200
commit5bfd306ee16fd1be012dd2cd01ae52ff4179176a (patch)
tree6fefd276ab3d2827542a24672302ba2d09609e67 /apt-pkg/versionmatch.cc
parent9fb02ab02528ea45747318af26fae8a732cd2840 (diff)
versionmatch: Extract version match checking out of Find()
Refactor version matching to allow us to check if a version matches a pin. This will aid the per-version pinning implementation.
Diffstat (limited to 'apt-pkg/versionmatch.cc')
-rw-r--r--apt-pkg/versionmatch.cc38
1 files changed, 25 insertions, 13 deletions
diff --git a/apt-pkg/versionmatch.cc b/apt-pkg/versionmatch.cc
index 86c1b7d4a..c215f522c 100644
--- a/apt-pkg/versionmatch.cc
+++ b/apt-pkg/versionmatch.cc
@@ -164,25 +164,37 @@ pkgCache::VerIterator pkgVersionMatch::Find(pkgCache::PkgIterator Pkg)
pkgCache::VerIterator Ver = Pkg.VersionList();
for (; Ver.end() == false; ++Ver)
{
- if (Type == Version)
- {
- if (MatchVer(Ver.VerStr(),VerStr,VerPrefixMatch) == true)
- return Ver;
- if (ExpressionMatches(VerStr, Ver.VerStr()) == true)
- return Ver;
- continue;
- }
-
- for (pkgCache::VerFileIterator VF = Ver.FileList(); VF.end() == false; ++VF)
- if (FileMatch(VF.File()) == true)
- return Ver;
+ if (VersionMatches(Ver))
+ return Ver;
}
-
+
// This will be Ended by now.
return Ver;
}
/*}}}*/
+// VersionMatch::Find - Locate the best match for the select type /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgVersionMatch::VersionMatches(pkgCache::VerIterator Ver)
+{
+ if (Type == Version)
+ {
+ if (MatchVer(Ver.VerStr(),VerStr,VerPrefixMatch) == true)
+ return true;
+ if (ExpressionMatches(VerStr, Ver.VerStr()) == true)
+ return true;
+ return false;
+ }
+
+ for (pkgCache::VerFileIterator VF = Ver.FileList(); VF.end() == false; ++VF)
+ if (FileMatch(VF.File()) == true)
+ return true;
+
+ return false;
+}
+ /*}}}*/
+
#ifndef FNM_CASEFOLD
#define FNM_CASEFOLD 0
#endif