commit:     af4f13a47320e30d45150b5c22eea28104573e09
Author:     Alfred Wingate <parona <AT> protonmail <DOT> com>
AuthorDate: Thu Oct  5 16:51:18 2023 +0000
Commit:     Sebastian Pipping <sping <AT> gentoo <DOT> org>
CommitDate: Thu Oct  5 17:24:46 2023 +0000
URL:        https://gitweb.gentoo.org/proj/elogv.git/commit/?id=af4f13a4

Open files with same function to allow decompression to work seamlessly

* liblzma left mostly untouched, next commit will port it to lzma.
* BZ2File -> open to allow plaintext reading, which is expected
  elsewhere in elogv.

Signed-off-by: Alfred Wingate <parona <AT> protonmail.com>

 elogv | 22 +++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)

diff --git a/elogv b/elogv
index 7e1e37f..b3455c7 100755
--- a/elogv
+++ b/elogv
@@ -418,18 +418,22 @@ class ElogViewer:
         self.logf_wrap = self.wrap_logf_lines()
         self.show_log()
 
-    def openfile(self, myfile):
-        if myfile.endswith('.xz'):
+    @staticmethod
+    def open(file, mode='rt'):
+        if file.endswith('.xz'):
             if not no_liblzma:
-                self.logf = liblzma.LZMAFile(myfile)
+                return liblzma.LZMAFile(file)
             else:
                 sys.exit('You need pyliblzma library to be able to read xz 
compressed elog files.\nhttp://pypi.python.org/pypi/pyliblzma')
-        elif myfile.endswith('.gz'):
-            self.logf = gzip.open(myfile)
-        elif myfile.endswith('.bz2'):
-            self.logf = bz2.BZ2File(myfile)
+        elif file.endswith('.gz'):
+            return gzip.open(file, mode=mode)
+        elif file.endswith('.bz2'):
+            return bz2.open(file, mode=mode)
         else:
-            self.logf = open(myfile)
+            return open(file, mode=mode)
+
+    def openfile(self, file):
+        self.logf = self.open(file)
 
     def refresh_file_pad(self):
         """
@@ -528,7 +532,7 @@ class ElogViewer:
         """
         Get the highest elog class in a file
         """
-        with open(filepath) as f:
+        with self.open(filepath) as f:
             classes = re.findall("LOG:|INFO:|WARN:|ERROR:", f.read())
 
         if "ERROR:" in classes:

Reply via email to