- vlc_value_t val;
- char *psz_parser;
-
- var_Get( p_aout, psz_variable, &val );
-
- if( !val.psz_string ) val.psz_string = strdup("");
-
- psz_parser = strstr( val.psz_string, psz_name );
-
- if( b_add )
- {
- if( !psz_parser )
- {
- psz_parser = val.psz_string;
- asprintf( &val.psz_string, (*val.psz_string) ? "%s:%s" : "%s%s",
- val.psz_string, psz_name );
- free( psz_parser );
- }
- else
- {
- return 0;
- }
- }
- else
- {
- if( psz_parser )
- {
- memmove( psz_parser, psz_parser + strlen(psz_name) +
- (*(psz_parser + strlen(psz_name)) == ':' ? 1 : 0 ),
- strlen(psz_parser + strlen(psz_name)) + 1 );
- }
- else
- {
- free( val.psz_string );
- return 0;
- }
- }
-
- var_Set( p_aout, psz_variable, val );
- free( val.psz_string );
- return 1;
+ return AoutChangeFilterString( VLC_OBJECT(p_aout), p_aout,
+ psz_variable, psz_name, b_add ) ? 1 : 0;