Commit e60cbf65 authored by Sebastien Luttringer's avatar Sebastien Luttringer
Browse files

doesn't display directory with cat command

also optimize tarball.getnames
parent 8daa0f4e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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:
+8 −6
Original line number Diff line number Diff line
@@ -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):
        '''