Playlist: use the Error library to return errors

This commit is contained in:
Max Kellermann
2014-02-27 17:27:23 +01:00
parent 809b89b5af
commit 1c772ef699
9 changed files with 83 additions and 82 deletions

View File

@@ -66,16 +66,14 @@ handle_load(Client &client, int argc, char *argv[])
} else if (!check_range(client, &start_index, &end_index, argv[2]))
return CommandResult::ERROR;
const SongLoader loader(client);
const PlaylistResult result =
playlist_open_into_queue(argv[1],
start_index, end_index,
client.playlist,
client.player_control, loader);
if (result != PlaylistResult::NO_SUCH_LIST)
return print_playlist_result(client, result);
Error error;
const SongLoader loader(client);
if (!playlist_open_into_queue(argv[1],
start_index, end_index,
client.playlist,
client.player_control, loader, error))
return print_error(client, error);
if (playlist_load_spl(client.playlist, client.player_control,
argv[1], start_index, end_index,
error))

View File

@@ -64,8 +64,12 @@ handle_add(Client &client, gcc_unused int argc, char *argv[])
if (uri_has_scheme(uri) || PathTraitsUTF8::IsAbsolute(uri)) {
const SongLoader loader(client);
auto result = client.partition.AppendURI(loader, uri);
return print_playlist_result(client, result);
Error error;
unsigned id = client.partition.AppendURI(loader, uri, error);
if (id == 0)
return print_error(client, error);
return CommandResult::OK;
}
#ifdef ENABLE_DATABASE
@@ -88,18 +92,16 @@ handle_addid(Client &client, int argc, char *argv[])
return CommandResult::ERROR;
const SongLoader loader(client);
unsigned added_id;
auto result = client.partition.AppendURI(loader, uri, &added_id);
if (result != PlaylistResult::SUCCESS)
return print_playlist_result(client, result);
Error error;
unsigned added_id = client.partition.AppendURI(loader, uri, error);
if (added_id == 0)
return print_error(client, error);
if (argc == 3) {
unsigned to;
if (!check_unsigned(client, &to, argv[2]))
return CommandResult::ERROR;
result = client.partition.MoveId(added_id, to);
PlaylistResult result = client.partition.MoveId(added_id, to);
if (result != PlaylistResult::SUCCESS) {
CommandResult ret =
print_playlist_result(client, result);