From fe0b6a111701624cbbd14b942d494795c98044d8 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 28 Dec 2015 06:43:41 +0100 Subject: [PATCH] PlaylistFile: convert system_error::ENOENT to PlaylistResult::NO_SUCH_LIST --- src/PlaylistError.hxx | 5 +++++ src/PlaylistFile.cxx | 12 ++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/PlaylistError.hxx b/src/PlaylistError.hxx index dc8595c30..40282be1e 100644 --- a/src/PlaylistError.hxx +++ b/src/PlaylistError.hxx @@ -55,6 +55,11 @@ public: "No such song"); } + static PlaylistError NoSuchList() { + return PlaylistError(PlaylistResult::NO_SUCH_LIST, + "No such playlist"); + } + static PlaylistError BadRange() { return PlaylistError(PlaylistResult::BAD_RANGE, "Bad song index"); diff --git a/src/PlaylistFile.cxx b/src/PlaylistFile.cxx index 8b86afcfc..ae7c16447 100644 --- a/src/PlaylistFile.cxx +++ b/src/PlaylistFile.cxx @@ -247,7 +247,7 @@ SavePlaylistFile(const PlaylistFileContents &contents, const char *utf8path, PlaylistFileContents LoadPlaylistFile(const char *utf8path, Error &error) -{ +try { PlaylistFileContents contents; const auto path_fs = spl_map_to_fs(utf8path, error); @@ -301,6 +301,10 @@ LoadPlaylistFile(const char *utf8path, Error &error) } return contents; +} catch (const std::system_error &e) { + if (IsFileNotFound(e)) + throw PlaylistError::NoSuchList(); + throw; } bool @@ -393,7 +397,7 @@ spl_remove_index(const char *utf8path, unsigned pos, Error &error) bool spl_append_song(const char *utf8path, const DetachedSong &song, Error &error) -{ +try { const auto path_fs = spl_map_to_fs(utf8path, error); if (path_fs.IsNull()) return false; @@ -415,6 +419,10 @@ spl_append_song(const char *utf8path, const DetachedSong &song, Error &error) idle_add(IDLE_STORED_PLAYLIST); return true; +} catch (const std::system_error &e) { + if (IsFileNotFound(e)) + throw PlaylistError::NoSuchList(); + throw; } bool