mirror of
https://github.com/transmission/transmission
synced 2025-03-11 22:52:53 +00:00
Escape nonprintable characters in TYPE_STR values in tr_bencPrint output.
This commit is contained in:
parent
6eb847986b
commit
bb6f766112
1 changed files with 27 additions and 8 deletions
|
@ -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 )
|
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 )
|
switch( val->type )
|
||||||
|
@ -191,20 +191,39 @@ static void __bencPrint( benc_val_t * val, int space )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TYPE_STR:
|
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 );
|
putc( '\n', stderr );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TYPE_LIST:
|
case TYPE_LIST:
|
||||||
fprintf( stderr, "list\n" );
|
fprintf( stderr, "list\n" );
|
||||||
for( i = 0; i < val->val.l.count; i++ )
|
for( ii = 0; ii < val->val.l.count; ii++ )
|
||||||
__bencPrint( &val->val.l.vals[i], space + 1 );
|
{
|
||||||
|
__bencPrint( &val->val.l.vals[ii], space + 1 );
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TYPE_DICT:
|
case TYPE_DICT:
|
||||||
fprintf( stderr, "dict\n" );
|
fprintf( stderr, "dict\n" );
|
||||||
for( i = 0; i < val->val.l.count; i++ )
|
for( ii = 0; ii < val->val.l.count; ii++ )
|
||||||
__bencPrint( &val->val.l.vals[i], space + 1 );
|
{
|
||||||
|
__bencPrint( &val->val.l.vals[ii], space + 1 );
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue