From 01c5cb985cf79182e790d999307604e5fea1533a Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Wed, 6 Jan 2010 07:58:48 +0100 Subject: playlist_queue: convert absolute paths Accept absolute paths if they point into the music directory. --- src/playlist_queue.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'src/playlist_queue.c') diff --git a/src/playlist_queue.c b/src/playlist_queue.c index 269b34553..9940c3323 100644 --- a/src/playlist_queue.c +++ b/src/playlist_queue.c @@ -102,10 +102,22 @@ check_translate_song(struct song *song, const char *base_uri) } if (g_path_is_absolute(uri)) { - /* local files must be relative to the music - directory */ - song_free(song); - return NULL; + /* XXX fs_charset vs utf8? */ + char *prefix = base_uri != NULL + ? map_uri_fs(base_uri) + : map_directory_fs(db_get_root()); + + if (prefix == NULL || !g_str_has_prefix(uri, prefix) || + uri[strlen(prefix)] != '/') { + /* local files must be relative to the music + directory */ + g_free(prefix); + song_free(song); + return NULL; + } + + uri += strlen(prefix) + 1; + g_free(prefix); } if (base_uri != NULL) -- cgit v1.2.3