(trunk libT) a little bit of early futureproofing for libevent 2.0
This commit is contained in:
parent
452cb27f9e
commit
d1b36fee6f
|
@ -1403,9 +1403,9 @@ static const struct WalkFuncs jsonWalkFuncs = { jsonIntFunc,
|
||||||
jsonDictBeginFunc,
|
jsonDictBeginFunc,
|
||||||
jsonListBeginFunc,
|
jsonListBeginFunc,
|
||||||
jsonContainerEndFunc };
|
jsonContainerEndFunc };
|
||||||
|
|
||||||
char*
|
static void
|
||||||
tr_bencSaveAsJSON( const tr_benc * top, struct evbuffer * out, tr_bool doIndent )
|
tr_bencSaveAsJSONImpl( const tr_benc * top, struct evbuffer * out, tr_bool doIndent )
|
||||||
{
|
{
|
||||||
struct jsonWalk data;
|
struct jsonWalk data;
|
||||||
|
|
||||||
|
@ -1419,7 +1419,12 @@ tr_bencSaveAsJSON( const tr_benc * top, struct evbuffer * out, tr_bool doIndent
|
||||||
|
|
||||||
if( EVBUFFER_LENGTH( out ) )
|
if( EVBUFFER_LENGTH( out ) )
|
||||||
evbuffer_add_printf( out, "\n" );
|
evbuffer_add_printf( out, "\n" );
|
||||||
|
}
|
||||||
|
|
||||||
|
char*
|
||||||
|
tr_bencSaveAsJSON( const tr_benc * top, struct evbuffer * out, tr_bool doIndent )
|
||||||
|
{
|
||||||
|
tr_bencSaveAsJSONImpl( top, out, doIndent );
|
||||||
return (char*) EVBUFFER_DATA( out );
|
return (char*) EVBUFFER_DATA( out );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1525,22 +1530,18 @@ tr_bencMergeDicts( tr_benc * target, const tr_benc * source )
|
||||||
***/
|
***/
|
||||||
|
|
||||||
static int
|
static int
|
||||||
saveFile( const char * filename,
|
saveFile( const char * filename, struct evbuffer * buf )
|
||||||
const char * content,
|
|
||||||
size_t len )
|
|
||||||
{
|
{
|
||||||
int err = 0;
|
int err = 0;
|
||||||
FILE * out = NULL;
|
int fd = tr_open_file_for_writing( filename );
|
||||||
|
|
||||||
out = fopen( filename, "wb+" );
|
if( fd < 0 )
|
||||||
|
|
||||||
if( !out )
|
|
||||||
{
|
{
|
||||||
err = errno;
|
err = errno;
|
||||||
tr_err( _( "Couldn't open \"%1$s\": %2$s" ),
|
tr_err( _( "Couldn't open \"%1$s\": %2$s" ),
|
||||||
filename, tr_strerror( errno ) );
|
filename, tr_strerror( errno ) );
|
||||||
}
|
}
|
||||||
else if( fwrite( content, sizeof( char ), len, out ) != (size_t)len )
|
else if( evbuffer_write( buf, fd ) == -1 )
|
||||||
{
|
{
|
||||||
err = errno;
|
err = errno;
|
||||||
tr_err( _( "Couldn't save file \"%1$s\": %2$s" ),
|
tr_err( _( "Couldn't save file \"%1$s\": %2$s" ),
|
||||||
|
@ -1549,31 +1550,31 @@ saveFile( const char * filename,
|
||||||
|
|
||||||
if( !err )
|
if( !err )
|
||||||
tr_dbg( "tr_bencSaveFile saved \"%s\"", filename );
|
tr_dbg( "tr_bencSaveFile saved \"%s\"", filename );
|
||||||
if( out )
|
if( fd >= 0 )
|
||||||
fclose( out );
|
close( fd );
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
tr_bencSaveFile( const char * filename,
|
tr_bencSaveFile( const char * filename, const tr_benc * top )
|
||||||
const tr_benc * b )
|
|
||||||
{
|
{
|
||||||
int len;
|
int err;
|
||||||
char * content = tr_bencSave( b, &len );
|
struct evbuffer * buf = evbuffer_new( );
|
||||||
const int err = saveFile( filename, content, len );
|
bencWalk( top, &saveFuncs, buf );
|
||||||
|
err = saveFile( filename, buf );
|
||||||
tr_free( content );
|
evbuffer_free( buf );
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
tr_bencSaveJSONFile( const char * filename,
|
tr_bencSaveJSONFile( const char * filename, const tr_benc * top )
|
||||||
const tr_benc * b )
|
|
||||||
{
|
{
|
||||||
struct evbuffer * buf = tr_getBuffer( );
|
int err;
|
||||||
const char * json = tr_bencSaveAsJSON( b, buf, TRUE );
|
struct evbuffer * buf = evbuffer_new( );
|
||||||
const int err = saveFile( filename, json, EVBUFFER_LENGTH( buf ) );
|
tr_bencSaveAsJSONImpl( top, buf, TRUE );
|
||||||
tr_releaseBuffer( buf );
|
err = saveFile( filename, buf );
|
||||||
|
evbuffer_free( buf );
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue