From 69635022133488e6b19569fb59b16c4658a244eb Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Thu, 16 Mar 2006 06:52:46 +0000 Subject: merge with mpd/trunk up to r3925 git-svn-id: https://svn.musicpd.org/mpd/trunk@3926 09075e82-0dd4-0310-85a5-a0d7c8717e4f --- src/song.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'src/song.c') diff --git a/src/song.c b/src/song.c index 9a2c8d67d..07a7e04fb 100644 --- a/src/song.c +++ b/src/song.c @@ -64,9 +64,12 @@ Song * newSong(char * url, int type, Directory * parentDir) { if(song->type == SONG_TYPE_FILE) { InputPlugin * plugin; - if((plugin = isMusic(getSongUrl(song), &(song->mtime)))) { - song->tag = plugin->tagDupFunc( - rmp2amp(utf8ToFsCharset(getSongUrl(song)))); + unsigned int next = 0; + char * song_url = getSongUrl(song); + char * abs_path = rmp2amp(utf8ToFsCharset(song_url)); + while(!song->tag && (plugin = isMusic(song_url, + &(song->mtime), next++))) { + song->tag = plugin->tagDupFunc(abs_path); } if(!song->tag || song->tag->time<0) { freeSong(song); @@ -100,7 +103,7 @@ Song * addSongToList(SongList * list, char * url, char * utf8path, switch(songType) { case SONG_TYPE_FILE: - if(isMusic(utf8path, NULL)) { + if(isMusic(utf8path, NULL, 0)) { song = newSong(url, songType, parentDirectory); } break; @@ -278,14 +281,17 @@ void readSongInfoIntoList(FILE * fp, SongList * list, Directory * parentDir) { int updateSongInfo(Song * song) { if(song->type == SONG_TYPE_FILE) { InputPlugin * plugin; + unsigned int next = 0; + char * song_url = getSongUrl(song); + char * abs_path = rmp2amp(song_url); if(song->tag) freeMpdTag(song->tag); song->tag = NULL; - if((plugin = isMusic(getSongUrl(song),&(song->mtime)))) { - song->tag = plugin->tagDupFunc( - rmp2amp(getSongUrl(song))); + while(!song->tag && (plugin = isMusic(song_url, + &(song->mtime), next++))) { + song->tag = plugin->tagDupFunc(abs_path); } if(!song->tag || song->tag->time<0) return -1; } -- cgit v1.2.3