summaryrefslogtreecommitdiff
path: root/source3/script/samba-log-parser
diff options
context:
space:
mode:
authorPavel Filipenský <pfilipensky@samba.org>2025-07-09 22:38:02 +0200
committerPavel Filipensky <pfilipensky@samba.org>2025-09-09 13:50:00 +0000
commitf636bd3ec08271e79feea6cdd48e48da2af5b1d8 (patch)
tree9d94b46811c06efff366ebed7ecebab86aa35eda /source3/script/samba-log-parser
parenta6dcf78483d7ae492e695d30c5c783df8e7879d8 (diff)
downloadsamba-f636bd3ec08271e79feea6cdd48e48da2af5b1d8.tar.gz
samba-f636bd3ec08271e79feea6cdd48e48da2af5b1d8.tar.bz2
samba-f636bd3ec08271e79feea6cdd48e48da2af5b1d8.zip
s3:script: Avoid UnicodeDecodeError for samba-log-parser processing whole directory
When log directory contains zipped files like old/log.rpcd_spoolss-20250831.gz we get error. We want to ignore such files. $ samba-log-parser --traceid 6 --merge-by-timestamp Traceback (most recent call last): File "/usr/bin/samba-log-parser", line 382, in <module> main() ~~~~^^ File "/usr/bin/samba-log-parser", line 311, in main process_file( ~~~~~~~~~~~~^ record_list, ^^^^^^^^^^^^ ...<3 lines>... options.traceid, ^^^^^^^^^^^^^^^^ ) ^ File "/usr/bin/samba-log-parser", line 92, in process_file data = infile.readlines() File "<frozen codecs>", line 325, in decode UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte Signed-off-by: Pavel Filipenský <pfilipensky@samba.org> Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz> Autobuild-User(master): Pavel Filipensky <pfilipensky@samba.org> Autobuild-Date(master): Tue Sep 9 13:50:00 UTC 2025 on atb-devel-224
Diffstat (limited to 'source3/script/samba-log-parser')
-rwxr-xr-xsource3/script/samba-log-parser14
1 files changed, 12 insertions, 2 deletions
diff --git a/source3/script/samba-log-parser b/source3/script/samba-log-parser
index a07dfdb4a6c..bd8cf580e05 100755
--- a/source3/script/samba-log-parser
+++ b/source3/script/samba-log-parser
@@ -69,7 +69,12 @@ from collections import defaultdict
def process_file_no_traceid(record_list, fname):
with open(fname, "r") as infile:
- data = infile.readlines()
+ try:
+ data = infile.readlines()
+ except UnicodeDecodeError:
+ print("This file is not Unicode encoded: ", fname, file=sys.stderr)
+ return
+
date = ""
record_lines = []
@@ -89,7 +94,12 @@ def process_file_no_traceid(record_list, fname):
def process_file(record_list, traceid_set, fname, opid, otraceid):
with open(fname, "r") as infile:
- data = infile.readlines()
+ try:
+ data = infile.readlines()
+ except UnicodeDecodeError:
+ print("This file is not Unicode encoded: ", fname, file=sys.stderr)
+ return
+
pid = None
traceid = 0
traceid_prev = None