diff --git a/installsystems/image.py b/installsystems/image.py index 84992986e603724a56f1b0e40fec84a3d7986850..98a9c57fbf14a3b857989f2b386fc7235dfe148a 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 155bd9b15e7200153ec0130f2fbd15b350f65104..1540e683ef869a91ca5b161e495aaf5b267fcb41 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): '''