]> gitweb.michael.orlitzky.com - djbdns-logparse.git/blobdiff - bin/djbdns-logparse
bin/djbdns-logparse: handle SIGINT (again).
[djbdns-logparse.git] / bin / djbdns-logparse
index 7808fbd99a5042a9adc31828933949325561585e..218801d0e263f6aaa056c4ec9fe523c0270997ca 100755 (executable)
@@ -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)