Changeset 6240


Ignore:
Timestamp:
Jun 21, 2008, 3:49:18 PM (13 years ago)
Author:
charles
Message:

(daemon) #1046: "transmission-remote -l" should display percentage done and ETA

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/daemon/remote.c

    r6238 r6240  
    198198                      tr_bencDictAddInt( &top, "tag", TAG_LIST );
    199199                      fields = TR_RPC_TORRENT_FIELD_ID
    200                              | TR_RPC_TORRENT_FIELD_ACTIVITY;
     200                             | TR_RPC_TORRENT_FIELD_ACTIVITY
     201                             | TR_RPC_TORRENT_FIELD_SIZE;
    201202                      tr_bencDictAddInt( args, "fields", fields );
    202203                      break;
     
    273274}
    274275
     276static void
     277etaToString( char * buf, size_t buflen, int64_t eta )
     278{
     279         if( eta < 0 )           snprintf( buf, buflen, "Unknown" );
     280    else if( eta < 60 )          snprintf( buf, buflen, "%"PRId64"sec", eta );
     281    else if( eta < (60*60) )     snprintf( buf, buflen, "%"PRId64" min", eta/60 );
     282    else if( eta < (60*60*24) )  snprintf( buf, buflen, "%"PRId64" hrs", eta/(60*60) );
     283    else                         snprintf( buf, buflen, "%"PRId64" days", eta/(60*60*24) );
     284}
     285
    275286static const char*
    276287torrentStatusToString( int i )
     
    314325        {
    315326            int i, n;
     327            printf( "%-3s  %-4s  %-8s  %-5s  %-5s  %-5s  %-11s  %s\n",
     328                    "ID", "Done", "ETA", "Up", "Down", "Ratio", "Status", "Name" );
    316329            for( i=0, n=tr_bencListSize( list ); i<n; ++i )
    317330            {
    318                 int64_t id, status, up, down;
     331                int64_t id, eta, status, up, down, sizeWhenDone, leftUntilDone;
    319332                const char *name, *ratiostr;
    320333                tr_benc * d = tr_bencListChild( list, i );
    321334                if(    tr_bencDictFindInt( d, "id", &id )
    322335                    && tr_bencDictFindStr( d, "name", &name )
     336                    && tr_bencDictFindInt( d, "eta", &eta )
     337                    && tr_bencDictFindInt( d, "eta", &eta )
     338                    && tr_bencDictFindInt( d, "leftUntilDone", &leftUntilDone )
     339                    && tr_bencDictFindInt( d, "sizeWhenDone", &sizeWhenDone )
    323340                    && tr_bencDictFindInt( d, "rateDownload", &down )
    324341                    && tr_bencDictFindInt( d, "rateUpload", &up )
     
    326343                    && tr_bencDictFindInt( d, "status", &status ) )
    327344                {
    328                     printf( "%4d.  Up: %5.1f  Down: %5.1f  Ratio: %4.1f  %-15s  %s\n",
     345                    char etaStr[16];
     346                    if( leftUntilDone )
     347                        etaToString( etaStr, sizeof( etaStr ), eta );
     348                    else
     349                        snprintf( etaStr, sizeof( etaStr ), "Done" );
     350                    printf( "%3d  %3d%%  %-8s  %5.1f  %5.1f  %5.1f  %-11s  %s\n",
    329351                            (int)id,
     352                            (int)(100.0*(sizeWhenDone-leftUntilDone)/sizeWhenDone),
     353                            etaStr,
    330354                            up / 1024.0,
    331355                            down / 1024.0,
Note: See TracChangeset for help on using the changeset viewer.