vlc | branch: master | Rémi Duraffort <[email protected]> | Mon Mar 21 20:10:13 2011 +0100| [3d298bdc78de45188f064f00c1100c8b531d39c7] | committer: Rémi Duraffort
vlm: simplify and cleanup. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=3d298bdc78de45188f064f00c1100c8b531d39c7 --- src/control/vlm.c | 158 ++++++++++++++++++++++++++--------------------------- 1 files changed, 78 insertions(+), 80 deletions(-) diff --git a/src/control/vlm.c b/src/control/vlm.c index dd8a459..81ba9fc 100644 --- a/src/control/vlm.c +++ b/src/control/vlm.c @@ -232,100 +232,98 @@ static char* recurse_answer( vlm_message_t *p_answer, const char* psz_delim, vlm_message_t *aw_child, **paw_child; i_success = asprintf( &psz_childdelim, "%s\t", psz_delim); + if( i_success == -1 ) + return psz_response; - /* starting with the children of root node */ - if( i_success != -1 && p_answer->i_child ) + paw_child = p_answer->child; + aw_child = *( paw_child ); + /* Iterate over children */ + for( i = 0; i < p_answer->i_child; i++ ) { - paw_child = p_answer->child; - aw_child = *( paw_child ); - /* Iterate over children */ - for( i = 0; i < p_answer->i_child; i++ ) + /* Spare comma if it is the last element */ + char c_comma = ','; + if( i == (p_answer->i_child - 1) ) + c_comma = ' '; + + /* Append name of child node, if not in a list */ + if( !i_list ) { - /* Spare comma if it is the last element */ - char c_comma = ','; - if( i == (p_answer->i_child - 1) ) - c_comma = ' '; + i_success = asprintf( &psz_response, "%s\"%s\": ", + psz_response, aw_child->psz_name ); + if( i_success == -1 ) break; + } - /* Append name of child node, if not in a list */ - if( !i_list ) + /* If child node has children, */ + if( aw_child->i_child ) + { + /* If the parent node is a list (hence the child node is + * inside a list), create a property of its name as if it + * had a name value node + */ + if( i_list ) { - i_success = asprintf( &psz_response, "%s\"%s\": ", - psz_response, aw_child->psz_name ); + i_success = asprintf( &psz_nametag, "\"name\": \"%s\",%s", + aw_child->psz_name, psz_childdelim ); if( i_success == -1 ) break; } - - /* If child node has children, */ - if( aw_child->i_child ) + else + { + psz_nametag = strdup( "" ); + } + /* If the child is a list itself, format it accordingly and + * recurse through the child's children, telling them that + * they are inside a list. + */ + if( strcmp( aw_child->psz_name, "media" ) == 0 || + strcmp( aw_child->psz_name, "inputs" ) == 0 || + strcmp( aw_child->psz_name, "options" ) == 0 ) { - /* If the parent node is a list (hence the child node is - * inside a list), create a property of its name as if it - * had a name value node - */ - if( i_list ) - { - i_success = asprintf( &psz_nametag, "\"name\": \"%s\",%s", - aw_child->psz_name, psz_childdelim ); - if( i_success == -1 ) break; - } - else - { - psz_nametag = strdup( "" ); - } - /* If the child is a list itself, format it accordingly and - * recurse through the child's children, telling them that - * they are inside a list. - */ - if( strcmp( aw_child->psz_name, "media" ) == 0 || - strcmp( aw_child->psz_name, "inputs" ) == 0 || - strcmp( aw_child->psz_name, "options" ) == 0 ) - { - i_success = asprintf( &psz_response, "%s[%s%s%s]%c%s", - psz_response, psz_childdelim, - recurse_answer( aw_child, - psz_childdelim, 1 ), - psz_delim, c_comma, psz_delim ); - if( i_success == -1 ) break; - } - /* Not a list, so format the child as a JSON object and - * recurse through the child's children - */ - else - { - i_success = asprintf( &psz_response, "%s{%s%s%s%s}%c%s", - psz_response, psz_childdelim, psz_nametag, - recurse_answer( aw_child, - psz_childdelim, 0 ), - psz_delim, c_comma, psz_delim ); - if( i_success == -1 ) break; - } + i_success = asprintf( &psz_response, "%s[%s%s%s]%c%s", + psz_response, psz_childdelim, + recurse_answer( aw_child, + psz_childdelim, 1 ), + psz_delim, c_comma, psz_delim ); + if( i_success == -1 ) break; } - /* Otherwise - when no children are present - the node is a - * value node. So print the value string + /* Not a list, so format the child as a JSON object and + * recurse through the child's children */ else { - /* If value is equivalent to NULL, print it as null */ - if( aw_child->psz_value == NULL - || strcmp( aw_child->psz_value, "(null)" ) == 0 ) - { - i_success = asprintf( &psz_response, "%snull%c%s", - psz_response, c_comma, psz_delim ); - if( i_success == -1 ) - break; - } - /* Otherwise print the value in quotation marks */ - else - { - i_success = asprintf( &psz_response, "%s\"%s\"%c%s", - psz_response, aw_child->psz_value, - c_comma, psz_delim ); - if( i_success == -1 ) break; - } + i_success = asprintf( &psz_response, "%s{%s%s%s%s}%c%s", + psz_response, psz_childdelim, psz_nametag, + recurse_answer( aw_child, + psz_childdelim, 0 ), + psz_delim, c_comma, psz_delim ); + if( i_success == -1 ) break; } - /* getting next child */ - paw_child++; - aw_child = *( paw_child ); } + /* Otherwise - when no children are present - the node is a + * value node. So print the value string + */ + else + { + /* If value is equivalent to NULL, print it as null */ + if( aw_child->psz_value == NULL + || strcmp( aw_child->psz_value, "(null)" ) == 0 ) + { + i_success = asprintf( &psz_response, "%snull%c%s", + psz_response, c_comma, psz_delim ); + if( i_success == -1 ) + break; + } + /* Otherwise print the value in quotation marks */ + else + { + i_success = asprintf( &psz_response, "%s\"%s\"%c%s", + psz_response, aw_child->psz_value, + c_comma, psz_delim ); + if( i_success == -1 ) break; + } + } + /* getting next child */ + paw_child++; + aw_child = *( paw_child ); } free( psz_nametag ); free( psz_childdelim ); _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
