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:
parent
6468d57844
commit
d0047acc86
1 changed files with 8 additions and 15 deletions
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue