[vlc-devel] [PATCH] Fixed libvlc_vlm_show_media to return a string representation of a vlm media again

Alexander Bethke abethke at oamk.fi
Wed Apr 1 10:20:26 CEST 2009


Hi,

thanks for the comments, I gonna work over the code soon (as soon as I 
have time).

Regards, Alex



Laurent Aimar wrote:
> Hi,
>
> On Wed, Mar 11, 2009, Alexander Bethke wrote:
>   
>> +static vlm_media_instance_t *libvlc_vlm_get_media_instance( libvlc_instance_t *p_instance,
>> +                                                            const char *psz_name,
>> +                                                            int i_minstance_idx,
>> +                                                            libvlc_exception_t *p_exception )
>> +{
>> +    vlm_t *p_vlm;
>> +    vlm_media_instance_t **pp_minstance;
>> +    vlm_media_instance_t *p_minstance;
>> +    int i_minstance;
>> +    int64_t id;
>> +
>> +    VLM_RET(p_vlm, NULL);
>> +
>> +    if( vlm_Control( p_vlm, VLM_GET_MEDIA_ID, psz_name, &id ) ||
>> +        vlm_Control( p_vlm, VLM_GET_MEDIA_INSTANCES, id, &pp_minstance, &i_minstance ) )
>> +    {
>> +        libvlc_exception_raise( p_exception, "Unable to get %s instances", psz_name );
>> +        return NULL;
>> +    }
>> +    p_minstance = NULL;
>> +    if( i_minstance_idx >= 0 && i_minstance_idx < i_minstance )
>> +    {
>> +        p_minstance = pp_minstance[i_minstance_idx];
>> +        TAB_REMOVE( i_minstance, pp_minstance, p_minstance );
>> +    }
>> +    while( i_minstance > 0 )
>> +        vlm_media_instance_Delete( pp_minstance[--i_minstance] );
>>     
> It would be cleaner to use an extra variable like
> for( int i = 0; i < i_minstance; i++ )
>     vlm_media_instance_Delete( pp_minstance[i] );
> as i_minstance is the number of element.
> (Cosmetic)
>
>   
>>  /* local function to be used in libvlc_vlm_show_media only */
>>  static char* recurse_answer( char* psz_prefix, vlm_message_t *p_answer ) {
>>      char* psz_childprefix;
>> -    char* psz_response="";
>> +    char* psz_response;
>>      char* response_tmp;
>>      int i;
>>      vlm_message_t *aw_child, **paw_child;
>>  
>> +    asprintf( &psz_response, "");
>>     
> You need to check asprintf return value.
>   
>>      asprintf( &psz_childprefix, "%s%s.", psz_prefix, p_answer->psz_name );
>>     
>  And while you are at it, if you could add it for existing asprintf it
> would be cool :)
>
>   
>>  
>>      if ( p_answer->i_child )
>> @@ -65,96 +118,40 @@ static char* recurse_answer( char* psz_prefix, vlm_message_t *p_answer ) {
>>      return psz_response;
>>  }
>>  
>> -char* libvlc_vlm_show_media( libvlc_instance_t *p_instance, char *psz_name,
>> +/*  Returning a string representation of the media I find should be changed to
>> +    either refactoring this to return some sort of struct or or to add more
>> +    libvlc_vlm_get_media_instance_x methods to make available all information
>> +    that you get out of the string representation.
>> +    -Alexander Bethke */
>> +char* libvlc_vlm_show_media( libvlc_instance_t *p_instance,
>> +                             const char *psz_name,
>>                               libvlc_exception_t *p_exception )
>>  {
>>      char *psz_message;
>>      vlm_message_t *answer;
>>      char *psz_response;
>> +    vlm_t *p_vlm;
>> +
>> +    VLM_RET(p_vlm, NULL);
>>  
>> -    CHECK_VLM;
>>      asprintf( &psz_message, "show %s", psz_name );
>>      asprintf( &psz_response, "", psz_name );
>>     
>  Same.
>   
>> -    vlm_ExecuteCommand( p_instance->p_vlm, psz_message, &answer );
>> +    vlm_ExecuteCommand( p_vlm, psz_message, &answer );
>>     
> vlm_ExecuteCommand has a return value that need checking.
>
>   
>>      if( answer->psz_value )
>>      {
>>          libvlc_exception_raise( p_exception, "Unable to call show %s: %s",
>>                                  psz_name, answer->psz_value );
>>      }
>> -    else
>> -    {
>> +    else {
>>     
>  It would be better if you keep the { placement coherent.
>
>   
>>          if ( answer->child )
>>          {
>>              psz_response = recurse_answer( "", answer );
>>          }
>>      }
>> +
>>      free( psz_message );
>>      return(psz_response );
>>  }
>>     
>
> Regards,
>
>   




More information about the vlc-devel mailing list