aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/playlist.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/src/playlist.c b/src/playlist.c
index dc098a03f..dfbc31514 100644
--- a/src/playlist.c
+++ b/src/playlist.c
@@ -521,17 +521,30 @@ static void clearPlayerQueue(void)
pc_cancel();
}
+static struct song *
+song_by_url(const char *url)
+{
+ struct song *song;
+
+ song = db_get_song(url);
+ if (song != NULL)
+ return song;
+
+ if (isValidRemoteUtf8Url(url))
+ return song_remote_new(url);
+
+ return NULL;
+}
+
enum playlist_result addToPlaylist(const char *url, int *added_id)
{
struct song *song;
DEBUG("add to playlist: %s\n", url);
- if ((song = db_get_song(url))) {
- } else if (!(isValidRemoteUtf8Url(url) &&
- (song = song_remote_new(url)))) {
+ song = song_by_url(url);
+ if (song == NULL)
return PLAYLIST_RESULT_NO_SUCH_SONG;
- }
return addSongToPlaylist(song, added_id);
}