summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarsten Loesing <karsten.loesing@gmx.net>2020-05-09 19:51:42 +0200
committerKarsten Loesing <karsten.loesing@gmx.net>2020-05-09 19:51:42 +0200
commitf863ee46e82a7acdf670752664eb4df93de0a247 (patch)
tree4f44cfab2b6c3bf186b3310693912e7e7b4a4b19
parent0f43d7904c1690561667d7833f42e00b3f367647 (diff)
Open Tor control log files with \r\n as newline.task-29367-2
Turns out that Tor control log files use \r\n for newlines. When we open these files without providing a newline parameter, line endings are translated by Python 3 into '\n' before being returned to the us. If we do specify a newline parameter, line endings are returned to us untranslated. We need \r\n as newlines for Stem to recognize and parse control events. On the other hand TGen log files use \n as newline, which is why we need to make newlines configurable.
-rw-r--r--onionperf/analysis.py2
-rw-r--r--onionperf/util.py8
2 files changed, 5 insertions, 5 deletions
diff --git a/onionperf/analysis.py b/onionperf/analysis.py
index 041d8c3..8e2b7df 100644
--- a/onionperf/analysis.py
+++ b/onionperf/analysis.py
@@ -825,7 +825,7 @@ class TorCtlParser(Parser):
def parse(self, source, do_simple=True):
self.do_simple = do_simple
- source.open()
+ source.open(newline='\r\n')
for line in source:
# ignore line parsing errors
try:
diff --git a/onionperf/util.py b/onionperf/util.py
index 7c8e80f..cb9f065 100644
--- a/onionperf/util.py
+++ b/onionperf/util.py
@@ -203,18 +203,18 @@ class DataSource(object):
def __next__(self):
return next(self.source) if self.source is not None else None
- def open(self):
+ def open(self, newline=None):
if self.source is None:
if self.filename == '-':
self.source = sys.stdin
elif self.compress or self.filename.endswith(".xz"):
self.compress = True
- self.source = lzma.open(self.filename, mode='rt')
+ self.source = lzma.open(self.filename, mode='rt', newline=newline)
elif self.filename.endswith(".gz"):
self.compress = True
- self.source = gzip.open(self.filename, 'rt')
+ self.source = gzip.open(self.filename, 'rt', newline=newline)
else:
- self.source = open(self.filename, 'rt')
+ self.source = open(self.filename, 'rt', newline=newline)
def get_file_handle(self):
if self.source is None: