From: Peter Eisentraut Date: Fri, 27 Mar 2026 13:24:13 +0000 (+0100) Subject: pgindent: Clean up temp files created by File::Temp on SIGINT X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=801de0bd443375ed3928ef44f2ee70a734d2a4d5;p=thirdparty%2Fpostgresql.git 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 --- 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";