diff --git a/libtransmission/inout.c b/libtransmission/inout.c index 3f3513af1..89a97800a 100644 --- a/libtransmission/inout.c +++ b/libtransmission/inout.c @@ -60,6 +60,29 @@ static void findSlotForPiece( tr_io_t *, int ); #define readSlot(io,sl,b,s) readOrWriteSlot(io,sl,b,s,0) #define writeSlot(io,sl,b,s) readOrWriteSlot(io,sl,b,s,1) +/*********************************************************************** + * tr_ioLoadResume + *********************************************************************** + * Try to load the fast resume file + **********************************************************************/ +void tr_ioLoadResume( tr_torrent_t * tor ) +{ + tr_io_t * io; + tr_info_t * inf = &tor->info; + + io = malloc( sizeof( tr_io_t ) ); + io->tor = tor; + + io->pieceSlot = malloc( inf->pieceCount * sizeof( int ) ); + io->slotPiece = malloc( inf->pieceCount * sizeof( int ) ); + + fastResumeLoad( io ); + + free( io->pieceSlot ); + free( io->slotPiece ); + free( io ); +} + /*********************************************************************** * tr_ioInit *********************************************************************** diff --git a/libtransmission/inout.h b/libtransmission/inout.h index eac03b4e2..87a651d2c 100644 --- a/libtransmission/inout.h +++ b/libtransmission/inout.h @@ -27,6 +27,8 @@ typedef struct tr_io_s tr_io_t; +void tr_ioLoadResume ( tr_torrent_t * ); + tr_io_t * tr_ioInit ( tr_torrent_t * ); int tr_ioRead ( tr_io_t *, int, int, int, uint8_t * ); int tr_ioWrite ( tr_io_t *, int, int, int, uint8_t * ); diff --git a/libtransmission/transmission.c b/libtransmission/transmission.c index e46443402..bbe7cc7ac 100644 --- a/libtransmission/transmission.c +++ b/libtransmission/transmission.c @@ -317,6 +317,7 @@ int tr_torrentScrape( tr_torrent_t * tor, int * s, int * l ) void tr_torrentSetFolder( tr_torrent_t * tor, const char * path ) { tor->destination = strdup( path ); + tr_ioLoadResume( tor ); } char * tr_torrentGetFolder( tr_torrent_t * tor )