SVN: toys/rsget.pl/RSGet: Get.pm Wait.pm

sparky sparky at pld-linux.org
Tue Feb 15 00:38:23 CET 2011


Author: sparky
Date: Tue Feb 15 00:38:23 2011
New Revision: 12150

Modified:
   toys/rsget.pl/RSGet/Get.pm
   toys/rsget.pl/RSGet/Wait.pm
Log:
- allow plugins to die without killing whole rsget.pl


Modified: toys/rsget.pl/RSGet/Get.pm
==============================================================================
--- toys/rsget.pl/RSGet/Get.pm	(original)
+++ toys/rsget.pl/RSGet/Get.pm	Tue Feb 15 00:38:23 2011
@@ -102,7 +102,7 @@
 		}
 	}
 
-	$self->start();
+	$self->call( \&start );
 	return $self;
 }
 
@@ -198,6 +198,21 @@
 	return $self->stage0();
 }
 
+sub call
+{
+	my $self = shift;
+	my $func = shift;
+
+	local $SIG{__DIE__};
+	delete $SIG{__DIE__};
+	eval {
+		return &$func( $self, @_ );
+	};
+	if ( $@ ) {
+		$self->problem( "function call problem: $@" );
+	}
+}
+
 sub cookie
 {
 	my $self = shift;
@@ -257,7 +272,7 @@
 		return;
 	}
 	$_ = $self->{body};
-	&$func( $self );
+	$self->call( $func );
 }
 
 sub click_download
@@ -325,8 +340,7 @@
 	if ( $self->{is_html} ) {
 		$self->print( "is HTML" );
 		$_ = $self->{body};
-		my $func = $self->{stage_is_html};
-		return &$func( $self );
+		return $self->call( $self->{stage_is_html} );
 	}
 
 	RSGet::Dispatch::mark_used( $self );

Modified: toys/rsget.pl/RSGet/Wait.pm
==============================================================================
--- toys/rsget.pl/RSGet/Wait.pm	(original)
+++ toys/rsget.pl/RSGet/Wait.pm	Tue Feb 15 00:38:23 2011
@@ -59,8 +59,7 @@
 
 	$self->linedata();
 	$self->linecolor();
-	my $func = $self->{wait_next};
-	&$func( $self );
+	$self->call( $self->{wait_next} );
 }
 
 sub wait_update


More information about the pld-cvs-commit mailing list