/* save the benc to a temporary file */
{
- struct evbuffer * buffer = evbuffer_new( );
- tr_bencToBuf( top, mode, buffer );
- nleft = evbuffer_get_length( buffer );
+ char * buf = tr_bencToStr( top, mode, &nleft );
+ const char * walk = buf;
while( nleft > 0 ) {
- const int n = evbuffer_write( buffer, fd );
- if( n >= 0 )
+ const int n = write( fd, walk, nleft );
+ if( n >= 0 ) {
nleft -= n;
+ walk += n;
+ }
else if( errno != EAGAIN ) {
err = errno;
break;
}
}
- evbuffer_free( buffer );
+ tr_free( buf );
}
if( nleft > 0 )
evbuffer_add_vprintf( buf, fmt, args );
va_end( args );
evbuffer_add_printf( buf, " (%s:%d)\n", base, line );
- evbuffer_write( buf, fileno( fp ) );
+ fputs( (const char*)evbuffer_pullup( buf, -1 ), fp );
tr_free( base );
evbuffer_free( buf );
/* FIXME(libevent2) ifdef this out for nonwindows platforms */
OutputDebugString( evbuffer_pullup( buf, -1 ) );
if( fp )
- evbuffer_write( buf, fileno( fp ) );
+ fputs( (const char*)evbuffer_pullup( buf, -1 ), fp );
tr_free( base );
evbuffer_free( buf );