diff options
| author | Karsten Loesing <karsten.loesing@gmx.net> | 2020-05-09 19:51:42 +0200 |
|---|---|---|
| committer | Karsten Loesing <karsten.loesing@gmx.net> | 2020-05-09 19:51:42 +0200 |
| commit | f863ee46e82a7acdf670752664eb4df93de0a247 (patch) | |
| tree | 4f44cfab2b6c3bf186b3310693912e7e7b4a4b19 | |
| parent | 0f43d7904c1690561667d7833f42e00b3f367647 (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.py | 2 | ||||
| -rw-r--r-- | onionperf/util.py | 8 |
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: |
