{
int j=0, jn=tr_bencListSize(files);
printf( "%s (%d files):\n", name, jn );
- printf("%3s %8s %3s %9s %s\n", "#", "Priority", "Get", "Size", "Name" );
+ printf("%3s %4s %8s %3s %9s %s\n", "#", "Done", "Priority", "Get", "Size", "Name" );
for( j=0, jn=tr_bencListSize( files ); j<jn; ++j )
{
+ int64_t have;
int64_t length;
int64_t priority;
int64_t wanted;
tr_benc * file = tr_bencListChild( files, j );
if( tr_bencDictFindInt( file, "length", &length ) &&
tr_bencDictFindStr( file, "name", &filename ) &&
+ tr_bencDictFindInt( file, "bytesCompleted", &have ) &&
tr_bencGetInt( tr_bencListChild( priorities, j ), &priority ) &&
tr_bencGetInt( tr_bencListChild( wanteds, j ), &wanted ) )
{
char sizestr[64];
+ double percent = (double)have / length;
strlsize( sizestr, length, sizeof( sizestr ) );
const char * pristr;
switch( priority ) {
case TR_PRI_HIGH: pristr = "High"; break;
default: pristr = "Normal"; break;
}
- printf( "%3d: %-8s %-3s %9s %s\n", (j+1), pristr, (wanted?"Yes":"No"), sizestr, filename );
+ printf( "%3d: %3.0f%% %-8s %-3s %9s %s\n", (j+1), percent, pristr, (wanted?"Yes":"No"), sizestr, filename );
}
}
}
+----------+--------------------------------------
| files is an array of objects that contain:
+----------+------------------------+-------------
+ | number | bytesCompleted | tr_torrent
| number | length | tr_info
| string | name | tr_info
-------------------+----------+------------------------+-------------
***/
static void
-addFiles( const tr_info * info, tr_benc * files )
+addFiles( const tr_torrent * tor, tr_benc * list )
{
tr_file_index_t i;
+ tr_file_index_t n;
+ const tr_info * info = tr_torrentInfo( tor );
+ tr_file_stat * files = tr_torrentFiles( tor, &n );
+
for( i=0; i<info->fileCount; ++i )
{
const tr_file * file = &info->files[i];
- tr_benc * d = tr_bencListAddDict( files, 2 );
+ tr_benc * d = tr_bencListAddDict( list, 3 );
+ tr_bencDictAddInt( d, "bytesCompleted", files[i].bytesCompleted );
tr_bencDictAddInt( d, "length", file->length );
tr_bencDictAddStr( d, "name", file->name );
}
+
+ tr_torrentFilesFree( files, n );
}
static void
}
if( fields & TR_RPC_TORRENT_FILES )
- addFiles( inf, tr_bencDictAddList( d, "files", inf->fileCount ) );
+ addFiles( tor, tr_bencDictAddList( d, "files", inf->fileCount ) );
if( fields & TR_RPC_TORRENT_HISTORY ) {
tr_bencDictAddInt( d, "activityDate", st->activityDate );