playlist_song: move code to playlist_check_load_song()

This commit is contained in:
Max Kellermann 2012-08-14 02:17:20 +02:00
parent f703da1516
commit f8bf3afeae
1 changed files with 23 additions and 23 deletions

View File

@ -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) {
struct song *dest = playlist_check_load_song(song, uri, secure);
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);
song_free(song);
return dest;
}