aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/playlist_song.c46
1 files changed, 23 insertions, 23 deletions
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;
}