- sprintf( dst, string );
-
- while( *s )
- {
- if( b_is_format )
- {
- switch( *s )
- {
- case 'a':
- INSERT_STRING( p_item && p_item->p_meta,
- p_item->p_meta->psz_artist );
- break;
- case 'b':
- INSERT_STRING( p_item && p_item->p_meta,
- p_item->p_meta->psz_album );
- break;
- case 'c':
- INSERT_STRING( p_item && p_item->p_meta,
- p_item->p_meta->psz_copyright );
- break;
- case 'd':
- INSERT_STRING( p_item && p_item->p_meta,
- p_item->p_meta->psz_description );
- break;
- case 'e':
- INSERT_STRING( p_item && p_item->p_meta,
- p_item->p_meta->psz_encodedby );
- break;
- case 'g':
- INSERT_STRING( p_item && p_item->p_meta,
- p_item->p_meta->psz_genre );
- break;
- case 'l':
- INSERT_STRING( p_item && p_item->p_meta,
- p_item->p_meta->psz_language );
- break;
- case 'n':
- INSERT_STRING( p_item && p_item->p_meta,
- p_item->p_meta->psz_tracknum );
- break;
- case 'p':
- INSERT_STRING( p_item && p_item->p_meta,
- p_item->p_meta->psz_nowplaying );
- break;
- case 'r':
- INSERT_STRING( p_item && p_item->p_meta,
- p_item->p_meta->psz_rating );
- break;
- case 't':
- INSERT_STRING( p_item && p_item->p_meta,
- p_item->p_meta->psz_title );
- break;
- case 'u':
- INSERT_STRING( p_item && p_item->p_meta,
- p_item->p_meta->psz_url );
- break;
- case 'A':
- INSERT_STRING( p_item && p_item->p_meta,
- p_item->p_meta->psz_date );
- break;
- case 'D':
- if( p_item )
- {
- sprintf( buf, "%02d:%02d:%02d",
- (int)(p_item->i_duration/(3600000000)),
- (int)((p_item->i_duration/(60000000))%60),
- (int)((p_item->i_duration/1000000)%60) );
- }
- else
- {
- sprintf( buf, "--:--:--" );
- }
- INSERT_STRING( 1, buf );
- break;
- case 'F':
- INSERT_STRING( p_item, p_item->psz_uri );
- break;
- case 'L':
- if( p_item && p_input )
- {
- sprintf( buf, "%02d:%02d:%02d",
- (int)((p_item->i_duration-p_input->i_time)/(3600000000)),
- (int)(((p_item->i_duration-p_input->i_time)/(60000000))%60),
- (int)(((p_item->i_duration-p_input->i_time)/1000000)%60) );
- }
- else
- {
- sprintf( buf, "--:--:--" );
- }
- INSERT_STRING( 1, buf );
- break;
- case 'N':
- INSERT_STRING( p_item, p_item->psz_name );
- break;
- case 'P':
- INSERT_STRING( p_item && p_item->p_meta,
- p_item->p_meta->psz_publisher );
- break;
- case 'T':
- if( p_input )
- {
- sprintf( buf, "%02d:%02d:%02d",
- (int)(p_input->i_time/(3600000000)),
- (int)((p_input->i_time/(60000000))%60),
- (int)((p_input->i_time/1000000)%60) );
- }
- else
- {
- sprintf( buf, "--:--:--" );
- }
- INSERT_STRING( 1, buf );
- break;
- case '_':
- *d = '\n';
- d++;
- break;
-
- default:
- *d = *s;
- d++;
- break;
- }
- b_is_format = 0;
- }
- else if( *s == '$' )
- {
- b_is_format = 1;
- }
- else
- {
- *d = *s;
- d++;
- }
- s++;
- }
- *d = '\0';
-
- if( p_input )
- {
- vlc_object_release( p_input );
- if( p_item )
- vlc_mutex_unlock( &p_item->lock );
- }
-
- return dst;