(1) remote: fix bug with specifying torrent id for file list.

(2) very minor cleanup
This commit is contained in:
Charles Kerr 2008-07-10 14:20:36 +00:00
parent 7ea35b8afa
commit 1b8435aa02
3 changed files with 50 additions and 65 deletions

View File

@ -177,10 +177,10 @@ readargs( int argc, const char ** argv )
break;
case 'f': tr_bencDictAddStr( &top, "method", "torrent-get" );
tr_bencDictAddInt( &top, "tag", TAG_FILES );
tr_rpc_parse_list_str( tr_bencDictAdd( args, "ids" ), optarg, strlen(optarg) );
fields = TR_RPC_TORRENT_FIELD_ID
| TR_RPC_TORRENT_FIELD_FILES
| TR_RPC_TORRENT_FIELD_PRIORITIES;
addIdArg( args, id );
fields = TR_RPC_TORRENT_ID
| TR_RPC_TORRENT_FILES
| TR_RPC_TORRENT_PRIORITIES;
tr_bencDictAddInt( args, "fields", fields );
break;
case 'g': debug = 1;
@ -189,23 +189,23 @@ readargs( int argc, const char ** argv )
case 'i': tr_bencDictAddStr( &top, "method", "torrent-get" );
tr_bencDictAddInt( &top, "tag", TAG_DETAILS );
addIdArg( args, id );
fields = TR_RPC_TORRENT_FIELD_ACTIVITY
| TR_RPC_TORRENT_FIELD_ANNOUNCE
| TR_RPC_TORRENT_FIELD_ERROR
| TR_RPC_TORRENT_FIELD_HISTORY
| TR_RPC_TORRENT_FIELD_ID
| TR_RPC_TORRENT_FIELD_INFO
| TR_RPC_TORRENT_FIELD_SCRAPE
| TR_RPC_TORRENT_FIELD_SIZE
| TR_RPC_TORRENT_FIELD_TRACKER_STATS;
fields = TR_RPC_TORRENT_ACTIVITY
| TR_RPC_TORRENT_ANNOUNCE
| TR_RPC_TORRENT_ERROR
| TR_RPC_TORRENT_HISTORY
| TR_RPC_TORRENT_ID
| TR_RPC_TORRENT_INFO
| TR_RPC_TORRENT_SCRAPE
| TR_RPC_TORRENT_SIZE
| TR_RPC_TORRENT_TRACKER_STATS;
tr_bencDictAddInt( args, "fields", fields );
break;
case 'l': tr_bencDictAddStr( &top, "method", "torrent-get" );
tr_bencDictAddInt( &top, "tag", TAG_LIST );
fields = TR_RPC_TORRENT_FIELD_ID
| TR_RPC_TORRENT_FIELD_ACTIVITY
| TR_RPC_TORRENT_FIELD_HISTORY
| TR_RPC_TORRENT_FIELD_SIZE;
fields = TR_RPC_TORRENT_ID
| TR_RPC_TORRENT_ACTIVITY
| TR_RPC_TORRENT_HISTORY
| TR_RPC_TORRENT_SIZE;
tr_bencDictAddInt( args, "fields", fields );
break;
case 'm': tr_bencDictAddStr( &top, "method", "session-set" );
@ -243,7 +243,8 @@ readargs( int argc, const char ** argv )
addIdArg( args, id );
break;
case 'w': tr_bencDictAddStr( &top, "method", "session-set" );
tr_bencDictAddStr( args, "download-dir", absolutify(buf,sizeof(buf),optarg) );
tr_bencDictAddStr( args, "download-dir",
absolutify(buf,sizeof(buf),optarg) );
break;
case 'x': tr_bencDictAddStr( &top, "method", "session-set" );
tr_bencDictAddInt( args, "pex-allowed", 1 );

View File

@ -49,10 +49,6 @@ getTorrents( tr_handle * handle, tr_benc * args, int * setmeCount )
tr_torrent ** torrents = NULL;
tr_benc * ids;
/***
**** Build the array of torrents
***/
if( tr_bencDictFindList( args, "ids", &ids ) )
{
int i;
@ -91,10 +87,6 @@ getTorrents( tr_handle * handle, tr_benc * args, int * setmeCount )
torrents[torrentCount++] = tor;
}
/***
**** return the results
***/
*setmeCount = torrentCount;
return torrents;
}
@ -206,7 +198,7 @@ addInfo( const tr_torrent * tor, tr_benc * d, uint64_t fields )
tr_bencInitDict( d, 64 );
if( fields & TR_RPC_TORRENT_FIELD_ACTIVITY ) {
if( fields & TR_RPC_TORRENT_ACTIVITY ) {
tr_bencDictAddInt( d, "desiredAvailable", st->desiredAvailable );
tr_bencDictAddInt( d, "eta", st->eta );
tr_bencDictAddInt( d, "peersConnected", st->peersConnected );
@ -220,7 +212,7 @@ addInfo( const tr_torrent * tor, tr_benc * d, uint64_t fields )
tr_bencDictAddInt( d, "webseedsSendingToUs", st->webseedsSendingToUs );
}
if( fields & TR_RPC_TORRENT_FIELD_ANNOUNCE ) {
if( fields & TR_RPC_TORRENT_ANNOUNCE ) {
tr_bencDictAddStr( d, "announceResponse", st->announceResponse );
tr_bencDictAddStr( d, "announceURL", st->announceURL );
tr_bencDictAddInt( d, "lastAnnounceTime", st->lastAnnounceTime );
@ -228,15 +220,15 @@ addInfo( const tr_torrent * tor, tr_benc * d, uint64_t fields )
tr_bencDictAddInt( d, "nextAnnounceTime", st->nextAnnounceTime );
}
if( fields & TR_RPC_TORRENT_FIELD_ERROR ) {
if( fields & TR_RPC_TORRENT_ERROR ) {
tr_bencDictAddInt( d, "error", st->error );
tr_bencDictAddStr( d, "errorString", st->errorString );
}
if( fields & TR_RPC_TORRENT_FIELD_FILES )
if( fields & TR_RPC_TORRENT_FILES )
addFiles( inf, tr_bencDictAddList( d, "files", inf->fileCount ) );
if( fields & TR_RPC_TORRENT_FIELD_HISTORY ) {
if( fields & TR_RPC_TORRENT_HISTORY ) {
tr_bencDictAddInt( d, "activityDate", st->activityDate );
tr_bencDictAddInt( d, "addedDate", st->addedDate );
tr_bencDictAddInt( d, "corruptEver", st->corruptEver );
@ -246,13 +238,13 @@ addInfo( const tr_torrent * tor, tr_benc * d, uint64_t fields )
tr_bencDictAddInt( d, "uploadedEver", st->uploadedEver );
}
if( fields & TR_RPC_TORRENT_FIELD_ID ) {
if( fields & TR_RPC_TORRENT_ID ) {
tr_bencDictAddInt( d, "id", st->id );
tr_bencDictAddStr( d, "hashString", tor->info.hashString );
tr_bencDictAddStr( d, "name", inf->name );
}
if( fields & TR_RPC_TORRENT_FIELD_INFO ) {
if( fields & TR_RPC_TORRENT_INFO ) {
tr_bencDictAddStr( d, "comment", inf->comment ? inf->comment : "" );
tr_bencDictAddStr( d, "creator", inf->creator ? inf->creator : "" );
tr_bencDictAddInt( d, "dateCreated", inf->dateCreated );
@ -261,7 +253,7 @@ addInfo( const tr_torrent * tor, tr_benc * d, uint64_t fields )
tr_bencDictAddInt( d, "pieceSize", inf->pieceSize );
}
if( fields & TR_RPC_TORRENT_FIELD_LIMITS ) {
if( fields & TR_RPC_TORRENT_LIMITS ) {
tr_bencDictAddInt( d, "downloadLimit", tr_torrentGetSpeedLimit( tor, TR_DOWN ) );
tr_bencDictAddInt( d, "downloadLimitMode", tr_torrentGetSpeedMode( tor, TR_DOWN ) );
tr_bencDictAddInt( d, "maxConnectedPeers", tr_torrentGetPeerLimit( tor ) );
@ -269,7 +261,7 @@ addInfo( const tr_torrent * tor, tr_benc * d, uint64_t fields )
tr_bencDictAddInt( d, "uploadLimitMode", tr_torrentGetSpeedMode( tor, TR_UP ) );
}
if( fields & TR_RPC_TORRENT_FIELD_PEERS ) {
if( fields & TR_RPC_TORRENT_PEERS ) {
const int * f = st->peersFrom;
tr_bencDictAddInt( d, "fromCache", f[TR_PEER_FROM_CACHE] );
tr_bencDictAddInt( d, "fromIncoming", f[TR_PEER_FROM_INCOMING] );
@ -277,7 +269,7 @@ addInfo( const tr_torrent * tor, tr_benc * d, uint64_t fields )
tr_bencDictAddInt( d, "fromTracker", f[TR_PEER_FROM_TRACKER] );
}
if( fields & TR_RPC_TORRENT_FIELD_PRIORITIES ) {
if( fields & TR_RPC_TORRENT_PRIORITIES ) {
tr_file_index_t i;
tr_benc * p = tr_bencDictAddList( d, "priorities", inf->fileCount );
tr_benc * w = tr_bencDictAddList( d, "wanted", inf->fileCount );
@ -287,14 +279,14 @@ addInfo( const tr_torrent * tor, tr_benc * d, uint64_t fields )
}
}
if( fields & TR_RPC_TORRENT_FIELD_SCRAPE ) {
if( fields & TR_RPC_TORRENT_SCRAPE ) {
tr_bencDictAddInt( d, "lastScrapeTime", st->lastScrapeTime );
tr_bencDictAddInt( d, "nextScrapeTime", st->nextScrapeTime );
tr_bencDictAddStr( d, "scrapeResponse", st->scrapeResponse );
tr_bencDictAddStr( d, "scrapeURL", st->scrapeURL );
}
if( fields & TR_RPC_TORRENT_FIELD_SIZE ) {
if( fields & TR_RPC_TORRENT_SIZE ) {
tr_bencDictAddInt( d, "haveUnchecked", st->haveUnchecked );
tr_bencDictAddInt( d, "haveValid", st->haveValid );
tr_bencDictAddInt( d, "leftUntilDone", st->leftUntilDone );
@ -302,17 +294,17 @@ addInfo( const tr_torrent * tor, tr_benc * d, uint64_t fields )
tr_bencDictAddInt( d, "totalSize", inf->totalSize );
}
if( fields & TR_RPC_TORRENT_FIELD_TRACKER_STATS ) {
if( fields & TR_RPC_TORRENT_TRACKER_STATS ) {
tr_bencDictAddInt( d, "leechers", st->leechers );
tr_bencDictAddInt( d, "peersKnown", st->peersKnown );
tr_bencDictAddInt( d, "seeders", st->seeders );
tr_bencDictAddInt( d, "timesCompleted", st->timesCompleted );
}
if( fields & TR_RPC_TORRENT_FIELD_TRACKERS )
if( fields & TR_RPC_TORRENT_TRACKERS )
addTrackers( inf, tr_bencDictAddList( d, "trackers", inf->trackerCount ) );
if( fields & TR_RPC_TORRENT_FIELD_WEBSEEDS )
if( fields & TR_RPC_TORRENT_WEBSEEDS )
addWebseeds( inf, tr_bencDictAddList( d, "webseeds", inf->trackerCount ) );
}
@ -464,7 +456,7 @@ torrentAdd( tr_handle * h, tr_benc * args_in, tr_benc * args_out )
tr_ctorFree( ctor );
if( tor ) {
addInfo( tor, tr_bencDictAdd( args_out, "torrent-added" ), TR_RPC_TORRENT_FIELD_ID );
addInfo( tor, tr_bencDictAdd( args_out, "torrent-added" ), TR_RPC_TORRENT_ID );
notify( h, TR_RPC_TORRENT_ADDED, tor );
} else if( err == TR_EDUPLICATE ) {
return "duplicate torrent";
@ -727,14 +719,6 @@ tr_rpc_request_exec_uri( struct tr_handle * handle,
tr_bencInitDict( &top, 3 );
args = tr_bencDictAddDict( &top, "arguments", 0 );
/* munge the URI into a usable form.
* we have very loose typing on this to make the URIs as simple as possible:
* - anything not a 'tag' or 'method' is automatically in 'arguments'
* - values that are all-digits are numbers
* - values that are all-digits or commas are number lists
* - all other values are strings
*/
pch = strchr( request, '?' );
if( !pch ) pch = request;
while( pch )

View File

@ -19,21 +19,21 @@
enum
{
TR_RPC_TORRENT_FIELD_ACTIVITY = (1<<0),
TR_RPC_TORRENT_FIELD_ANNOUNCE = (1<<1),
TR_RPC_TORRENT_FIELD_ERROR = (1<<2),
TR_RPC_TORRENT_FIELD_FILES = (1<<3),
TR_RPC_TORRENT_FIELD_HISTORY = (1<<4),
TR_RPC_TORRENT_FIELD_ID = (1<<5),
TR_RPC_TORRENT_FIELD_INFO = (1<<6),
TR_RPC_TORRENT_FIELD_LIMITS = (1<<7),
TR_RPC_TORRENT_FIELD_PEERS = (1<<8),
TR_RPC_TORRENT_FIELD_PRIORITIES = (1<<9),
TR_RPC_TORRENT_FIELD_SCRAPE = (1<<10),
TR_RPC_TORRENT_FIELD_SIZE = (1<<11),
TR_RPC_TORRENT_FIELD_TRACKER_STATS = (1<<12),
TR_RPC_TORRENT_FIELD_TRACKERS = (1<<13),
TR_RPC_TORRENT_FIELD_WEBSEEDS = (1<<14)
TR_RPC_TORRENT_ACTIVITY = (1<<0),
TR_RPC_TORRENT_ANNOUNCE = (1<<1),
TR_RPC_TORRENT_ERROR = (1<<2),
TR_RPC_TORRENT_FILES = (1<<3),
TR_RPC_TORRENT_HISTORY = (1<<4),
TR_RPC_TORRENT_ID = (1<<5),
TR_RPC_TORRENT_INFO = (1<<6),
TR_RPC_TORRENT_LIMITS = (1<<7),
TR_RPC_TORRENT_PEERS = (1<<8),
TR_RPC_TORRENT_PRIORITIES = (1<<9),
TR_RPC_TORRENT_SCRAPE = (1<<10),
TR_RPC_TORRENT_SIZE = (1<<11),
TR_RPC_TORRENT_TRACKER_STATS = (1<<12),
TR_RPC_TORRENT_TRACKERS = (1<<13),
TR_RPC_TORRENT_WEBSEEDS = (1<<14)
};
struct tr_benc;