func: char *svn_cstring_join(const apr_array_header_t *strings,const char *separator,apr_pool_t *pool) svn_stringbuf_t * new_str = svn_stringbuf_create_empty ( pool ) ; svn_stringbuf_t *svn_stringbuf_create_empty(apr_pool_t *pool) return svn_stringbuf_create_ensure ( 0 , pool ) ; svn_stringbuf_t *svn_stringbuf_create_ensure(apr_size_t blocksize,apr_pool_t *pool) void * mem ; svn_stringbuf_t * new_string ; new_string = mem; new_string -> data = ( ( char * ) mem ) + sizeof ( ( * new_string ) ); new_string -> data [ 0 ] = '\0'; new_string -> len = 0; new_string -> blocksize = blocksize - sizeof ( ( * new_string ) ); new_string -> pool = pool; return new_string ; int i ; for (i = 0; i < strings -> nelts; i++) const char * string = ( ( const char * * ) ( strings -> elts ) ) [ i ] ; svn_stringbuf_appendbytes ( new_str , string , strlen ( string ) ); void svn_stringbuf_appendbytes(svn_stringbuf_t *str,const char *bytes,apr_size_t count) apr_size_t total_len ; total_len = str -> len + count; svn_stringbuf_ensure ( str , total_len ); void svn_stringbuf_ensure(svn_stringbuf_t *str,apr_size_t minimum_size) void * mem = ( void * ) 0 ; if ( mem && mem != ( str -> data ) )  if ( str -> data )  memcpy ( mem , ( str -> data ) , str -> len + 1 ); str -> data = mem; 