diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mapper.c | 2 | ||||
-rw-r--r-- | src/mapper.h | 2 | ||||
-rw-r--r-- | src/stored_playlist.c | 11 |
3 files changed, 6 insertions, 9 deletions
diff --git a/src/mapper.c b/src/mapper.c index 8de2032d9..28471e60e 100644 --- a/src/mapper.c +++ b/src/mapper.c @@ -203,7 +203,7 @@ map_spl_path(void) char * map_spl_utf8_to_fs(const char *name) { - char *filename = g_strconcat(name, "." PLAYLIST_FILE_SUFFIX, NULL); + char *filename = g_strconcat(name, PLAYLIST_FILE_SUFFIX, NULL); char *path; if (playlist_dir == NULL) diff --git a/src/mapper.h b/src/mapper.h index 874add377..fc4101853 100644 --- a/src/mapper.h +++ b/src/mapper.h @@ -25,7 +25,7 @@ #include <stdbool.h> -#define PLAYLIST_FILE_SUFFIX "m3u" +#define PLAYLIST_FILE_SUFFIX ".m3u" struct directory; struct song; diff --git a/src/stored_playlist.c b/src/stored_playlist.c index 941702835..26dcb34d3 100644 --- a/src/stored_playlist.c +++ b/src/stored_playlist.c @@ -42,14 +42,11 @@ load_playlist_info(const char *parent_path_fs, const char *name_fs) struct stat st; struct stored_playlist_info *playlist; - if (name_length < 1 + sizeof(PLAYLIST_FILE_SUFFIX) || + if (name_length < sizeof(PLAYLIST_FILE_SUFFIX) || memchr(name_fs, '\n', name_length) != NULL) return NULL; - if (name_fs[name_length - sizeof(PLAYLIST_FILE_SUFFIX)] != '.' || - memcmp(name_fs + name_length - sizeof(PLAYLIST_FILE_SUFFIX) + 1, - PLAYLIST_FILE_SUFFIX, - sizeof(PLAYLIST_FILE_SUFFIX) - 1) != 0) + if (!g_str_has_suffix(name_fs, PLAYLIST_FILE_SUFFIX)) return NULL; path_fs = g_build_filename(parent_path_fs, name_fs, NULL); @@ -58,8 +55,8 @@ load_playlist_info(const char *parent_path_fs, const char *name_fs) if (ret < 0 || !S_ISREG(st.st_mode)) return NULL; - name = g_strdup(name_fs); - name[name_length - sizeof(PLAYLIST_FILE_SUFFIX)] = 0; + name = g_strndup(name_fs, + name_length + 1 - sizeof(PLAYLIST_FILE_SUFFIX)); name_utf8 = fs_charset_to_utf8(name); g_free(name); if (name_utf8 == NULL) |