SVN: toys/rsget.pl/RSGet/FileList.pm
sparky
sparky at pld-linux.org
Thu Mar 11 01:11:35 CET 2010
Author: sparky
Date: Thu Mar 11 01:11:35 2010
New Revision: 11235
Modified:
toys/rsget.pl/RSGet/FileList.pm
Log:
- add list processor hook
- added some simple but useful processors
Modified: toys/rsget.pl/RSGet/FileList.pm
==============================================================================
--- toys/rsget.pl/RSGet/FileList.pm (original)
+++ toys/rsget.pl/RSGet/FileList.pm Thu Mar 11 01:11:35 2010
@@ -98,6 +98,56 @@
}
}
+$RSGet::Dispatch::downloading if 0; # avoid warning
+sub proc_stop_inactive_get
+{
+ my $active = 0;
+ foreach my $uri ( keys %{$_[2]} ) {
+ if ( exists $RSGet::Dispatch::downloading{ $uri } ) {
+ $active = 1;
+ last;
+ }
+ }
+
+ $_[0] = "STOP" unless $active;
+}
+
+our %processors = (
+ "Remove all DONE" => sub {
+ if ( $_[0] eq "DONE" ) {
+ my $decoded = $_[2];
+ delete $decoded->{$_} foreach keys %$decoded;
+ }
+ },
+ "Remove all STOP" => sub {
+ if ( $_[0] eq "STOP" ) {
+ my $decoded = $_[2];
+ delete $decoded->{$_} foreach keys %$decoded;
+ }
+ },
+ "Start all STOP" => sub {
+ $_[0] = "GET" if $_[0] eq "STOP";
+ },
+ "Stop all GET" => sub {
+ $_[0] = "STOP" if $_[0] eq "GET";
+ },
+ "Stop inactive GET" => \&proc_stop_inactive_get,
+ "Remove all error" => sub {
+ foreach my $data ( values %{$_[2]} ) {
+ delete $data->[1]->{error};
+ }
+ },
+);
+
+my $process = undef;
+sub process
+{
+ my $name = shift;
+ if ( $processors{ $name } ) {
+ $process = $processors{ $name };
+ $update = 1;
+ }
+}
sub h2a($)
@@ -249,6 +299,10 @@
delete $decoded{ $uri } if $save->{delete};
}
+ if ( $process ) {
+ &$process( $cmd, $globals, \%decoded );
+ }
+
foreach my $uri ( keys %decoded ) {
if ( $all_uri{ $uri } ) {
warn "URI: $uri repeated, removing second one\n";
@@ -298,6 +352,7 @@
unlink $file;
rename $file . ".tmp", $file;
@added = ();
+ $process = undef;
foreach my $uri ( @used_save ) {
delete $save{ $uri };
}
More information about the pld-cvs-commit
mailing list