[Yum-devel] [PATCH 1/2] Test the first char of a pattern match, if we can
Seth Vidal
skvidal at fedoraproject.org
Wed Nov 4 19:41:25 UTC 2009
On Tue, 3 Nov 2009, James Antill wrote:
> ---
> yum/rpmsack.py | 16 +++++++++++++---
> 1 files changed, 13 insertions(+), 3 deletions(-)
>
> diff --git a/yum/rpmsack.py b/yum/rpmsack.py
> index 9a542e5..9647936 100644
> --- a/yum/rpmsack.py
> +++ b/yum/rpmsack.py
> @@ -300,17 +300,27 @@ class RPMDBPackageSack(PackageSackBase):
> return None
> ret = []
> for pat in patterns:
> + qpat = pat[0]
> + if qpat in ('?', '*'):
> + qpat = None
> if ignore_case:
> - ret.append(re.compile(fnmatch.translate(pat), re.I))
> + ret.append((qpat, re.compile(fnmatch.translate(pat), re.I)))
> else:
> - ret.append(re.compile(fnmatch.translate(pat)))
> + ret.append((qpat, re.compile(fnmatch.translate(pat))))
> return ret
> @staticmethod
> def _match_repattern(repatterns, hdr):
> if repatterns is None:
> return True
>
> - for repat in repatterns:
> + for qpat, repat in repatterns:
> + epoch = hdr['epoch']
> + if epoch is None:
> + epoch = '0'
> + else:
> + epoch = str(epoch)
> + if qpat is not None and qpat != hdr['name'][0] and qpat != epoch[0]:
> + continue
> if repat.match(hdr['name']):
> return True
> if repat.match("%(name)s-%(version)s-%(release)s.%(arch)s" % hdr):
> --
> 1.6.2.5
ack
-sv
More information about the Yum-devel
mailing list