Fix incorrect SIGPIPE handling

This commit is contained in:
Tim Van Baak 2022-12-28 12:18:10 -08:00
parent 7528c2465f
commit 5ecb187c92
1 changed files with 13 additions and 5 deletions

View File

@ -236,6 +236,11 @@ def command_help(args):
return 0 return 0
def nocommand(args):
print("command required")
return 0
def main(): def main():
"""CLI entry point""" """CLI entry point"""
# Enable piping # Enable piping
@ -283,8 +288,11 @@ def main():
add_logging_handler(verbose=args.verbose, log_filename=None) add_logging_handler(verbose=args.verbose, log_filename=None)
# Execute command # Execute command
if args.command: try:
sys.exit(commands[args.command](args.args)) command = commands.get(args.command, nocommand)
else: sys.exit(command(args.args))
print("command required") except BrokenPipeError:
sys.exit(0) # See https://docs.python.org/3.10/library/signal.html#note-on-sigpipe
devnull = os.open(os.devnull, os.O_WRONLY)
os.dup2(devnull, sys.stdout.fileno())
sys.exit(1)