]> gitweb.michael.orlitzky.com - djbdns-logparse.git/commitdiff
djbdns/io.py: use Popen's context manager to clean up.
authorMichael Orlitzky <michael@orlitzky.com>
Thu, 22 Sep 2022 01:21:08 +0000 (21:21 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Thu, 22 Sep 2022 01:21:08 +0000 (21:21 -0400)
djbdns/io.py

index 1d68fac428ce534652ad50e81c56869121c33a0e..75422c01387032f0a0aab6e87e8f40fac411d010 100644 (file)
@@ -31,25 +31,26 @@ def parse_logfile(file : TextIO):
     # Open a pipe to tai64nlocal. We'll write lines of our input file
     # (the log file) to it, and read back the same lines but with
     # friendly timestamps in them.
-    tai = Popen(["tai64nlocal"], stdin=PIPE, stdout=PIPE, text=True, bufsize=0)
+    with Popen(["tai64nlocal"],
+               stdin=PIPE,
+               stdout=PIPE,
+               text=True,
+               bufsize=0) as tai:
 
-    for line in file:
-        tai.stdin.write(line)
-        line = tai.stdout.readline()
+        for line in file:
+            tai.stdin.write(line)
+            line = tai.stdout.readline()
 
-        friendly_line = handle_tinydns_log(line)
-        if not friendly_line:
-            friendly_line = handle_dnscache_log(line)
+            friendly_line = handle_tinydns_log(line)
             if not friendly_line:
-                friendly_line = line
-
-        try:
-            print(friendly_line)
-        except BrokenPipeError:
-            # If our stdout is being piped to another process and if
-            # that process closes the pipe, this error will be raised
-            # the next time we try to write to stdout.
-            break
-
-    # Ensure that the pipe gets closed.
-    tai.communicate()
+                friendly_line = handle_dnscache_log(line)
+                if not friendly_line:
+                    friendly_line = line
+
+            try:
+                print(friendly_line)
+            except BrokenPipeError:
+                # If our stdout is being piped to another process and if
+                # that process closes the pipe, this error will be raised
+                # the next time we try to write to stdout.
+                break