Changeset 1719


Ignore:
Timestamp:
Apr 15, 2007, 6:21:12 AM (15 years ago)
Author:
joshe
Message:

Escape nonprintable characters in TYPE_STR values in tr_bencPrint output.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/libtransmission/bencode.c

    r1642 r1719  
    178178static void __bencPrint( benc_val_t * val, int space )
    179179{
    180     int i;
    181 
    182     for( i = 0; i < space; i++ )
    183     {
    184         fprintf( stderr, " " );
     180    int ii;
     181
     182    for( ii = 0; ii < space; ii++ )
     183    {
     184        putc( ' ', stderr );
    185185    }
    186186
     
    192192
    193193        case TYPE_STR:
    194             fwrite( val->val.s.s, 1, val->val.s.i, stderr );
     194            for( ii = 0; val->val.s.i > ii; ii++ )
     195            {
     196                if( '\\' == val->val.s.s[ii] )
     197                {
     198                    putc( '\\', stderr );
     199                    putc( '\\', stderr );
     200                }
     201                else if( isprint( val->val.s.s[ii] ) )
     202                {
     203                    putc( val->val.s.s[ii], stderr );
     204                }
     205                else
     206                {
     207                    fprintf( stderr, "\\x%02x", val->val.s.s[ii] );
     208                }
     209            }
    195210            putc( '\n', stderr );
    196211            break;
     
    198213        case TYPE_LIST:
    199214            fprintf( stderr, "list\n" );
    200             for( i = 0; i < val->val.l.count; i++ )
    201                 __bencPrint( &val->val.l.vals[i], space + 1 );
     215            for( ii = 0; ii < val->val.l.count; ii++ )
     216            {
     217                __bencPrint( &val->val.l.vals[ii], space + 1 );
     218            }
    202219            break;
    203220
    204221        case TYPE_DICT:
    205222            fprintf( stderr, "dict\n" );
    206             for( i = 0; i < val->val.l.count; i++ )
    207                 __bencPrint( &val->val.l.vals[i], space + 1 );
     223            for( ii = 0; ii < val->val.l.count; ii++ )
     224            {
     225                __bencPrint( &val->val.l.vals[ii], space + 1 );
     226            }
    208227            break;
    209228    }
Note: See TracChangeset for help on using the changeset viewer.