From f8bf3afeae9ed757b516c64f62d8c1f3ef9ffaeb Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Tue, 14 Aug 2012 02:17:20 +0200 Subject: playlist_song: move code to playlist_check_load_song() --- src/playlist_song.c | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) (limited to 'src/playlist_song.c') diff --git a/src/playlist_song.c b/src/playlist_song.c index 8a3ba303e..85089a4d1 100644 --- a/src/playlist_song.c +++ b/src/playlist_song.c @@ -83,12 +83,31 @@ apply_song_metadata(struct song *dest, const struct song *src) return tmp; } +static struct song * +playlist_check_load_song(struct song *song, const char *uri, bool secure) +{ + struct song *dest; + + if (uri_has_scheme(uri)) { + dest = song_remote_new(uri); + } else if (g_path_is_absolute(uri) && secure) { + dest = song_file_load(uri, NULL); + if (dest == NULL) + return NULL; + } else { + dest = db_get_song(uri); + if (dest == NULL) + /* not found in database */ + return NULL; + } + + return apply_song_metadata(dest, song); +} + struct song * playlist_check_translate_song(struct song *song, const char *base_uri, bool secure) { - struct song *dest; - if (song_in_database(song)) /* already ok */ return song; @@ -135,27 +154,8 @@ playlist_check_translate_song(struct song *song, const char *base_uri, else uri = g_strdup(uri); - if (uri_has_scheme(uri)) { - dest = song_remote_new(uri); - g_free(uri); - } else if (g_path_is_absolute(uri) && secure) { - dest = song_file_load(uri, NULL); - if (dest == NULL) { - song_free(song); - return NULL; - } - } else { - dest = db_get_song(uri); - g_free(uri); - if (dest == NULL) { - /* not found in database */ - song_free(song); - return dest; - } - } - - dest = apply_song_metadata(dest, song); + struct song *dest = playlist_check_load_song(song, uri, secure); song_free(song); - + g_free(uri); return dest; } -- cgit v1.2.3 From 45ff3558358827ea60f6c0c8f2335e20c07293ed Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Tue, 14 Aug 2012 02:14:24 +0200 Subject: playlist_song: improve const-correctness --- src/playlist_song.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'src/playlist_song.c') diff --git a/src/playlist_song.c b/src/playlist_song.c index 85089a4d1..019ea8c55 100644 --- a/src/playlist_song.c +++ b/src/playlist_song.c @@ -112,7 +112,7 @@ playlist_check_translate_song(struct song *song, const char *base_uri, /* already ok */ return song; - char *uri = song->uri; + const char *uri = song->uri; if (uri_has_scheme(uri)) { if (uri_supported_scheme(uri)) @@ -149,13 +149,12 @@ playlist_check_translate_song(struct song *song, const char *base_uri, base_uri = NULL; } + char *allocated = NULL; if (base_uri != NULL) - uri = g_build_filename(base_uri, uri, NULL); - else - uri = g_strdup(uri); + uri = allocated = g_build_filename(base_uri, uri, NULL); struct song *dest = playlist_check_load_song(song, uri, secure); song_free(song); - g_free(uri); + g_free(allocated); return dest; } -- cgit v1.2.3 From adcd2c8eacd74aeb072b806a3c36922ca2ad753d Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Tue, 14 Aug 2012 02:12:36 +0200 Subject: playlist_song: use map_to_relative_path() --- src/playlist_song.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/playlist_song.c') diff --git a/src/playlist_song.c b/src/playlist_song.c index 019ea8c55..88ef1059d 100644 --- a/src/playlist_song.c +++ b/src/playlist_song.c @@ -134,11 +134,11 @@ playlist_check_translate_song(struct song *song, const char *base_uri, if (g_path_is_absolute(uri)) { /* XXX fs_charset vs utf8? */ - const char *prefix = mapper_get_music_directory(); + const char *suffix = map_to_relative_path(uri); + assert(suffix != NULL); - if (prefix != NULL && g_str_has_prefix(uri, prefix) && - uri[strlen(prefix)] == '/') - uri += strlen(prefix) + 1; + if (suffix != uri) + uri = suffix; else if (!secure) { /* local files must be relative to the music directory when "secure" is enabled */ -- cgit v1.2.3