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