+ /* forge the HTTP POST request */
+ vlc_mutex_lock( &p_sys->lock );
+ audioscrobbler_song_t *p_song;
+ for( i_song = 0 ; i_song < p_sys->i_songs ; i_song++ )
+ {
+ p_song = &p_sys->p_queue[i_song];
+ if( !asprintf( &psz_submit_song,
+ "&a%%5B%d%%5D=%s&t%%5B%d%%5D=%s"
+ "&i%%5B%d%%5D=%ju&o%%5B%d%%5D=P&r%%5B%d%%5D="
+ "&l%%5B%d%%5D=%d&b%%5B%d%%5D=%s"
+ "&n%%5B%d%%5D=%s&m%%5B%d%%5D=%s",
+ i_song, p_song->psz_a, i_song, p_song->psz_t,
+ i_song, (uintmax_t)p_song->date, i_song, i_song,
+ i_song, p_song->i_l, i_song, p_song->psz_b,
+ i_song, p_song->psz_n, i_song, p_song->psz_m
+ ) )
+ { /* Out of memory */
+ vlc_mutex_unlock( &p_sys->lock );
+ Unload( p_intf );
+ return;
+ }
+ psz_submit_tmp = psz_submit;
+ if( !asprintf( &psz_submit, "%s%s",
+ psz_submit_tmp, psz_submit_song ) )
+ { /* Out of memory */
+ free( psz_submit_tmp );
+ free( psz_submit_song );
+ vlc_mutex_unlock( &p_sys->lock );
+ Unload( p_intf );
+ return;
+ }
+ free( psz_submit_song );
+ free( psz_submit_tmp );
+ }
+ vlc_mutex_unlock( &p_sys->lock );