aboutsummaryrefslogtreecommitdiff
path: root/elogv
diff options
context:
space:
mode:
authorAlfred Wingate <parona@protonmail.com>2023-10-05 19:51:18 +0300
committerAlfred Wingate <parona@protonmail.com>2023-10-05 20:24:46 +0300
commitaf4f13a47320e30d45150b5c22eea28104573e09 (patch)
tree5f6e1cb202565e0fbe27623290afb9149247d0f4 /elogv
parentRelease 0.8.1 (diff)
downloadelogv-af4f13a47320e30d45150b5c22eea28104573e09.tar.gz
elogv-af4f13a47320e30d45150b5c22eea28104573e09.tar.bz2
elogv-af4f13a47320e30d45150b5c22eea28104573e09.zip
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@protonmail.com>
Diffstat (limited to 'elogv')
-rwxr-xr-xelogv22
1 files 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: