diff --git a/daemon/remote.c b/daemon/remote.c index ce4883eb1..41a72d289 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -442,6 +442,7 @@ readargs( int argc, case 'z': tr_bencDictAddStr( &top, "method", "torrent-get" ); tr_bencDictAddInt( &top, "tag", TAG_PEERS ); + addIdArg( args, id ); fields = tr_bencDictAddList( args, "fields", 1 ); tr_bencListAddStr( fields, "peers" ); break; @@ -929,32 +930,48 @@ printFileList( tr_benc * top ) } static void -printPeerList( tr_benc * top ) +printPeersImpl( tr_benc * peers ) { - tr_benc *args, *list; + int i, n; + printf( "%-20s %-12s %-6s %-6s %s\n", + "Address", "Flags", "Down", "Up", "Client" ); + for( i = 0, n = tr_bencListSize( peers ); i < n; ++i ) + { + const char * address, * client, * flagstr; + int64_t rateToClient, rateToPeer; + tr_benc * d = tr_bencListChild( peers, i ); + if( tr_bencDictFindStr( d, "address", &address ) + && tr_bencDictFindStr( d, "clientName", &client ) + && tr_bencDictFindStr( d, "flagStr", &flagstr ) + && tr_bencDictFindInt( d, "rateToClient", &rateToClient ) + && tr_bencDictFindInt( d, "rateToPeer", &rateToPeer ) ) + { + printf( "%-20s %-12s %6.1f %6.1f %s\n", + address, flagstr, + rateToClient / 1024.0, + rateToPeer / 1024.0, + client ); + } + } +} - if( ( tr_bencDictFindDict( top, "arguments", &args ) ) - && ( tr_bencDictFindList( args, "peers", &list ) ) ) +static void +printPeers( tr_benc * top ) +{ + tr_benc *args, *torrents; + + if( tr_bencDictFindDict( top, "arguments", &args ) + && tr_bencDictFindList( args, "torrents", &torrents ) ) { int i, n; - printf( "%-20s %-12s %-5s %5s %s\n", - "Address", "Flags", "Down", "Up", "Client" ); - for( i = 0, n = tr_bencListSize( list ); i < n; ++i ) + for( i=0, n=tr_bencListSize( torrents ); i