From: Laurent Aimar Date: Sun, 31 May 2009 15:28:20 +0000 (+0200) Subject: Added config_ChainDuplicate to duplicate config_chain_t list. X-Git-Tag: 1.1.0-ff~5670 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=6452698b9a24b07df260464c6f5eb635b0d2e4d9;p=vlc Added config_ChainDuplicate to duplicate config_chain_t list. --- diff --git a/include/vlc_configuration.h b/include/vlc_configuration.h index 5ccb29e3c6..1c2c48fe1c 100644 --- a/include/vlc_configuration.h +++ b/include/vlc_configuration.h @@ -278,6 +278,11 @@ VLC_EXPORT( char *, config_ChainCreate, ( char **ppsz_name, config_chain_t **pp_ */ VLC_EXPORT( void, config_ChainDestroy, ( config_chain_t * ) ); +/** + * This function will duplicate a linked list of config_chain_t + */ +VLC_EXPORT( config_chain_t *, config_ChainDuplicate, ( const config_chain_t * ) ); + /** * This function will unescape a string in place and will return a pointer on * the given string. diff --git a/src/config/chain.c b/src/config/chain.c index 3122c48702..88ad2831a0 100644 --- a/src/config/chain.c +++ b/src/config/chain.c @@ -412,6 +412,25 @@ void __config_ChainParse( vlc_object_t *p_this, const char *psz_prefix, } } +config_chain_t *config_ChainDuplicate( const config_chain_t *p_src ) +{ + config_chain_t *p_dst = NULL; + config_chain_t **pp_last = &p_dst; + while( p_src ) + { + config_chain_t *p = malloc( sizeof(*p) ); + if( !p ) + break; + p->p_next = NULL; + p->psz_name = p_src->psz_name ? strdup( p_src->psz_name ) : NULL; + p->psz_value = p_src->psz_value ? strdup( p_src->psz_value ) : NULL; + + *pp_last = p; + pp_last = &p->p_next; + } + return p_dst; +} + char *config_StringUnescape( char *psz_string ) { char *psz_src = psz_string; diff --git a/src/libvlccore.sym b/src/libvlccore.sym index 48f0a321b5..239ff76bba 100644 --- a/src/libvlccore.sym +++ b/src/libvlccore.sym @@ -51,6 +51,7 @@ block_Realloc __config_AddIntf config_ChainCreate config_ChainDestroy +config_ChainDuplicate __config_ChainParse __config_ExistIntf config_FindConfig