From e581d5228e449b1dc7a3c5db0825342c488da0b4 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Wed, 13 Feb 2008 02:24:12 +0000 Subject: [PATCH] add tr_ctor{Set,Get}DeleteSource() --- libtransmission/fastresume.c | 2 +- libtransmission/torrent-ctor.c | 76 +++++++++++++++++++++++++++------- libtransmission/transmission.h | 12 +++++- 3 files changed, 73 insertions(+), 17 deletions(-) diff --git a/libtransmission/fastresume.c b/libtransmission/fastresume.c index 8ada734d9..c7fb31865 100644 --- a/libtransmission/fastresume.c +++ b/libtransmission/fastresume.c @@ -661,7 +661,7 @@ setFromCtor( tr_torrent * tor, uint64_t fields, const tr_ctor * ctor, int mode ) if( fields & TR_FR_RUN ) { uint8_t isPaused; - if( !tr_ctorGetIsPaused( ctor, mode, &isPaused ) ) { + if( !tr_ctorGetPaused( ctor, mode, &isPaused ) ) { tor->isRunning = !isPaused; ret |= TR_FR_RUN; } diff --git a/libtransmission/torrent-ctor.c b/libtransmission/torrent-ctor.c index e52809a49..8915fd506 100644 --- a/libtransmission/torrent-ctor.c +++ b/libtransmission/torrent-ctor.c @@ -34,9 +34,12 @@ struct tr_ctor { const tr_handle * handle; unsigned int saveInOurTorrentsDir : 1; + unsigned int doDelete : 1; unsigned int isSet_metainfo : 1; + unsigned int isSet_delete : 1; benc_val_t metainfo; + char * sourceFile; struct optional_args optionalArgs[2]; }; @@ -45,6 +48,13 @@ struct tr_ctor **** ***/ +static void +setSourceFile( tr_ctor * ctor, const char * sourceFile ) +{ + tr_free( ctor->sourceFile ); + ctor->sourceFile = tr_strdup( sourceFile ); +} + static void clearMetainfo( tr_ctor * ctor ) { @@ -52,6 +62,8 @@ clearMetainfo( tr_ctor * ctor ) ctor->isSet_metainfo = 0; tr_bencFree( &ctor->metainfo ); } + + setSourceFile( ctor, NULL ); } int @@ -66,6 +78,12 @@ tr_ctorSetMetainfo( tr_ctor * ctor, return err; } +const char* +tr_ctorGetSourceFile( const tr_ctor * ctor ) +{ + return ctor->sourceFile; +} + int tr_ctorSetMetainfoFromFile( tr_ctor * ctor, const char * filename ) @@ -82,6 +100,8 @@ tr_ctorSetMetainfoFromFile( tr_ctor * ctor, err = 1; } + setSourceFile( ctor, filename ); + /* if no `name' field was set, then set it from the filename */ if( ctor->isSet_metainfo ) { benc_val_t * info = tr_bencDictFindType( &ctor->metainfo, "info", TYPE_DICT ); @@ -127,6 +147,32 @@ tr_ctorSetMetainfoFromHash( tr_ctor * ctor, **** ***/ +void +tr_ctorSetDeleteSource( tr_ctor * ctor, + uint8_t deleteSource ) +{ + ctor->doDelete = deleteSource ? 1 : 0; + ctor->isSet_delete = 1; +} + +int +tr_ctorGetDeleteSource( const tr_ctor * ctor, + uint8_t * setme ) +{ + int err = 0; + + if( !ctor->isSet_delete ) + err = 1; + else if( setme ) + *setme = ctor->doDelete ? 1 : 0; + + return err; +} + +/*** +**** +***/ + void tr_ctorSetSave( tr_ctor * ctor, int saveInOurTorrentsDir ) @@ -178,26 +224,26 @@ tr_ctorGetMaxConnectedPeers( const tr_ctor * ctor, int err = 0; const struct optional_args * args = &ctor->optionalArgs[mode]; - if( args->isSet_connected ) - *setmeCount = args->maxConnectedPeers; - else + if( !args->isSet_connected ) err = 1; + else if( setmeCount ) + *setmeCount = args->maxConnectedPeers; return err; } int -tr_ctorGetIsPaused( const tr_ctor * ctor, - tr_ctorMode mode, - uint8_t * setmeIsPaused ) +tr_ctorGetPaused( const tr_ctor * ctor, + tr_ctorMode mode, + uint8_t * setmeIsPaused ) { int err = 0; const struct optional_args * args = &ctor->optionalArgs[mode]; - if( args->isSet_paused ) - *setmeIsPaused = args->isPaused ? 1 : 0; - else + if( !args->isSet_paused ) err = 1; + else if( setmeIsPaused ) + *setmeIsPaused = args->isPaused ? 1 : 0; return err; } @@ -210,10 +256,10 @@ tr_ctorGetDestination( const tr_ctor * ctor, int err = 0; const struct optional_args * args = &ctor->optionalArgs[mode]; - if( args->isSet_destination ) - *setmeDestination = args->destination; - else + if( !args->isSet_destination ) err = 1; + else if( setmeDestination ) + *setmeDestination = args->destination; return err; } @@ -224,10 +270,10 @@ tr_ctorGetMetainfo( const tr_ctor * ctor, { int err = 0; - if( ctor->isSet_metainfo ) - *setme = &ctor->metainfo; - else + if( !ctor->isSet_metainfo ) err = 1; + else if( setme ) + *setme = &ctor->metainfo; return err; } diff --git a/libtransmission/transmission.h b/libtransmission/transmission.h index 819b51d50..686a26527 100644 --- a/libtransmission/transmission.h +++ b/libtransmission/transmission.h @@ -354,6 +354,9 @@ void tr_ctorFree ( tr_ctor * ctor ); void tr_ctorSetSave ( tr_ctor * ctor, int saveMetadataInOurTorrentsDir ); +void tr_ctorSetDeleteSource ( tr_ctor * ctor, + uint8_t doDelete ); + int tr_ctorSetMetainfo ( tr_ctor * ctor, const uint8_t * metainfo, size_t len ); @@ -380,7 +383,7 @@ int tr_ctorGetMaxConnectedPeers ( const tr_ctor * ctor, tr_ctorMode mode, uint16_t * setmeCount ); -int tr_ctorGetIsPaused ( const tr_ctor * ctor, +int tr_ctorGetPaused ( const tr_ctor * ctor, tr_ctorMode mode, uint8_t * setmeIsPaused ); @@ -392,6 +395,13 @@ int tr_ctorGetMetainfo ( const tr_ctor * ctor, const struct benc_val_s ** setme ); int tr_ctorGetSave ( const tr_ctor * ctor ); + +int tr_ctorGetDeleteSource ( const tr_ctor * ctor, + uint8_t * setmeDoDelete ); + +/* returns NULL if tr_ctorSetMetainfoFromFile() wasn't used */ +const char* tr_ctorGetSourceFile ( const tr_ctor * ctor ); + typedef struct tr_info tr_info;