1
0
Fork 0
mirror of https://github.com/transmission/transmission synced 2025-02-24 15:10:39 +00:00

reimplement tr_buildPath() using struct evbuffer

This commit is contained in:
Charles Kerr 2007-11-27 04:11:39 +00:00
parent 6468d57844
commit d0047acc86

View file

@ -463,25 +463,18 @@ tr_mkdirp( const char * path_in, int permissions )
void void
tr_buildPath ( char *buf, size_t buflen, const char *first_element, ... ) tr_buildPath ( char *buf, size_t buflen, const char *first_element, ... )
{ {
va_list vl; struct evbuffer * evbuf = evbuffer_new( );
char* walk = buf;
const char * element = first_element; const char * element = first_element;
va_list vl;
if( first_element == NULL )
return;
va_start( vl, first_element ); va_start( vl, first_element );
for( ;; ) { while( element ) {
const size_t n = strlen( element ); if( EVBUFFER_LENGTH(evbuf) )
memcpy( walk, element, n ); evbuffer_add_printf( evbuf, "%c", TR_PATH_DELIMITER );
walk += n; evbuffer_add_printf( evbuf, "%s", element );
element = (const char*) va_arg( vl, const char* ); element = (const char*) va_arg( vl, const char* );
if( element == NULL )
break;
*walk++ = TR_PATH_DELIMITER;
} }
*walk = '\0'; strlcpy( buf, (char*)EVBUFFER_DATA(evbuf), buflen );
assert( walk-buf <= (int)buflen ); evbuffer_free( evbuf );
} }
int int