From 039b3544902fe479fa2ce31f06de2c08377e0fc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Bravo=20=C3=81lvarez?= Date: Thu, 6 Oct 2011 22:21:24 +0200 Subject: playlist_song: fix absolute path support in playlists Right now, a playlist with absolute pathnames can only add songs that are in the same the directory of the playlist or under it. If uri is an absolute pathname and base_uri is set, playlist_check_translate_song() will check that base_uri is a prefix of uri, excluding every other song in the music directory outside base_uri. I think in this case base_uri should be completely ignored (and made NULL) and uri should just be checked against music root directory. --- src/playlist_song.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/playlist_song.c b/src/playlist_song.c index 1a543a0b8..827098655 100644 --- a/src/playlist_song.c +++ b/src/playlist_song.c @@ -114,9 +114,7 @@ playlist_check_translate_song(struct song *song, const char *base_uri) if (g_path_is_absolute(uri)) { /* XXX fs_charset vs utf8? */ - char *prefix = base_uri != NULL - ? map_uri_fs(base_uri) - : map_directory_fs(db_get_root()); + char *prefix = map_directory_fs(db_get_root()); if (prefix == NULL || !g_str_has_prefix(uri, prefix) || uri[strlen(prefix)] != '/') { @@ -127,6 +125,7 @@ playlist_check_translate_song(struct song *song, const char *base_uri) return NULL; } + base_uri = NULL; uri += strlen(prefix) + 1; g_free(prefix); } -- cgit v1.2.3