1
0
Fork 0
mirror of https://github.com/transmission/transmission synced 2025-03-09 21:54:09 +00:00

more banging on the fastresume-destination-directory thing. this permuation makes the fastresume destination a fallback, to be used only if the client didn't pass in a directory to tr_torrentInit*()

This commit is contained in:
Charles Kerr 2007-10-13 15:29:15 +00:00
parent 4104efbfbf
commit bd01906f0c
3 changed files with 8 additions and 12 deletions

View file

@ -320,10 +320,11 @@ tr_fastResumeSave( const tr_torrent * tor )
} }
static int static int
loadDestination( tr_torrent * tor, FILE * fp ) loadFallbackDestination( tr_torrent * tor, FILE * fp )
{ {
int pathlen = 0; int pathlen = 0;
char path[MAX_PATH_LENGTH]; char path[MAX_PATH_LENGTH];
const int haveDestination = tor->destination && *tor->destination;
for( ;; ) { for( ;; ) {
const int ch = fgetc( fp ); const int ch = fgetc( fp );
@ -336,7 +337,7 @@ loadDestination( tr_torrent * tor, FILE * fp )
path[pathlen] = '\0'; path[pathlen] = '\0';
if( pathlen ) { if( pathlen && !haveDestination ) {
tr_free( tor->destination ); tr_free( tor->destination );
tor->destination = tr_strdup( path ); tor->destination = tr_strdup( path );
} }
@ -513,7 +514,6 @@ fastResumeLoadOld( tr_torrent * tor,
static uint64_t static uint64_t
fastResumeLoadImpl ( tr_torrent * tor, fastResumeLoadImpl ( tr_torrent * tor,
const char * fallbackDestination,
tr_bitfield * uncheckedPieces ) tr_bitfield * uncheckedPieces )
{ {
char path[MAX_PATH_LENGTH]; char path[MAX_PATH_LENGTH];
@ -526,9 +526,6 @@ fastResumeLoadImpl ( tr_torrent * tor,
assert( tor != NULL ); assert( tor != NULL );
assert( uncheckedPieces != NULL ); assert( uncheckedPieces != NULL );
/* initialize the fallback values */
tor->destination = tr_strdup( fallbackDestination );
/* Open resume file */ /* Open resume file */
fastResumeFileName( path, sizeof path, tor, 1 ); fastResumeFileName( path, sizeof path, tor, 1 );
file = fopen( path, "rb" ); file = fopen( path, "rb" );
@ -621,7 +618,7 @@ fastResumeLoadImpl ( tr_torrent * tor,
case FR_ID_DESTINATION: case FR_ID_DESTINATION:
{ {
const int rret = loadDestination( tor, file ); const int rret = loadFallbackDestination( tor, file );
if( rret && ( feof(file) || ferror(file) ) ) if( rret && ( feof(file) || ferror(file) ) )
{ {
@ -751,10 +748,9 @@ fastResumeLoadImpl ( tr_torrent * tor,
uint64_t uint64_t
tr_fastResumeLoad( tr_torrent * tor, tr_fastResumeLoad( tr_torrent * tor,
const char * fallbackDestination,
tr_bitfield * uncheckedPieces ) tr_bitfield * uncheckedPieces )
{ {
const uint64_t ret = fastResumeLoadImpl( tor, fallbackDestination, uncheckedPieces ); const uint64_t ret = fastResumeLoadImpl( tor, uncheckedPieces );
if( ! ( ret & TR_FR_PROGRESS ) ) if( ! ( ret & TR_FR_PROGRESS ) )
tr_bitfieldAddRange( uncheckedPieces, 0, tor->info.pieceCount ); tr_bitfieldAddRange( uncheckedPieces, 0, tor->info.pieceCount );

View file

@ -44,7 +44,6 @@ enum
* Returns a bitwise-or'ed set of the data loaded from fastresume * Returns a bitwise-or'ed set of the data loaded from fastresume
*/ */
uint64_t tr_fastResumeLoad( tr_torrent * tor, uint64_t tr_fastResumeLoad( tr_torrent * tor,
const char * fallbackDestination,
struct tr_bitfield * uncheckedPieces ); struct tr_bitfield * uncheckedPieces );
#endif #endif

View file

@ -269,6 +269,8 @@ torrentRealInit( tr_handle * h,
tr_globalLock( h ); tr_globalLock( h );
tor->destination = tr_strdup( destination );
tor->handle = h; tor->handle = h;
tor->pexDisabled = 0; tor->pexDisabled = 0;
@ -339,8 +341,7 @@ torrentRealInit( tr_handle * h,
uncheckedPieces = tr_bitfieldNew( tor->info.pieceCount ); uncheckedPieces = tr_bitfieldNew( tor->info.pieceCount );
loaded = tr_fastResumeLoad( tor, destination, uncheckedPieces ); loaded = tr_fastResumeLoad( tor, uncheckedPieces );
assert( tor->destination != NULL ); assert( tor->destination != NULL );
/* the `paused' flag has highest precedence... /* the `paused' flag has highest precedence...