From e60cbf65521ff02a95ecea2f1ff496cc18bec72c Mon Sep 17 00:00:00 2001 From: Sebastien Luttringer <sebastien.luttringer@smartjog.com> Date: Tue, 20 Dec 2011 12:12:26 +0100 Subject: [PATCH] doesn't display directory with cat command also optimize tarball.getnames --- installsystems/image.py | 2 +- installsystems/tarball.py | 14 ++++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/installsystems/image.py b/installsystems/image.py index 8499298..98a9c57 100644 --- a/installsystems/image.py +++ b/installsystems/image.py @@ -617,7 +617,7 @@ class PackageImage(Image): ''' Display filename in the tarball ''' - filelist = self._tarball.getnames(glob_pattern=filename) + filelist = self._tarball.getnames(glob_pattern=filename, dir=False) if len(filelist) == 0: warn("No file matching %s" % filename) for filename in filelist: diff --git a/installsystems/tarball.py b/installsystems/tarball.py index 155bd9b..1540e68 100644 --- a/installsystems/tarball.py +++ b/installsystems/tarball.py @@ -36,16 +36,18 @@ class Tarball(tarfile.TarFile): fd = self.extractfile(ti) return fd.read() if fd is not None else "" - def getnames(self, re_pattern=None, glob_pattern=None): - lorig = super(Tarball, self).getnames() + def getnames(self, re_pattern=None, glob_pattern=None, dir=True): + names = super(Tarball, self).getnames() # regexp matching if re_pattern is not None: - return [ tpname for tpname in lorig - if re.match(re_pattern, tpname) ] + names = filter(lambda x: re.match(re_pattern, x), names) # globbing matching if glob_pattern is not None: - return fnmatch.filter(lorig, glob_pattern) - return lorig + names = fnmatch.filter(names, glob_pattern) + # dir filering + if not dir: + names = filter(lambda x: not self.getmember(x).isdir(), names) + return names def size(self): ''' -- GitLab