[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[tor-commits] [onionperf/master] Open Tor control log files with \r\n as newline.



commit f863ee46e82a7acdf670752664eb4df93de0a247
Author: Karsten Loesing <karsten.loesing@xxxxxxx>
Date:   Sat May 9 19:51:42 2020 +0200

    Open Tor control log files with \r\n as newline.
    
    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.
---
 onionperf/analysis.py | 2 +-
 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:

_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits