summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/actions.cpp20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/actions.cpp b/src/actions.cpp
index 3cde6286..32d51af3 100644
--- a/src/actions.cpp
+++ b/src/actions.cpp
@@ -953,16 +953,18 @@ void Add::run()
Mpd.AddToPlaylist(myPlaylistEditor->Playlists.current()->value().path(), path);
else
{
- const char lastfm_url[] = "lastfm://";
- if (path.compare(0, const_strlen(lastfm_url), lastfm_url) == 0
- || path.find(".asx", path.length()-4) != std::string::npos
- || path.find(".cue", path.length()-4) != std::string::npos
- || path.find(".m3u", path.length()-4) != std::string::npos
- || path.find(".pls", path.length()-4) != std::string::npos
- || path.find(".xspf", path.length()-5) != std::string::npos)
- Mpd.LoadPlaylist(path);
- else
+ try
+ {
Mpd.Add(path);
+ }
+ catch (MPD::ServerError &err)
+ {
+ // If a path is not a file or directory, assume it is a playlist.
+ if (err.code() == MPD_SERVER_ERROR_NO_EXIST)
+ Mpd.LoadPlaylist(path);
+ else
+ throw;
+ }
}
}