summaryrefslogtreecommitdiff
path: root/apt-pkg
diff options
context:
space:
mode:
Diffstat (limited to 'apt-pkg')
-rw-r--r--apt-pkg/versionmatch.cc38
-rw-r--r--apt-pkg/versionmatch.h1
2 files changed, 26 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
diff --git a/apt-pkg/versionmatch.h b/apt-pkg/versionmatch.h
index bb950b9c7..156ad61cb 100644
--- a/apt-pkg/versionmatch.h
+++ b/apt-pkg/versionmatch.h
@@ -74,6 +74,7 @@ class pkgVersionMatch
static bool ExpressionMatches(const std::string& pattern, const char *string);
bool FileMatch(pkgCache::PkgFileIterator File);
pkgCache::VerIterator Find(pkgCache::PkgIterator Pkg);
+ bool VersionMatches(pkgCache::VerIterator Ver);
pkgVersionMatch(std::string Data,MatchType Type);
};