From 801de0bd443375ed3928ef44f2ee70a734d2a4d5 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Fri, 27 Mar 2026 14:24:13 +0100 Subject: [PATCH] pgindent: Clean up temp files created by File::Temp on SIGINT When pressing Ctrl+C while running pgindent, it would often leave around files like pgtypedefAXUEEA. This slightly changes SIGINT handling so those files are cleaned up. Author: Jelte Fennema-Nio Discussion: https://www.postgresql.org/message-id/flat/DFCDD5H4J7VX.3GJKRBBDCKQ86@jeltef.nl --- src/tools/pgindent/pgindent | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/tools/pgindent/pgindent b/src/tools/pgindent/pgindent index 7481696a584..f78a34eb3ce 100755 --- a/src/tools/pgindent/pgindent +++ b/src/tools/pgindent/pgindent @@ -19,6 +19,15 @@ use File::Temp; use IO::Handle; use Getopt::Long; +# By default Perl's SIGINT/SIGTERM kill the process without running +# END blocks, so File::Temp never gets to clean up. Converting the +# signal into an exit() makes END-block cleanup run. See: +# . Exit codes use the +# 128+signum convention so callers can tell the process was killed by +# a signal. +$SIG{INT} = sub { exit 130; }; # 128 + 2 (SIGINT) +$SIG{TERM} = sub { exit 143; }; # 128 + 15 (SIGTERM) + # Update for pg_bsd_indent version my $INDENT_VERSION = "2.1.2";