1
0
Fork 0
mirror of https://github.com/transmission/transmission synced 2025-03-11 06:32:59 +00:00

Escape nonprintable characters in TYPE_STR values in tr_bencPrint output.

This commit is contained in:
Josh Elsasser 2007-04-15 06:21:12 +00:00
parent 6eb847986b
commit bb6f766112

View file

@ -177,11 +177,11 @@ int _tr_bencLoad( char * buf, int len, benc_val_t * val, char ** end )
static void __bencPrint( benc_val_t * val, int space )
{
int i;
int ii;
for( i = 0; i < space; i++ )
for( ii = 0; ii < space; ii++ )
{
fprintf( stderr, " " );
putc( ' ', stderr );
}
switch( val->type )
@ -191,20 +191,39 @@ static void __bencPrint( benc_val_t * val, int space )
break;
case TYPE_STR:
fwrite( val->val.s.s, 1, val->val.s.i, stderr );
for( ii = 0; val->val.s.i > ii; ii++ )
{
if( '\\' == val->val.s.s[ii] )
{
putc( '\\', stderr );
putc( '\\', stderr );
}
else if( isprint( val->val.s.s[ii] ) )
{
putc( val->val.s.s[ii], stderr );
}
else
{
fprintf( stderr, "\\x%02x", val->val.s.s[ii] );
}
}
putc( '\n', stderr );
break;
case TYPE_LIST:
fprintf( stderr, "list\n" );
for( i = 0; i < val->val.l.count; i++ )
__bencPrint( &val->val.l.vals[i], space + 1 );
for( ii = 0; ii < val->val.l.count; ii++ )
{
__bencPrint( &val->val.l.vals[ii], space + 1 );
}
break;
case TYPE_DICT:
fprintf( stderr, "dict\n" );
for( i = 0; i < val->val.l.count; i++ )
__bencPrint( &val->val.l.vals[i], space + 1 );
for( ii = 0; ii < val->val.l.count; ii++ )
{
__bencPrint( &val->val.l.vals[ii], space + 1 );
}
break;
}
}