Changeset 8159


Ignore:
Timestamp:
Apr 5, 2009, 11:46:53 PM (13 years ago)
Author:
charles
Message:

better bool, real handling in (1) the gtk prefs interface, (2) the dictionary merge code, (2) the json parser

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/gtk/conf.c

    r8155 r8159  
    258258{
    259259    double d = 0.0;
    260 
    261260    tr_bencDictFindReal( getPrefs( ), key, &d );
    262261    return d;
     
    277276pref_flag_get( const char * key )
    278277{
    279     int64_t i;
    280 
    281     tr_bencDictFindInt( getPrefs( ), key, &i );
    282     return i != 0;
     278    tr_bool boolVal;
     279    tr_bencDictFindBool( getPrefs( ), key, &boolVal );
     280    return boolVal != 0;
    283281}
    284282
     
    304302               gboolean     value )
    305303{
    306     pref_int_set( key, value != 0 );
     304    tr_bencDictAddBool( getPrefs( ), key, value );
    307305}
    308306
  • trunk/libtransmission/bencode.c

    r8158 r8159  
    414414}
    415415
     416static void
     417tr_benc_warning( const char * err )
     418{
     419    fprintf( stderr, "warning: %s\n", err );
     420}
     421
    416422tr_bool
    417423tr_bencGetInt( const tr_benc * val,
     
    425431
    426432    if( !success && (( success = tr_bencIsBool( val )))) {
    427         fprintf( stderr, "warning: reading bool as an int\n" );
     433        tr_benc_warning( "reading bool as an int" );
    428434        if( setme )
    429435            *setme = val->val.b ? 1 : 0;
     
    453459        *setme = val->val.b;
    454460
    455     if( !success && tr_bencIsInt( val ) )
    456         if(( success = ( val->val.i==0 || val->val.i==1 ) ))
     461    if( !success && tr_bencIsInt( val ) ) {
     462        if(( success = ( val->val.i==0 || val->val.i==1 ) )) {
     463            tr_benc_warning( "warning: reading bool as an int\n" );
    457464            *setme = val->val.i!=0;
     465        }
     466    }
    458467
    459468    if( !success && tr_bencIsString( val ) )
     
    15421551        const char * key;
    15431552        const tr_benc * val;
     1553        tr_benc * t;
    15441554
    15451555        if( tr_bencDictChild( source, i, &key, &val ) )
    15461556        {
    1547             int64_t i64;
    1548             const char * str;
    1549             tr_benc * t;
    1550 
    1551             if( tr_bencGetInt( val, &i64 ) )
     1557            if( tr_bencIsBool( val ) )
    15521558            {
    1553                 tr_bencDictRemove( target, key );
    1554                 tr_bencDictAddInt( target, key, i64 );
     1559                tr_bool boolVal;
     1560                tr_bencGetBool( val, &boolVal );
     1561                tr_bencDictAddBool( target, key, boolVal );
    15551562            }
    1556             else if( tr_bencGetStr( val, &str ) )
     1563            else if( tr_bencIsReal( val ) )
    15571564            {
    1558                 tr_bencDictRemove( target, key );
    1559                 tr_bencDictAddStr( target, key, str );
     1565                double realVal;
     1566                tr_bencGetReal( val, &realVal );
     1567                tr_bencDictAddReal( target, key, realVal );
     1568            }
     1569            else if( tr_bencIsInt( val ) )
     1570            {
     1571                int64_t intVal;
     1572                tr_bencGetInt( val, &intVal );
     1573                tr_bencDictAddInt( target, key, intVal );
     1574            }
     1575            else if( tr_bencIsString( val ) )
     1576            {
     1577                const char * strVal;
     1578                tr_bencGetStr( val, &strVal );
     1579                tr_bencDictAddStr( target, key, strVal );
    15601580            }
    15611581            else if( tr_bencIsDict( val ) && tr_bencDictFindDict( target, key, &t ) )
     
    15651585            else
    15661586            {
    1567            
    15681587                tr_dbg( "tr_bencMergeDicts skipping \"%s\"", key );
    15691588            }
  • trunk/libtransmission/json.c

    r7962 r8159  
    9393
    9494        case JSON_T_FLOAT:
    95         {
    96             char buf[128];
    97             tr_snprintf( buf, sizeof( buf ), "%f",
    98                          (double)value->vu.float_value );
    99             tr_bencInitStr( getNode( data ), buf, -1 );
    10095            data->hasContent = TRUE;
     96            tr_bencInitReal( getNode( data ), (double)value->vu.float_value );
    10197            break;
    102         }
    10398
    10499        case JSON_T_NULL:
     
    114109        case JSON_T_TRUE:
    115110            data->hasContent = TRUE;
    116             tr_bencInitInt( getNode( data ), 1 );
     111            tr_bencInitBool( getNode( data ), 1 );
    117112            break;
    118113
    119114        case JSON_T_FALSE:
    120115            data->hasContent = TRUE;
    121             tr_bencInitInt( getNode( data ), 0 );
     116            tr_bencInitBool( getNode( data ), 0 );
    122117            break;
    123118
Note: See TracChangeset for help on using the changeset viewer.