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.
This commit is contained in:
parent
b2f03e76ff
commit
039b354490
1
NEWS
1
NEWS
|
@ -15,6 +15,7 @@ ver 0.16.5 (2010/??/??)
|
|||
- the "seek" command works when MPD is stopped
|
||||
- restore song position from state file (bug fix)
|
||||
- fix crash that sometimes occurred when audio device fails on startup
|
||||
- fix absolute path support in playlists
|
||||
* WIN32: close sockets properly
|
||||
* install systemd service file if systemd is available
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue