SVN: toys/rsget.pl/RSGet: Dispatch.pm Line.pm Main.pm
sparky
sparky at pld-linux.org
Tue Dec 7 21:56:15 CET 2010
Author: sparky
Date: Tue Dec 7 21:56:14 2010
New Revision: 11974
Modified:
toys/rsget.pl/RSGet/Dispatch.pm
toys/rsget.pl/RSGet/Line.pm
toys/rsget.pl/RSGet/Main.pm
Log:
- implemented "soft stop" for SIGINT, send twice to terminate immediatelly
Modified: toys/rsget.pl/RSGet/Dispatch.pm
==============================================================================
--- toys/rsget.pl/RSGet/Dispatch.pm (original)
+++ toys/rsget.pl/RSGet/Dispatch.pm Tue Dec 7 21:56:14 2010
@@ -29,7 +29,7 @@
our %downloading;
our %checking;
-my $soft_restart = 0;
+my $soft_stop = 0;
my %working = (
get => \%downloading,
@@ -259,14 +259,19 @@
'checking URIs' => scalar keys %checking,
);
- if ( $soft_restart ) {
+ if ( $soft_stop ) {
foreach my $obj ( values %downloading ) {
unless ( $obj->{started_download} ) {
$obj->{_abort} = "Soft restart";
}
}
- RSGet::Main::restart()
- unless $downloading_num;
+ unless ( $downloading_num ) {
+ if ( $soft_stop == 2 ) {
+ RSGet::Main::restart()
+ } else {
+ RSGet::Main::stop()
+ }
+ }
return 1;
}
@@ -309,10 +314,10 @@
sub soft_restart
{
- if ( $soft_restart ) {
+ if ( $soft_stop == 2 ) {
RSGet::Main::restart();
} else {
- $soft_restart = 1;
+ $soft_stop = 2;
new RSGet::Line( "NOTICE: ", "rsget.pl will restart after finishing all current downloads" );
new RSGet::Line( "NOTICE: ", "send SIGUSR2 again to restart now" );
RSGet::FileList::update();
@@ -321,6 +326,20 @@
$SIG{USR2} = \&soft_restart;
+sub soft_stop
+{
+ if ( $soft_stop == 1 ) {
+ RSGet::Main::stop();
+ } else {
+ $soft_stop = 1;
+ new RSGet::Line( "NOTICE: ", "rsget.pl will terminate after finishing all current downloads" );
+ new RSGet::Line( "NOTICE: ", "send SIGINT again to terminate now" );
+ RSGet::FileList::update();
+ }
+}
+
+$SIG{INT} = \&soft_stop;
+
sub abort_missing
{
my $all = shift;
Modified: toys/rsget.pl/RSGet/Line.pm
==============================================================================
--- toys/rsget.pl/RSGet/Line.pm (original)
+++ toys/rsget.pl/RSGet/Line.pm Tue Dec 7 21:56:14 2010
@@ -233,12 +233,6 @@
return if $nooutput;
- $SIG{INT} = sub {
- print_all_lines();
- print "\nTERMINATED\n";
- exit 0;
- };
-
$SIG{WINCH} = sub {
print "\033[2J\033[1;1H\n";
term_size();
@@ -250,8 +244,7 @@
$SIG{__DIE__} = sub {
print_all_lines();
- print "\n";
- print "DIED: ", shift, "\n\n";
+ print "\n\nDIED: ", shift, "\n\n";
exit 1;
};
}
Modified: toys/rsget.pl/RSGet/Main.pm
==============================================================================
--- toys/rsget.pl/RSGet/Main.pm (original)
+++ toys/rsget.pl/RSGet/Main.pm Tue Dec 7 21:56:14 2010
@@ -178,6 +178,14 @@
exit 0;
}
+sub stop
+{
+ $restart = 0;
+ RSGet::Line::print_all_lines();
+ printf "\n\nTerminating at %s\n\n", scalar localtime;
+ exit 0;
+}
+
END {
if ( $restart ) {
exec $0, @$argv;
More information about the pld-cvs-commit
mailing list