Changeset 7201


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

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/1.4x/daemon/remote.c

    r7164 r7201  
    252252
    253253static const char * list_keys[] = {
    254     "downloadedEver", "eta",              "id",
     254    "eta",
     255    "id",
    255256    "leftUntilDone",
    256257    "name",
    257     "peersGettingFromUs", "peersSendingToUs",
     258    "peersGettingFromUs",
     259    "peersSendingToUs",
    258260    "rateDownload",
    259     "rateUpload", "sizeWhenDone", "status", "uploadedEver"
     261    "rateUpload",
     262    "sizeWhenDone",
     263    "status",
     264    "uploadRatio"
    260265};
    261266
     
    564569
    565570static char*
     571strlratio2( char * buf, double ratio, size_t buflen )
     572{
     573    if( (int)ratio == TR_RATIO_NA )
     574        tr_strlcpy( buf, "None", buflen );
     575    else if( (int)ratio == TR_RATIO_INF )
     576        tr_strlcpy( buf, "Inf", buflen );
     577    else if( ratio < 10.0 )
     578        tr_snprintf( buf, buflen, "%'.2f", ratio );
     579    else if( ratio < 100.0 )
     580        tr_snprintf( buf, buflen, "%'.1f", ratio );
     581    else
     582        tr_snprintf( buf, buflen, "%'.0f", ratio );
     583    return buf;
     584}
     585
     586static char*
    566587strlratio( char * buf,
    567588           double numerator,
     
    569590           size_t buflen )
    570591{
     592    double ratio;
     593
    571594    if( denominator )
    572     {
    573         const double ratio = numerator / denominator;
    574         if( ratio < 10.0 )
    575             tr_snprintf( buf, buflen, "%'.2f", ratio );
    576         else if( ratio < 100.0 )
    577             tr_snprintf( buf, buflen, "%'.1f", ratio );
    578         else
    579             tr_snprintf( buf, buflen, "%'.0f", ratio );
    580     }
     595        ratio = numerator / denominator;
    581596    else if( numerator )
    582         tr_strlcpy( buf, "Inf", buflen );
     597        ratio = TR_RATIO_INF;
    583598    else
    584         tr_strlcpy( buf, "None", buflen );
    585     return buf;
     599        ratio = TR_RATIO_NA;
     600
     601    return strlratio2( buf, ratio, buflen );
    586602}
    587603
     
    9921008        for( i = 0, n = tr_bencListSize( list ); i < n; ++i )
    9931009        {
    994             int64_t     id, eta, status, up, down;
    995             int64_t     sizeWhenDone, leftUntilDone;
    996             int64_t     upEver, downEver;
    997             const char *name;
     1010            int64_t      id, eta, status, up, down;
     1011            int64_t      sizeWhenDone, leftUntilDone;
     1012            double       ratio;
     1013            const char * name;
    9981014            tr_benc *   d = tr_bencListChild( list, i );
    999             if( tr_bencDictFindInt( d, "downloadedEver", &downEver )
    1000               && tr_bencDictFindInt( d, "eta", &eta )
     1015            if( tr_bencDictFindInt( d, "eta", &eta )
    10011016              && tr_bencDictFindInt( d, "id", &id )
    10021017              && tr_bencDictFindInt( d, "leftUntilDone", &leftUntilDone )
     
    10061021              && tr_bencDictFindInt( d, "sizeWhenDone", &sizeWhenDone )
    10071022              && tr_bencDictFindInt( d, "status", &status )
    1008               && tr_bencDictFindInt( d, "uploadedEver", &upEver ) )
     1023              && tr_bencDictFindDouble( d, "uploadRatio", &ratio ) )
    10091024            {
    10101025                char etaStr[16];
     
    10241039                    up / 1024.0,
    10251040                    down / 1024.0,
    1026                     strlratio( ratioStr, downEver, upEver, sizeof( ratioStr ) ),
     1041                    strlratio2( ratioStr, ratio, sizeof( ratioStr ) ),
    10271042                    getStatusString( d, statusStr, sizeof( statusStr ) ),
    10281043                    name );
Note: See TracChangeset for help on using the changeset viewer.