Changeset 7202


Ignore:
Timestamp:
Nov 30, 2008, 5:03:45 PM (12 years ago)
Author:
charles
Message:

(daemon) #1520: "transmission-remote -l" doesn't show infinite ratio properly

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/daemon/remote.c

    r7163 r7202  
    271271
    272272static const char * list_keys[] = {
    273     "downloadedEver", "eta",              "id",
     273    "eta",
     274    "id",
    274275    "leftUntilDone",
    275276    "name",
    276     "peersGettingFromUs", "peersSendingToUs",
     277    "peersGettingFromUs",
     278    "peersSendingToUs",
    277279    "rateDownload",
    278     "rateUpload", "sizeWhenDone", "status", "uploadedEver"
     280    "rateUpload",
     281    "sizeWhenDone",
     282    "status",
     283    "uploadRatio"
    279284};
    280285
     
    583588
    584589static char*
     590strlratio2( char * buf, double ratio, size_t buflen )
     591{
     592    if( (int)ratio == TR_RATIO_NA )
     593        tr_strlcpy( buf, "None", buflen );
     594    else if( (int)ratio == TR_RATIO_INF )
     595        tr_strlcpy( buf, "Inf", buflen );
     596    else if( ratio < 10.0 )
     597        tr_snprintf( buf, buflen, "%'.2f", ratio );
     598    else if( ratio < 100.0 )
     599        tr_snprintf( buf, buflen, "%'.1f", ratio );
     600    else
     601        tr_snprintf( buf, buflen, "%'.0f", ratio );
     602    return buf;
     603}
     604
     605static char*
    585606strlratio( char * buf,
    586607           double numerator,
     
    588609           size_t buflen )
    589610{
     611    double ratio;
     612
    590613    if( denominator )
    591     {
    592         const double ratio = numerator / denominator;
    593         if( ratio < 10.0 )
    594             tr_snprintf( buf, buflen, "%'.2f", ratio );
    595         else if( ratio < 100.0 )
    596             tr_snprintf( buf, buflen, "%'.1f", ratio );
    597         else
    598             tr_snprintf( buf, buflen, "%'.0f", ratio );
    599     }
     614        ratio = numerator / denominator;
    600615    else if( numerator )
    601         tr_strlcpy( buf, "Inf", buflen );
     616        ratio = TR_RATIO_INF;
    602617    else
    603         tr_strlcpy( buf, "None", buflen );
    604     return buf;
     618        ratio = TR_RATIO_NA;
     619
     620    return strlratio2( buf, ratio, buflen );
    605621}
    606622
     
    10111027        for( i = 0, n = tr_bencListSize( list ); i < n; ++i )
    10121028        {
    1013             int64_t     id, eta, status, up, down;
    1014             int64_t     sizeWhenDone, leftUntilDone;
    1015             int64_t     upEver, downEver;
    1016             const char *name;
     1029            int64_t      id, eta, status, up, down;
     1030            int64_t      sizeWhenDone, leftUntilDone;
     1031            double       ratio;
     1032            const char * name;
    10171033            tr_benc *   d = tr_bencListChild( list, i );
    1018             if( tr_bencDictFindInt( d, "downloadedEver", &downEver )
    1019               && tr_bencDictFindInt( d, "eta", &eta )
     1034            if( tr_bencDictFindInt( d, "eta", &eta )
    10201035              && tr_bencDictFindInt( d, "id", &id )
    10211036              && tr_bencDictFindInt( d, "leftUntilDone", &leftUntilDone )
     
    10251040              && tr_bencDictFindInt( d, "sizeWhenDone", &sizeWhenDone )
    10261041              && tr_bencDictFindInt( d, "status", &status )
    1027               && tr_bencDictFindInt( d, "uploadedEver", &upEver ) )
     1042              && tr_bencDictFindDouble( d, "uploadRatio", &ratio ) )
    10281043            {
    10291044                char etaStr[16];
     
    10431058                    up / 1024.0,
    10441059                    down / 1024.0,
    1045                     strlratio( ratioStr, downEver, upEver, sizeof( ratioStr ) ),
     1060                    strlratio2( ratioStr, ratio, sizeof( ratioStr ) ),
    10461061                    getStatusString( d, statusStr, sizeof( statusStr ) ),
    10471062                    name );
Note: See TracChangeset for help on using the changeset viewer.