1 // -*- mode: cpp; mode: fold -*-
3 /* ######################################################################
5 Simple wrapper around a std::set to provide a similar interface to
6 a set of cache structures as to the complete set of all structures
7 in the pkgCache. Currently only Package is supported.
9 ##################################################################### */
11 // Include Files /*{{{*/
14 #include <apt-pkg/aptconfiguration.h>
15 #include <apt-pkg/cachefile.h>
16 #include <apt-pkg/cachefilter.h>
17 #include <apt-pkg/cacheset.h>
18 #include <apt-pkg/error.h>
19 #include <apt-pkg/versionmatch.h>
20 #include <apt-pkg/pkgrecords.h>
21 #include <apt-pkg/policy.h>
22 #include <apt-pkg/cacheiterators.h>
23 #include <apt-pkg/configuration.h>
24 #include <apt-pkg/depcache.h>
25 #include <apt-pkg/macros.h>
26 #include <apt-pkg/pkgcache.h>
39 // FromTask - Return all packages in the cache from a specific task /*{{{*/
40 bool PackageContainerInterface::FromTask(PackageContainerInterface
* const pci
, pkgCacheFile
&Cache
, std::string pattern
, CacheSetHelper
&helper
) {
41 size_t const archfound
= pattern
.find_last_of(':');
42 std::string arch
= "native";
43 if (archfound
!= std::string::npos
) {
44 arch
= pattern
.substr(archfound
+1);
45 pattern
.erase(archfound
);
48 if (pattern
[pattern
.length() -1] != '^')
50 pattern
.erase(pattern
.length()-1);
52 if (unlikely(Cache
.GetPkgCache() == 0 || Cache
.GetDepCache() == 0))
55 bool const wasEmpty
= pci
->empty();
57 pci
->setConstructor(TASK
);
60 pkgRecords
Recs(Cache
);
62 // build regexp for the task
65 snprintf(S
, sizeof(S
), "^Task:.*[, ]%s([, ]|$)", pattern
.c_str());
66 if(regcomp(&Pattern
,S
, REG_EXTENDED
| REG_NOSUB
| REG_NEWLINE
) != 0) {
67 _error
->Error("Failed to compile task regexp");
72 for (pkgCache::GrpIterator Grp
= Cache
->GrpBegin(); Grp
.end() == false; ++Grp
) {
73 pkgCache::PkgIterator Pkg
= Grp
.FindPkg(arch
);
74 if (Pkg
.end() == true)
76 pkgCache::VerIterator ver
= Cache
[Pkg
].CandidateVerIter(Cache
);
80 pkgRecords::Parser
&parser
= Recs
.Lookup(ver
.FileList());
81 const char *start
, *end
;
82 parser
.GetRec(start
,end
);
83 unsigned int const length
= end
- start
;
84 if (unlikely(length
== 0))
87 strncpy(buf
, start
, length
);
89 if (regexec(&Pattern
, buf
, 0, 0, 0) != 0)
93 helper
.showTaskSelection(Pkg
, pattern
);
99 helper
.canNotFindTask(pci
, Cache
, pattern
);
100 pci
->setConstructor(UNKNOWN
);
104 if (wasEmpty
== false && pci
->getConstructor() != UNKNOWN
)
105 pci
->setConstructor(UNKNOWN
);
110 // FromRegEx - Return all packages in the cache matching a pattern /*{{{*/
111 bool PackageContainerInterface::FromRegEx(PackageContainerInterface
* const pci
, pkgCacheFile
&Cache
, std::string pattern
, CacheSetHelper
&helper
) {
112 static const char * const isregex
= ".?+*|[^$";
113 if (pattern
.find_first_of(isregex
) == std::string::npos
)
116 bool const wasEmpty
= pci
->empty();
117 if (wasEmpty
== true)
118 pci
->setConstructor(REGEX
);
120 size_t archfound
= pattern
.find_last_of(':');
121 std::string arch
= "native";
122 if (archfound
!= std::string::npos
) {
123 arch
= pattern
.substr(archfound
+1);
124 if (arch
.find_first_of(isregex
) == std::string::npos
)
125 pattern
.erase(archfound
);
130 if (unlikely(Cache
.GetPkgCache() == 0))
133 APT::CacheFilter::PackageNameMatchesRegEx
regexfilter(pattern
);
136 for (pkgCache::GrpIterator Grp
= Cache
.GetPkgCache()->GrpBegin(); Grp
.end() == false; ++Grp
) {
137 if (regexfilter(Grp
) == false)
139 pkgCache::PkgIterator Pkg
= Grp
.FindPkg(arch
);
140 if (Pkg
.end() == true) {
141 if (archfound
== std::string::npos
) {
142 std::vector
<std::string
> archs
= APT::Configuration::getArchitectures();
143 for (std::vector
<std::string
>::const_iterator a
= archs
.begin();
144 a
!= archs
.end() && Pkg
.end() != true; ++a
)
145 Pkg
= Grp
.FindPkg(*a
);
147 if (Pkg
.end() == true)
152 helper
.showRegExSelection(Pkg
, pattern
);
156 if (found
== false) {
157 helper
.canNotFindRegEx(pci
, Cache
, pattern
);
158 pci
->setConstructor(UNKNOWN
);
162 if (wasEmpty
== false && pci
->getConstructor() != UNKNOWN
)
163 pci
->setConstructor(UNKNOWN
);
168 // FromFnmatch - Returns the package defined by this fnmatch /*{{{*/
170 PackageContainerInterface::FromFnmatch(PackageContainerInterface
* const pci
,
173 CacheSetHelper
&helper
)
175 static const char * const isfnmatch
= ".?*[]!";
176 if (pattern
.find_first_of(isfnmatch
) == std::string::npos
)
179 bool const wasEmpty
= pci
->empty();
180 if (wasEmpty
== true)
181 pci
->setConstructor(FNMATCH
);
183 size_t archfound
= pattern
.find_last_of(':');
184 std::string arch
= "native";
185 if (archfound
!= std::string::npos
) {
186 arch
= pattern
.substr(archfound
+1);
187 if (arch
.find_first_of(isfnmatch
) == std::string::npos
)
188 pattern
.erase(archfound
);
193 if (unlikely(Cache
.GetPkgCache() == 0))
196 APT::CacheFilter::PackageNameMatchesFnmatch
filter(pattern
);
199 for (pkgCache::GrpIterator Grp
= Cache
.GetPkgCache()->GrpBegin(); Grp
.end() == false; ++Grp
) {
200 if (filter(Grp
) == false)
202 pkgCache::PkgIterator Pkg
= Grp
.FindPkg(arch
);
203 if (Pkg
.end() == true) {
204 if (archfound
== std::string::npos
) {
205 std::vector
<std::string
> archs
= APT::Configuration::getArchitectures();
206 for (std::vector
<std::string
>::const_iterator a
= archs
.begin();
207 a
!= archs
.end() && Pkg
.end() != true; ++a
)
208 Pkg
= Grp
.FindPkg(*a
);
210 if (Pkg
.end() == true)
215 #if (APT_PKG_MAJOR >= 4 && APT_PKG_MINOR >= 13)
216 helper
.showFnmatchSelection(Pkg
, pattern
);
218 helper
.showRegExSelection(Pkg
, pattern
);
223 if (found
== false) {
224 #if (APT_PKG_MAJOR >= 4 && APT_PKG_MINOR >= 13)
225 helper
.canNotFindFnmatch(pci
, Cache
, pattern
);
227 helper
.canNotFindRegEx(pci
, Cache
, pattern
);
229 pci
->setConstructor(UNKNOWN
);
233 if (wasEmpty
== false && pci
->getConstructor() != UNKNOWN
)
234 pci
->setConstructor(UNKNOWN
);
239 // FromName - Returns the package defined by this string /*{{{*/
240 pkgCache::PkgIterator
PackageContainerInterface::FromName(pkgCacheFile
&Cache
,
241 std::string
const &str
, CacheSetHelper
&helper
) {
242 std::string pkg
= str
;
243 size_t archfound
= pkg
.find_last_of(':');
245 if (archfound
!= std::string::npos
) {
246 arch
= pkg
.substr(archfound
+1);
247 pkg
.erase(archfound
);
250 if (Cache
.GetPkgCache() == 0)
251 return pkgCache::PkgIterator(Cache
, 0);
253 pkgCache::PkgIterator
Pkg(Cache
, 0);
254 if (arch
.empty() == true) {
255 pkgCache::GrpIterator Grp
= Cache
.GetPkgCache()->FindGrp(pkg
);
256 if (Grp
.end() == false)
257 Pkg
= Grp
.FindPreferredPkg();
259 Pkg
= Cache
.GetPkgCache()->FindPkg(pkg
, arch
);
261 if (Pkg
.end() == true)
262 return helper
.canNotFindPkgName(Cache
, str
);
266 // FromGroup - Returns the package defined by this string /*{{{*/
267 bool PackageContainerInterface::FromGroup(PackageContainerInterface
* const pci
, pkgCacheFile
&Cache
,
268 std::string pkg
, CacheSetHelper
&helper
) {
269 if (unlikely(Cache
.GetPkgCache() == 0))
272 size_t const archfound
= pkg
.find_last_of(':');
274 if (archfound
!= std::string::npos
) {
275 arch
= pkg
.substr(archfound
+1);
276 pkg
.erase(archfound
);
277 if (arch
== "all" || arch
== "native")
278 arch
= _config
->Find("APT::Architecture");
281 pkgCache::GrpIterator Grp
= Cache
.GetPkgCache()->FindGrp(pkg
);
282 if (Grp
.end() == false) {
283 if (arch
.empty() == true) {
284 pkgCache::PkgIterator Pkg
= Grp
.FindPreferredPkg();
285 if (Pkg
.end() == false)
292 // for 'linux-any' return the first package matching, for 'linux-*' return all matches
293 bool const isGlobal
= arch
.find('*') != std::string::npos
;
294 APT::CacheFilter::PackageArchitectureMatchesSpecification
pams(arch
);
295 for (pkgCache::PkgIterator Pkg
= Grp
.PackageList(); Pkg
.end() == false; Pkg
= Grp
.NextPkg(Pkg
)) {
296 if (pams(Pkg
) == false)
300 if (isGlobal
== false)
308 pkgCache::PkgIterator Pkg
= helper
.canNotFindPkgName(Cache
, pkg
);
309 if (Pkg
.end() == true)
316 // FromString - Return all packages matching a specific string /*{{{*/
317 bool PackageContainerInterface::FromString(PackageContainerInterface
* const pci
, pkgCacheFile
&Cache
, std::string
const &str
, CacheSetHelper
&helper
) {
319 _error
->PushToStack();
321 if (FromGroup(pci
, Cache
, str
, helper
) == false &&
322 FromTask(pci
, Cache
, str
, helper
) == false &&
323 #if (APT_PKG_MAJOR >= 4 && APT_PKG_MINOR >= 13)
324 // FIXME: hm, hm, regexp/fnmatch incompatible?
325 FromFnmatch(pci
, Cache
, str
, helper
) == false &&
327 FromRegEx(pci
, Cache
, str
, helper
) == false)
329 helper
.canNotFindPackage(pci
, Cache
, str
);
334 _error
->RevertToStack();
336 _error
->MergeWithStack();
340 // FromCommandLine - Return all packages specified on commandline /*{{{*/
341 bool PackageContainerInterface::FromCommandLine(PackageContainerInterface
* const pci
, pkgCacheFile
&Cache
, const char **cmdline
, CacheSetHelper
&helper
) {
343 for (const char **I
= cmdline
; *I
!= 0; ++I
)
344 found
|= PackageContainerInterface::FromString(pci
, Cache
, *I
, helper
);
348 // FromModifierCommandLine - helper doing the work for PKG:GroupedFromCommandLine /*{{{*/
349 bool PackageContainerInterface::FromModifierCommandLine(unsigned short &modID
, PackageContainerInterface
* const pci
,
350 pkgCacheFile
&Cache
, const char * cmdline
,
351 std::list
<Modifier
> const &mods
, CacheSetHelper
&helper
) {
352 std::string str
= cmdline
;
353 unsigned short fallback
= modID
;
354 bool modifierPresent
= false;
355 for (std::list
<Modifier
>::const_iterator mod
= mods
.begin();
356 mod
!= mods
.end(); ++mod
) {
357 size_t const alength
= strlen(mod
->Alias
);
359 case Modifier::POSTFIX
:
360 if (str
.compare(str
.length() - alength
, alength
,
361 mod
->Alias
, 0, alength
) != 0)
363 str
.erase(str
.length() - alength
);
366 case Modifier::PREFIX
:
371 modifierPresent
= true;
374 if (modifierPresent
== true) {
375 bool const errors
= helper
.showErrors(false);
376 pkgCache::PkgIterator Pkg
= FromName(Cache
, cmdline
, helper
);
377 helper
.showErrors(errors
);
378 if (Pkg
.end() == false) {
384 return FromString(pci
, Cache
, str
, helper
);
387 // FromModifierCommandLine - helper doing the work for VER:GroupedFromCommandLine /*{{{*/
388 bool VersionContainerInterface::FromModifierCommandLine(unsigned short &modID
,
389 VersionContainerInterface
* const vci
,
390 pkgCacheFile
&Cache
, const char * cmdline
,
391 std::list
<Modifier
> const &mods
,
392 CacheSetHelper
&helper
) {
393 Version select
= NEWEST
;
394 std::string str
= cmdline
;
395 if (unlikely(str
.empty() == true))
397 bool modifierPresent
= false;
398 unsigned short fallback
= modID
;
399 for (std::list
<Modifier
>::const_iterator mod
= mods
.begin();
400 mod
!= mods
.end(); ++mod
) {
401 if (modID
== fallback
&& mod
->ID
== fallback
)
402 select
= mod
->SelectVersion
;
403 size_t const alength
= strlen(mod
->Alias
);
405 case Modifier::POSTFIX
:
406 if (str
.length() <= alength
||
407 str
.compare(str
.length() - alength
, alength
, mod
->Alias
, 0, alength
) != 0)
409 str
.erase(str
.length() - alength
);
411 select
= mod
->SelectVersion
;
413 case Modifier::PREFIX
:
418 modifierPresent
= true;
421 if (modifierPresent
== true) {
422 bool const errors
= helper
.showErrors(false);
423 bool const found
= VersionContainerInterface::FromString(vci
, Cache
, cmdline
, select
, helper
, true);
424 helper
.showErrors(errors
);
430 return FromString(vci
, Cache
, str
, select
, helper
);
433 // FromCommandLine - Return all versions specified on commandline /*{{{*/
434 bool VersionContainerInterface::FromCommandLine(VersionContainerInterface
* const vci
,
435 pkgCacheFile
&Cache
, const char **cmdline
,
436 Version
const &fallback
, CacheSetHelper
&helper
) {
438 for (const char **I
= cmdline
; *I
!= 0; ++I
)
439 found
|= VersionContainerInterface::FromString(vci
, Cache
, *I
, fallback
, helper
);
443 // FromString - Returns all versions spedcified by a string /*{{{*/
444 bool VersionContainerInterface::FromString(VersionContainerInterface
* const vci
,
445 pkgCacheFile
&Cache
, std::string pkg
,
446 Version
const &fallback
, CacheSetHelper
&helper
,
447 bool const onlyFromName
) {
449 bool verIsRel
= false;
450 size_t const vertag
= pkg
.find_last_of("/=");
451 if (vertag
!= std::string::npos
) {
452 ver
= pkg
.substr(vertag
+1);
453 verIsRel
= (pkg
[vertag
] == '/');
457 if (onlyFromName
== false)
458 PackageContainerInterface::FromString(&pkgset
, Cache
, pkg
, helper
);
460 pkgset
.insert(PackageContainerInterface::FromName(Cache
, pkg
, helper
));
464 if (pkgset
.getConstructor() != PackageSet::UNKNOWN
)
465 errors
= helper
.showErrors(false);
468 for (PackageSet::const_iterator P
= pkgset
.begin();
469 P
!= pkgset
.end(); ++P
) {
470 if (vertag
== std::string::npos
) {
471 found
|= VersionContainerInterface::FromPackage(vci
, Cache
, P
, fallback
, helper
);
474 pkgCache::VerIterator V
;
475 if (ver
== "installed")
476 V
= getInstalledVer(Cache
, P
, helper
);
477 else if (ver
== "candidate")
478 V
= getCandidateVer(Cache
, P
, helper
);
479 else if (ver
== "newest") {
480 if (P
->VersionList
!= 0)
483 V
= helper
.canNotFindNewestVer(Cache
, P
);
485 pkgVersionMatch
Match(ver
, (verIsRel
== true ? pkgVersionMatch::Release
:
486 pkgVersionMatch::Version
));
488 if (V
.end() == true) {
489 if (verIsRel
== true)
490 _error
->Error(_("Release '%s' for '%s' was not found"),
491 ver
.c_str(), P
.FullName(true).c_str());
493 _error
->Error(_("Version '%s' for '%s' was not found"),
494 ver
.c_str(), P
.FullName(true).c_str());
500 helper
.showSelectedVersion(P
, V
, ver
, verIsRel
);
504 if (pkgset
.getConstructor() != PackageSet::UNKNOWN
)
505 helper
.showErrors(errors
);
509 // FromPackage - versions from package based on fallback /*{{{*/
510 bool VersionContainerInterface::FromPackage(VersionContainerInterface
* const vci
,
512 pkgCache::PkgIterator
const &P
,
513 Version
const &fallback
,
514 CacheSetHelper
&helper
) {
515 pkgCache::VerIterator V
;
520 if (P
->VersionList
!= 0)
521 for (V
= P
.VersionList(); V
.end() != true; ++V
)
522 found
|= vci
->insert(V
);
524 helper
.canNotFindAllVer(vci
, Cache
, P
);
527 found
|= vci
->insert(getInstalledVer(Cache
, P
, helper
));
528 found
|= vci
->insert(getCandidateVer(Cache
, P
, helper
));
531 found
|= vci
->insert(getCandidateVer(Cache
, P
, helper
));
534 found
|= vci
->insert(getInstalledVer(Cache
, P
, helper
));
537 showErrors
= helper
.showErrors(false);
538 V
= getCandidateVer(Cache
, P
, helper
);
540 V
= getInstalledVer(Cache
, P
, helper
);
541 helper
.showErrors(showErrors
);
542 if (V
.end() == false)
543 found
|= vci
->insert(V
);
545 helper
.canNotFindInstCandVer(vci
, Cache
, P
);
548 showErrors
= helper
.showErrors(false);
549 V
= getInstalledVer(Cache
, P
, helper
);
551 V
= getCandidateVer(Cache
, P
, helper
);
552 helper
.showErrors(showErrors
);
553 if (V
.end() == false)
554 found
|= vci
->insert(V
);
556 helper
.canNotFindInstCandVer(vci
, Cache
, P
);
559 if (P
->VersionList
!= 0)
560 found
|= vci
->insert(P
.VersionList());
562 helper
.canNotFindNewestVer(Cache
, P
);
568 // getCandidateVer - Returns the candidate version of the given package /*{{{*/
569 pkgCache::VerIterator
VersionContainerInterface::getCandidateVer(pkgCacheFile
&Cache
,
570 pkgCache::PkgIterator
const &Pkg
, CacheSetHelper
&helper
) {
571 pkgCache::VerIterator Cand
;
572 if (Cache
.IsPolicyBuilt() == true || Cache
.IsDepCacheBuilt() == false) {
573 if (unlikely(Cache
.GetPolicy() == 0))
574 return pkgCache::VerIterator(Cache
);
575 Cand
= Cache
.GetPolicy()->GetCandidateVer(Pkg
);
577 Cand
= Cache
[Pkg
].CandidateVerIter(Cache
);
579 if (Cand
.end() == true)
580 return helper
.canNotFindCandidateVer(Cache
, Pkg
);
584 // getInstalledVer - Returns the installed version of the given package /*{{{*/
585 pkgCache::VerIterator
VersionContainerInterface::getInstalledVer(pkgCacheFile
&Cache
,
586 pkgCache::PkgIterator
const &Pkg
, CacheSetHelper
&helper
) {
587 if (Pkg
->CurrentVer
== 0)
588 return helper
.canNotFindInstalledVer(Cache
, Pkg
);
589 return Pkg
.CurrentVer();
593 // canNotFindPkgName - handle the case no package has this name /*{{{*/
594 pkgCache::PkgIterator
CacheSetHelper::canNotFindPkgName(pkgCacheFile
&Cache
,
595 std::string
const &str
) {
596 if (ShowError
== true)
597 _error
->Insert(ErrorType
, _("Unable to locate package %s"), str
.c_str());
598 return pkgCache::PkgIterator(Cache
, 0);
601 // canNotFindTask - handle the case no package is found for a task /*{{{*/
602 void CacheSetHelper::canNotFindTask(PackageContainerInterface
* const /*pci*/, pkgCacheFile
&/*Cache*/, std::string pattern
) {
603 if (ShowError
== true)
604 _error
->Insert(ErrorType
, _("Couldn't find task '%s'"), pattern
.c_str());
607 // canNotFindRegEx - handle the case no package is found by a regex /*{{{*/
608 void CacheSetHelper::canNotFindRegEx(PackageContainerInterface
* const /*pci*/, pkgCacheFile
&/*Cache*/, std::string pattern
) {
609 if (ShowError
== true)
610 _error
->Insert(ErrorType
, _("Couldn't find any package by regex '%s'"), pattern
.c_str());
612 #if (APT_PKG_MAJOR >= 4 && APT_PKG_MINOR >= 13)
613 // canNotFindFnmatch - handle the case no package is found by a fnmatch /*{{{*/
614 void CacheSetHelper::canNotFindFnmatch(PackageContainerInterface
* const /*pci*/, pkgCacheFile
&/*Cache*/, std::string pattern
) {
615 if (ShowError
== true)
616 _error
->Insert(ErrorType
, _("Couldn't find any package by glob '%s'"), pattern
.c_str());
619 // canNotFindPackage - handle the case no package is found from a string/*{{{*/
620 APT_CONST
void CacheSetHelper::canNotFindPackage(PackageContainerInterface
* const /*pci*/, pkgCacheFile
&/*Cache*/, std::string
const &/*str*/) {
623 // canNotFindAllVer /*{{{*/
624 void CacheSetHelper::canNotFindAllVer(VersionContainerInterface
* const /*vci*/, pkgCacheFile
&/*Cache*/,
625 pkgCache::PkgIterator
const &Pkg
) {
626 if (ShowError
== true)
627 _error
->Insert(ErrorType
, _("Can't select versions from package '%s' as it is purely virtual"), Pkg
.FullName(true).c_str());
630 // canNotFindInstCandVer /*{{{*/
631 void CacheSetHelper::canNotFindInstCandVer(VersionContainerInterface
* const /*vci*/, pkgCacheFile
&/*Cache*/,
632 pkgCache::PkgIterator
const &Pkg
) {
633 if (ShowError
== true)
634 _error
->Insert(ErrorType
, _("Can't select installed nor candidate version from package '%s' as it has neither of them"), Pkg
.FullName(true).c_str());
637 // canNotFindInstCandVer /*{{{*/
638 void CacheSetHelper::canNotFindCandInstVer(VersionContainerInterface
* const /*vci*/, pkgCacheFile
&/*Cache*/,
639 pkgCache::PkgIterator
const &Pkg
) {
640 if (ShowError
== true)
641 _error
->Insert(ErrorType
, _("Can't select installed nor candidate version from package '%s' as it has neither of them"), Pkg
.FullName(true).c_str());
644 // canNotFindNewestVer /*{{{*/
645 pkgCache::VerIterator
CacheSetHelper::canNotFindNewestVer(pkgCacheFile
&Cache
,
646 pkgCache::PkgIterator
const &Pkg
) {
647 if (ShowError
== true)
648 _error
->Insert(ErrorType
, _("Can't select newest version from package '%s' as it is purely virtual"), Pkg
.FullName(true).c_str());
649 return pkgCache::VerIterator(Cache
, 0);
652 // canNotFindCandidateVer /*{{{*/
653 pkgCache::VerIterator
CacheSetHelper::canNotFindCandidateVer(pkgCacheFile
&Cache
,
654 pkgCache::PkgIterator
const &Pkg
) {
655 if (ShowError
== true)
656 _error
->Insert(ErrorType
, _("Can't select candidate version from package %s as it has no candidate"), Pkg
.FullName(true).c_str());
657 return pkgCache::VerIterator(Cache
, 0);
660 // canNotFindInstalledVer /*{{{*/
661 pkgCache::VerIterator
CacheSetHelper::canNotFindInstalledVer(pkgCacheFile
&Cache
,
662 pkgCache::PkgIterator
const &Pkg
) {
663 if (ShowError
== true)
664 _error
->Insert(ErrorType
, _("Can't select installed version from package %s as it is not installed"), Pkg
.FullName(true).c_str());
665 return pkgCache::VerIterator(Cache
, 0);
668 // showTaskSelection /*{{{*/
669 APT_CONST
void CacheSetHelper::showTaskSelection(pkgCache::PkgIterator
const &/*pkg*/,
670 std::string
const &/*pattern*/) {
673 // showRegExSelection /*{{{*/
674 APT_CONST
void CacheSetHelper::showRegExSelection(pkgCache::PkgIterator
const &/*pkg*/,
675 std::string
const &/*pattern*/) {
678 #if (APT_PKG_MAJOR >= 4 && APT_PKG_MINOR >= 13)
679 // showFnmatchSelection /*{{{*/
680 APT_CONST
void CacheSetHelper::showFnmatchSelection(pkgCache::PkgIterator
const &/*pkg*/,
681 std::string
const &/*pattern*/) {
685 // showSelectedVersion /*{{{*/
686 APT_CONST
void CacheSetHelper::showSelectedVersion(pkgCache::PkgIterator
const &/*Pkg*/,
687 pkgCache::VerIterator
const /*Ver*/,
688 std::string
const &/*ver*/,
689 bool const /*verIsRel*/) {