From d5ffd8dfd137722335b066be63bb24289a52c71a Mon Sep 17 00:00:00 2001 From: Michael Orlitzky Date: Tue, 20 Sep 2022 19:21:28 -0400 Subject: [PATCH] bin/djbdns-logparse: handle SIGINT (again). I removed the KeyboardInterrupt handler from the original program and have now put it back as an async handler for SIGINT. This is helpful when the user accidentally starts the program with no arguments and it just sits there until he hits Ctrl-C (which would previously have shown a stack trace). --- bin/djbdns-logparse | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/bin/djbdns-logparse b/bin/djbdns-logparse index 7808fbd..218801d 100755 --- a/bin/djbdns-logparse +++ b/bin/djbdns-logparse @@ -2,6 +2,8 @@ r""" Convert tinydns and dnscache logs to human-readable form """ +from signal import signal, SIGINT +from sys import exit, stdin from argparse import ArgumentParser, FileType from djbdns.io import parse_logfile @@ -11,7 +13,6 @@ parser = ArgumentParser(description = __doc__) # Parse zero or more positional arguments into a list of # "logfiles". If none are given, read from stdin instead. -from sys import stdin parser.add_argument("logfiles", metavar="LOGFILE", type=FileType("r"), @@ -29,5 +30,11 @@ parser.add_argument("logfiles", # # So anyway, don't run this on several million logfiles. args = parser.parse_args() + +# Install a SIGINT handler so thst we don't spit out a stack trace when +# the user accidentally starts the program with no arguments and then +# hits Ctrl-C to kill it. +signal(SIGINT, lambda s,f: exit(0)) + for f in args.logfiles: parse_logfile(f) -- 2.44.2