X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libraries%2Flibldap%2Fcharray.c;h=82d2feeb1ba264e09413991ad54c337addb7d220;hb=a113c3ca9bd5a894e2a9f6426c95cff7ec0d1b89;hp=744ab07b7397c8966f213297ee1781e0ae220173;hpb=3b15c6f10fe0c205a6a2c263483eb896e13cc79d;p=openldap diff --git a/libraries/libldap/charray.c b/libraries/libldap/charray.c index 744ab07b73..82d2feeb1b 100644 --- a/libraries/libldap/charray.c +++ b/libraries/libldap/charray.c @@ -217,3 +217,48 @@ ldap_str2charray( const char *str_in, const char *brkstr ) LDAP_FREE( str ); return( res ); } + +char * ldap_charray2str( char **a, const char *sep ) +{ + char *s, **v, *p; + int len = 0; + int slen; + + if( sep == NULL ) sep = " "; + + slen = strlen( sep ); + + for ( v = a; *v != NULL; v++ ) { + len += strlen( *v ) + slen; /* for a space */ + } + + if ( len == 0 ) { + return NULL; + } + + len -= slen; + len += 1; /* EOS */ + + s = LDAP_MALLOC ( len ); + + if ( s == NULL ) { + return NULL; + } + + p = s; + for ( v = a; *v != NULL; v++ ) { + int len; + + if ( v != a ) { + strncpy( p, sep, slen ); + p += slen; + } + + len = strlen( *v ); + strncpy( p, *v, len ); + p += len; + } + + *p = '\0'; + return s; +}