diff options
author | Max Kellermann <max@duempel.org> | 2009-12-08 08:17:35 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2009-12-08 08:33:14 +0100 |
commit | f4b707b4ca6451fcb1a6af6d3f2e58579b3c01a5 (patch) | |
tree | 253d945d1a2f996844e480d80916c75975882afe /src/mapper.c | |
parent | cd69fee0a46e6b64ea9c76ccb83e601e098f3e07 (diff) | |
download | mpd-f4b707b4ca6451fcb1a6af6d3f2e58579b3c01a5.tar.gz mpd-f4b707b4ca6451fcb1a6af6d3f2e58579b3c01a5.tar.xz mpd-f4b707b4ca6451fcb1a6af6d3f2e58579b3c01a5.zip |
mapper: apply filesystem_charset to playlists
This fixes an inconsistency in the stored playlist subsystem: when
obtaining the list of playlists (listplaylist, listplaylistinfo), the
file names in the playlist directory are converted to UTF-8 (according
to filesystem_charset), but when saving or loading playlists, the
filesystem_charset setting was ignored.
Diffstat (limited to 'src/mapper.c')
-rw-r--r-- | src/mapper.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/mapper.c b/src/mapper.c index 5c19021f9..5518cb79e 100644 --- a/src/mapper.c +++ b/src/mapper.c @@ -221,14 +221,19 @@ map_spl_path(void) char * map_spl_utf8_to_fs(const char *name) { - char *filename, *path; + char *filename_utf8, *filename_fs, *path; if (playlist_dir == NULL) return NULL; - filename = g_strconcat(name, PLAYLIST_FILE_SUFFIX, NULL); - path = g_build_filename(playlist_dir, filename, NULL); - g_free(filename); + filename_utf8 = g_strconcat(name, PLAYLIST_FILE_SUFFIX, NULL); + filename_fs = utf8_to_fs_charset(filename_utf8); + g_free(filename_utf8); + if (filename_fs == NULL) + return NULL; + + path = g_build_filename(playlist_dir, filename_fs, NULL); + g_free(filename_fs); return path; } |