SVN: toys/rsget.pl/RSGet/Curl.pm
sparky
sparky at pld-linux.org
Sat Jul 3 23:03:19 CEST 2010
Author: sparky
Date: Sat Jul 3 23:03:18 2010
New Revision: 11629
Modified:
toys/rsget.pl/RSGet/Curl.pm
Log:
- support ftp download resuming
Modified: toys/rsget.pl/RSGet/Curl.pm
==============================================================================
--- toys/rsget.pl/RSGet/Curl.pm (original)
+++ toys/rsget.pl/RSGet/Curl.pm Sat Jul 3 23:03:18 2010
@@ -188,6 +188,7 @@
$curl->setopt( CURLOPT_RANGE, "$got-" );
$get_obj->log( "trying to continue at $got\n" ) if verbose( 4 );
+ $supercurl->{continue_at} = $got;
$supercurl->{fname} = $fn;
$supercurl->{filepath} = $fp
}
@@ -333,13 +334,20 @@
$get_obj->log( "WARNING: Name mismatch, shoud be '$fname'" );
}
$fname = $supercurl->{fname};
+
+ my $start;
if ( $supercurl->{head} =~ m{^Content-Range:\s*bytes\s*(\d+)-(\d+)(/(\d+))?\s*$}im ) {
- my ( $start, $stop ) = ( +$1, +$2 );
+ $start = +$1;
$supercurl->{size_total} = +$4 if $3;
$get_obj->log( "ERROR: Size mismatch: $supercurl->{fsize} != $supercurl->{size_total}" )
if $supercurl->{fsize} != $supercurl->{size_total};
+ } elsif ( $supercurl->{head} =~ m{^350\s}m ) {
+ $start = $supercurl->{continue_at};
+ $supercurl->{size_total} = $start + $curl->getinfo( CURLINFO_CONTENT_LENGTH_DOWNLOAD );
+ }
+ if ( defined $start ) {
my $fp = $supercurl->{filepath};
my $old = file_backup( $fp, "continue" );
my $old_msg = "";
More information about the pld-cvs-commit
mailing list