git-send-email: SIG{TERM,INT} handlers

A single signal handler is used for both SIGTERM and
SIGINT in order to clean up after an uncouth termination
of git-send-email.

In particular, the handler resets the text color (this cleanup
was already present), turns on tty echoing (in case termination
occurrs during a masked Password prompt), and informs the user
of of any temporary files created by --compose.

Signed-off-by: Michael Witten <mfwitten@mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Michael Witten 2008-02-03 19:53:57 -05:00 коммит произвёл Junio C Hamano
Родитель 2363d7467d
Коммит 8742997607
1 изменённых файлов: 23 добавлений и 2 удалений

Просмотреть файл

@ -24,8 +24,6 @@ use Data::Dumper;
use Term::ANSIColor; use Term::ANSIColor;
use Git; use Git;
$SIG{INT} = sub { print color("reset"), "\n"; exit };
package FakeTerm; package FakeTerm;
sub new { sub new {
my ($class, $reason) = @_; my ($class, $reason) = @_;
@ -201,6 +199,29 @@ my %config_settings = (
"aliasesfile" => \@alias_files, "aliasesfile" => \@alias_files,
); );
# Handle Uncouth Termination
sub signal_handler {
# Make text normal
print color("reset"), "\n";
# SMTP password masked
system "stty echo";
# tmp files from --compose
if (-e $compose_filename) {
print "'$compose_filename' contains an intermediate version of the email you were composing.\n";
}
if (-e ($compose_filename . ".final")) {
print "'$compose_filename.final' contains the composed email.\n"
}
exit;
};
$SIG{TERM} = \&signal_handler;
$SIG{INT} = \&signal_handler;
# Begin by accumulating all the variables (defined above), that we will end up # Begin by accumulating all the variables (defined above), that we will end up
# needing, first, from the command line: # needing, first, from the command line: