playlist: fix stored playlist modifications with absolute paths
When save_absolute_paths_in_playlists was enabled in mpd.conf, MPD broke all playlists when manipulated using the "playlistdelete" command. The reason was that map_directory_child_fs() was used, which doesn't accept slashes in the file name. Use the new map_uri_fs() function instead.
This commit is contained in:
parent
a94e59ca21
commit
1bd3cde062
12
src/mapper.c
12
src/mapper.c
@ -83,6 +83,16 @@ rmp2amp_r(char *dst, const char *rel_path)
|
||||
return dst;
|
||||
}
|
||||
|
||||
const char *
|
||||
map_uri_fs(const char *uri, char *buffer)
|
||||
{
|
||||
assert(uri != NULL);
|
||||
assert(*uri != '/');
|
||||
assert(buffer != NULL);
|
||||
|
||||
return rmp2amp_r(buffer, utf8_to_fs_charset(buffer, uri));
|
||||
}
|
||||
|
||||
const char *
|
||||
map_directory_fs(const struct directory *directory, char *buffer)
|
||||
{
|
||||
@ -90,7 +100,7 @@ map_directory_fs(const struct directory *directory, char *buffer)
|
||||
if (isRootDirectory(dirname))
|
||||
return music_dir;
|
||||
|
||||
return rmp2amp_r(buffer, utf8_to_fs_charset(buffer, dirname));
|
||||
return map_uri_fs(dirname, buffer);
|
||||
}
|
||||
|
||||
const char *
|
||||
|
@ -32,6 +32,14 @@ void mapper_init(void);
|
||||
|
||||
void mapper_finish(void);
|
||||
|
||||
/**
|
||||
* Determines the absolute file system path of a relative URI. This
|
||||
* is basically done by converting the URI to the file system charset
|
||||
* and prepending the music directory.
|
||||
*/
|
||||
const char *
|
||||
map_uri_fs(const char *uri, char *buffer);
|
||||
|
||||
/**
|
||||
* Determines the file system path of a directory object.
|
||||
*
|
||||
|
@ -48,7 +48,7 @@ playlist_print_uri(FILE *file, const char *uri)
|
||||
|
||||
if (playlist_saveAbsolutePaths && !isRemoteUrl(uri) &&
|
||||
uri[0] != '/')
|
||||
s = map_directory_child_fs(db_get_root(), uri, tmp);
|
||||
s = map_uri_fs(uri, tmp);
|
||||
else
|
||||
s = utf8_to_fs_charset(tmp, uri);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user