Commit cf4d80fc authored by Max Kellermann's avatar Max Kellermann

command: convert command_return to to a strictly-typed enum

parent 8118bc93
......@@ -54,7 +54,6 @@ src_mpd_LDADD = \
mpd_headers = \
src/check.h \
src/command.h \
src/gerror.h \
src/TextInputStream.hxx \
src/AudioCompress/config.h \
......@@ -79,6 +78,7 @@ src_mpd_SOURCES = \
src/protocol/Ack.cxx src/protocol/Ack.hxx \
src/protocol/ArgParser.cxx src/protocol/ArgParser.hxx \
src/protocol/Result.cxx src/protocol/Result.hxx \
src/CommandResult.hxx \
src/CommandError.cxx src/CommandError.hxx \
src/AllCommands.cxx src/AllCommands.hxx \
src/QueueCommands.cxx src/QueueCommands.hxx \
......
......@@ -19,7 +19,6 @@
#include "config.h"
#include "AllCommands.hxx"
#include "command.h"
#include "QueueCommands.hxx"
#include "PlayerCommands.hxx"
#include "PlaylistCommands.hxx"
......@@ -56,14 +55,14 @@ struct command {
unsigned permission;
int min;
int max;
enum command_return (*handler)(Client &client, int argc, char **argv);
CommandResult (*handler)(Client &client, int argc, char **argv);
};
/* don't be fooled, this is the command handler for "commands" command */
static enum command_return
static CommandResult
handle_commands(Client &client, int argc, char *argv[]);
static enum command_return
static CommandResult
handle_not_commands(Client &client, int argc, char *argv[]);
/**
......@@ -178,7 +177,7 @@ command_available(gcc_unused const struct command *cmd)
}
/* don't be fooled, this is the command handler for "commands" command */
static enum command_return
static CommandResult
handle_commands(Client &client,
gcc_unused int argc, gcc_unused char *argv[])
{
......@@ -193,10 +192,10 @@ handle_commands(Client &client,
client_printf(client, "command: %s\n", cmd->cmd);
}
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
static enum command_return
static CommandResult
handle_not_commands(Client &client,
gcc_unused int argc, gcc_unused char *argv[])
{
......@@ -210,7 +209,7 @@ handle_not_commands(Client &client,
client_printf(client, "command: %s\n", cmd->cmd);
}
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
void command_init(void)
......@@ -308,13 +307,13 @@ command_checked_lookup(Client &client, unsigned permission,
return cmd;
}
enum command_return
CommandResult
command_process(Client &client, unsigned num, char *line)
{
Error error;
char *argv[COMMAND_ARGV_MAX] = { nullptr };
const struct command *cmd;
enum command_return ret = COMMAND_RETURN_ERROR;
CommandResult ret = CommandResult::ERROR;
command_list_num = num;
......@@ -333,7 +332,7 @@ command_process(Client &client, unsigned num, char *line)
current_command = nullptr;
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
unsigned argc = 1;
......@@ -353,13 +352,13 @@ command_process(Client &client, unsigned num, char *line)
if (argc >= COMMAND_ARGV_MAX) {
command_error(client, ACK_ERROR_ARG, "Too many arguments");
current_command = nullptr;
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
if (!tokenizer.IsEnd()) {
command_error(client, ACK_ERROR_ARG, "%s", error.GetMessage());
current_command = nullptr;
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
/* look up and invoke the command handler */
......
......@@ -20,7 +20,7 @@
#ifndef MPD_ALL_COMMANDS_HXX
#define MPD_ALL_COMMANDS_HXX
#include "command.h"
#include "CommandResult.hxx"
class Client;
......@@ -28,7 +28,7 @@ void command_init(void);
void command_finish(void);
enum command_return
CommandResult
command_process(Client &client, unsigned num, char *line);
#endif
......@@ -22,7 +22,7 @@
#include "check.h"
#include "Client.hxx"
#include "command.h"
#include "CommandResult.hxx"
enum {
CLIENT_MAX_SUBSCRIPTIONS = 16,
......@@ -35,7 +35,7 @@ extern int client_timeout;
extern size_t client_max_command_list_size;
extern size_t client_max_output_buffer_size;
enum command_return
CommandResult
client_process_line(Client &client, char *line);
#endif
......@@ -29,11 +29,11 @@
#define CLIENT_LIST_OK_MODE_BEGIN "command_list_ok_begin"
#define CLIENT_LIST_MODE_END "command_list_end"
static enum command_return
static CommandResult
client_process_command_list(Client &client, bool list_ok,
std::list<std::string> &&list)
{
enum command_return ret = COMMAND_RETURN_OK;
CommandResult ret = CommandResult::OK;
unsigned num = 0;
for (auto &&i : list) {
......@@ -42,7 +42,7 @@ client_process_command_list(Client &client, bool list_ok,
FormatDebug(client_domain, "process command \"%s\"", cmd);
ret = command_process(client, num++, cmd);
FormatDebug(client_domain, "command returned %i", ret);
if (ret != COMMAND_RETURN_OK || client.IsExpired())
if (ret != CommandResult::OK || client.IsExpired())
break;
else if (list_ok)
client_puts(client, "list_OK\n");
......@@ -51,10 +51,10 @@ client_process_command_list(Client &client, bool list_ok,
return ret;
}
enum command_return
CommandResult
client_process_line(Client &client, char *line)
{
enum command_return ret;
CommandResult ret;
if (strcmp(line, "noidle") == 0) {
if (client.idle_waiting) {
......@@ -67,14 +67,14 @@ client_process_line(Client &client, char *line)
has already received the full idle response from
client_idle_notify(), which he can now evaluate */
return COMMAND_RETURN_OK;
return CommandResult::OK;
} else if (client.idle_waiting) {
/* during idle mode, clients must not send anything
except "noidle" */
FormatWarning(client_domain,
"[%u] command \"%s\" during idle",
client.num, line);
return COMMAND_RETURN_CLOSE;
return CommandResult::CLOSE;
}
if (client.cmd_list.IsActive()) {
......@@ -92,11 +92,11 @@ client_process_line(Client &client, char *line)
"[%u] process command "
"list returned %i", client.num, ret);
if (ret == COMMAND_RETURN_CLOSE ||
if (ret == CommandResult::CLOSE ||
client.IsExpired())
return COMMAND_RETURN_CLOSE;
return CommandResult::CLOSE;
if (ret == COMMAND_RETURN_OK)
if (ret == CommandResult::OK)
command_success(client);
client.cmd_list.Reset();
......@@ -107,18 +107,18 @@ client_process_line(Client &client, char *line)
"is larger than the max (%lu)",
client.num,
(unsigned long)client_max_command_list_size);
return COMMAND_RETURN_CLOSE;
return CommandResult::CLOSE;
}
ret = COMMAND_RETURN_OK;
ret = CommandResult::OK;
}
} else {
if (strcmp(line, CLIENT_LIST_MODE_BEGIN) == 0) {
client.cmd_list.Begin(false);
ret = COMMAND_RETURN_OK;
ret = CommandResult::OK;
} else if (strcmp(line, CLIENT_LIST_OK_MODE_BEGIN) == 0) {
client.cmd_list.Begin(true);
ret = COMMAND_RETURN_OK;
ret = CommandResult::OK;
} else {
FormatDebug(client_domain,
"[%u] process command \"%s\"",
......@@ -128,11 +128,11 @@ client_process_line(Client &client, char *line)
"[%u] command returned %i",
client.num, ret);
if (ret == COMMAND_RETURN_CLOSE ||
if (ret == CommandResult::CLOSE ||
client.IsExpired())
return COMMAND_RETURN_CLOSE;
return CommandResult::CLOSE;
if (ret == COMMAND_RETURN_OK)
if (ret == CommandResult::OK)
command_success(client);
}
}
......
......@@ -40,19 +40,19 @@ Client::OnSocketInput(void *data, size_t length)
BufferedSocket::ConsumeInput(newline + 1 - p);
enum command_return result = client_process_line(*this, p);
CommandResult result = client_process_line(*this, p);
switch (result) {
case COMMAND_RETURN_OK:
case COMMAND_RETURN_IDLE:
case COMMAND_RETURN_ERROR:
case CommandResult::OK:
case CommandResult::IDLE:
case CommandResult::ERROR:
break;
case COMMAND_RETURN_KILL:
case CommandResult::KILL:
Close();
main_loop->Break();
return InputResult::CLOSED;
case COMMAND_RETURN_CLOSE:
case CommandResult::CLOSE:
Close();
return InputResult::CLOSED;
}
......
......@@ -29,66 +29,66 @@
#include <assert.h>
#include <errno.h>
enum command_return
CommandResult
print_playlist_result(Client &client, PlaylistResult result)
{
switch (result) {
case PlaylistResult::SUCCESS:
return COMMAND_RETURN_OK;
return CommandResult::OK;
case PlaylistResult::ERRNO:
command_error(client, ACK_ERROR_SYSTEM, "%s",
g_strerror(errno));
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
case PlaylistResult::DENIED:
command_error(client, ACK_ERROR_PERMISSION, "Access denied");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
case PlaylistResult::NO_SUCH_SONG:
command_error(client, ACK_ERROR_NO_EXIST, "No such song");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
case PlaylistResult::NO_SUCH_LIST:
command_error(client, ACK_ERROR_NO_EXIST, "No such playlist");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
case PlaylistResult::LIST_EXISTS:
command_error(client, ACK_ERROR_EXIST,
"Playlist already exists");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
case PlaylistResult::BAD_NAME:
command_error(client, ACK_ERROR_ARG,
"playlist name is invalid: "
"playlist names may not contain slashes,"
" newlines or carriage returns");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
case PlaylistResult::BAD_RANGE:
command_error(client, ACK_ERROR_ARG, "Bad song index");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
case PlaylistResult::NOT_PLAYING:
command_error(client, ACK_ERROR_PLAYER_SYNC, "Not playing");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
case PlaylistResult::TOO_LARGE:
command_error(client, ACK_ERROR_PLAYLIST_MAX,
"playlist is at the max size");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
case PlaylistResult::DISABLED:
command_error(client, ACK_ERROR_UNKNOWN,
"stored playlist support is disabled");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
assert(0);
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
enum command_return
CommandResult
print_error(Client &client, const Error &error)
{
assert(error.IsDefined());
......@@ -101,24 +101,24 @@ print_error(Client &client, const Error &error)
} else if (error.IsDomain(ack_domain)) {
command_error(client, (ack)error.GetCode(),
"%s", error.GetMessage());
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
} else if (error.IsDomain(db_domain)) {
switch ((enum db_error)error.GetCode()) {
case DB_DISABLED:
command_error(client, ACK_ERROR_NO_EXIST, "%s",
error.GetMessage());
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
case DB_NOT_FOUND:
command_error(client, ACK_ERROR_NO_EXIST, "Not found");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
} else if (error.IsDomain(errno_domain)) {
command_error(client, ACK_ERROR_SYSTEM, "%s",
g_strerror(error.GetCode()));
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
command_error(client, ACK_ERROR_UNKNOWN, "error");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
......@@ -20,19 +20,19 @@
#ifndef MPD_COMMAND_ERROR_HXX
#define MPD_COMMAND_ERROR_HXX
#include "command.h"
#include "CommandResult.hxx"
#include "PlaylistError.hxx"
class Client;
class Error;
enum command_return
CommandResult
print_playlist_result(Client &client, PlaylistResult result);
/**
* Send the #Error to the client.
*/
enum command_return
CommandResult
print_error(Client &client, const Error &error);
#endif
......@@ -17,37 +17,45 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef MPD_COMMAND_H
#define MPD_COMMAND_H
#ifndef MPD_COMMAND_RESULT_HXX
#define MPD_COMMAND_RESULT_HXX
enum command_return {
#ifdef WIN32
#include <windows.h>
/* damn you, windows.h! */
#ifdef ERROR
#undef ERROR
#endif
#endif
enum class CommandResult {
/**
* The command has succeeded, but the "OK" response was not
* yet sent to the client.
*/
COMMAND_RETURN_OK,
OK,
/**
* The connection is now in "idle" mode, and no response shall
* be generated.
*/
COMMAND_RETURN_IDLE,
IDLE,
/**
* There was an error. The "ACK" response was sent to the
* client.
*/
COMMAND_RETURN_ERROR,
ERROR,
/**
* The connection to this client shall be closed.
*/
COMMAND_RETURN_CLOSE,
CLOSE,
/**
* The MPD process shall be shut down.
*/
COMMAND_RETURN_KILL,
KILL,
};
#endif
......@@ -34,7 +34,7 @@
#include <assert.h>
#include <string.h>
enum command_return
CommandResult
handle_lsinfo2(Client &client, int argc, char *argv[])
{
const char *uri;
......@@ -51,67 +51,67 @@ handle_lsinfo2(Client &client, int argc, char *argv[])
if (!db_selection_print(client, selection, true, error))
return print_error(client, error);
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
static enum command_return
static CommandResult
handle_match(Client &client, int argc, char *argv[], bool fold_case)
{
SongFilter filter;
if (!filter.Parse(argc - 1, argv + 1, fold_case)) {
command_error(client, ACK_ERROR_ARG, "incorrect arguments");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
const DatabaseSelection selection("", true, &filter);
Error error;
return db_selection_print(client, selection, true, error)
? COMMAND_RETURN_OK
? CommandResult::OK
: print_error(client, error);
}
enum command_return
CommandResult
handle_find(Client &client, int argc, char *argv[])
{
return handle_match(client, argc, argv, false);
}
enum command_return
CommandResult
handle_search(Client &client, int argc, char *argv[])
{
return handle_match(client, argc, argv, true);
}
static enum command_return
static CommandResult
handle_match_add(Client &client, int argc, char *argv[], bool fold_case)
{
SongFilter filter;
if (!filter.Parse(argc - 1, argv + 1, fold_case)) {
command_error(client, ACK_ERROR_ARG, "incorrect arguments");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
const DatabaseSelection selection("", true, &filter);
Error error;
return AddFromDatabase(client.partition, selection, error)
? COMMAND_RETURN_OK
? CommandResult::OK
: print_error(client, error);
}
enum command_return
CommandResult
handle_findadd(Client &client, int argc, char *argv[])
{
return handle_match_add(client, argc, argv, false);
}
enum command_return
CommandResult
handle_searchadd(Client &client, int argc, char *argv[])
{
return handle_match_add(client, argc, argv, true);
}
enum command_return
CommandResult
handle_searchaddpl(Client &client, int argc, char *argv[])
{
const char *playlist = argv[1];
......@@ -119,31 +119,31 @@ handle_searchaddpl(Client &client, int argc, char *argv[])
SongFilter filter;
if (!filter.Parse(argc - 2, argv + 2, true)) {
command_error(client, ACK_ERROR_ARG, "incorrect arguments");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
Error error;
return search_add_to_playlist("", playlist, &filter, error)
? COMMAND_RETURN_OK
? CommandResult::OK
: print_error(client, error);
}
enum command_return
CommandResult
handle_count(Client &client, int argc, char *argv[])
{
SongFilter filter;
if (!filter.Parse(argc - 1, argv + 1, false)) {
command_error(client, ACK_ERROR_ARG, "incorrect arguments");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
Error error;
return searchStatsForSongsIn(client, "", &filter, error)
? COMMAND_RETURN_OK
? CommandResult::OK
: print_error(client, error);
}
enum command_return
CommandResult
handle_listall(Client &client, gcc_unused int argc, char *argv[])
{
const char *directory = "";
......@@ -153,24 +153,24 @@ handle_listall(Client &client, gcc_unused int argc, char *argv[])
Error error;
return printAllIn(client, directory, error)
? COMMAND_RETURN_OK
? CommandResult::OK
: print_error(client, error);
}
enum command_return
CommandResult
handle_list(Client &client, int argc, char *argv[])
{
unsigned tagType = locate_parse_type(argv[1]);
if (tagType == TAG_NUM_OF_ITEM_TYPES) {
command_error(client, ACK_ERROR_ARG, "\"%s\" is not known", argv[1]);
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
if (tagType == LOCATE_TAG_ANY_TYPE) {
command_error(client, ACK_ERROR_ARG,
"\"any\" is not a valid return tag type");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
/* for compatibility with < 0.12.0 */
......@@ -180,7 +180,7 @@ handle_list(Client &client, int argc, char *argv[])
command_error(client, ACK_ERROR_ARG,
"should be \"%s\" for 3 arguments",
tag_item_names[TAG_ALBUM]);
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
filter = new SongFilter((unsigned)TAG_ARTIST, argv[2]);
......@@ -190,15 +190,15 @@ handle_list(Client &client, int argc, char *argv[])
delete filter;
command_error(client, ACK_ERROR_ARG,
"not able to parse args");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
} else
filter = nullptr;
Error error;
enum command_return ret =
CommandResult ret =
listAllUniqueTags(client, tagType, filter, error)
? COMMAND_RETURN_OK
? CommandResult::OK
: print_error(client, error);
delete filter;
......@@ -206,7 +206,7 @@ handle_list(Client &client, int argc, char *argv[])
return ret;
}
enum command_return
CommandResult
handle_listallinfo(Client &client, gcc_unused int argc, char *argv[])
{
const char *directory = "";
......@@ -216,6 +216,6 @@ handle_listallinfo(Client &client, gcc_unused int argc, char *argv[])
Error error;
return printInfoForAllIn(client, directory, error)
? COMMAND_RETURN_OK
? CommandResult::OK
: print_error(client, error);
}
......@@ -20,38 +20,38 @@
#ifndef MPD_DATABASE_COMMANDS_HXX
#define MPD_DATABASE_COMMANDS_HXX
#include "command.h"
#include "CommandResult.hxx"
class Client;
enum command_return
CommandResult
handle_lsinfo2(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_find(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_findadd(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_search(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_searchadd(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_searchaddpl(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_count(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_listall(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_list(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_listallinfo(Client &client, int argc, char *argv[]);
#endif
......@@ -31,29 +31,29 @@
#include <assert.h>
enum command_return
CommandResult
handle_subscribe(Client &client, gcc_unused int argc, char *argv[])
{
assert(argc == 2);
switch (client.Subscribe(argv[1])) {
case Client::SubscribeResult::OK:
return COMMAND_RETURN_OK;
return CommandResult::OK;
case Client::SubscribeResult::INVALID:
command_error(client, ACK_ERROR_ARG,
"invalid channel name");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
case Client::SubscribeResult::ALREADY:
command_error(client, ACK_ERROR_EXIST,
"already subscribed to this channel");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
case Client::SubscribeResult::FULL:
command_error(client, ACK_ERROR_EXIST,
"subscription list is full");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
/* unreachable */
......@@ -61,21 +61,21 @@ handle_subscribe(Client &client, gcc_unused int argc, char *argv[])
gcc_unreachable();
}
enum command_return
CommandResult
handle_unsubscribe(Client &client, gcc_unused int argc, char *argv[])
{
assert(argc == 2);
if (client.Unsubscribe(argv[1]))
return COMMAND_RETURN_OK;
return CommandResult::OK;
else {
command_error(client, ACK_ERROR_NO_EXIST,
"not subscribed to this channel");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
}
enum command_return
CommandResult
handle_channels(Client &client,
gcc_unused int argc, gcc_unused char *argv[])
{
......@@ -89,10 +89,10 @@ handle_channels(Client &client,
for (const auto &channel : channels)
client_printf(client, "channel: %s\n", channel.c_str());
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
enum command_return
CommandResult
handle_read_messages(Client &client,
gcc_unused int argc, gcc_unused char *argv[])
{
......@@ -106,10 +106,10 @@ handle_read_messages(Client &client,
client.messages.pop_front();
}
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
enum command_return
CommandResult
handle_send_message(Client &client,
gcc_unused int argc, gcc_unused char *argv[])
{
......@@ -118,7 +118,7 @@ handle_send_message(Client &client,
if (!client_message_valid_channel_name(argv[1])) {
command_error(client, ACK_ERROR_ARG,
"invalid channel name");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
bool sent = false;
......@@ -128,10 +128,10 @@ handle_send_message(Client &client,
sent = true;
if (sent)
return COMMAND_RETURN_OK;
return CommandResult::OK;
else {
command_error(client, ACK_ERROR_NO_EXIST,
"nobody is subscribed to this channel");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
}
......@@ -20,23 +20,23 @@
#ifndef MPD_MESSAGE_COMMANDS_HXX
#define MPD_MESSAGE_COMMANDS_HXX
#include "command.h"
#include "CommandResult.hxx"
class Client;
enum command_return
CommandResult
handle_subscribe(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_unsubscribe(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_channels(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_read_messages(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_send_message(Client &client, int argc, char *argv[]);
#endif
......@@ -63,47 +63,47 @@ print_spl_list(Client &client, const PlaylistVector &list)
}
}
enum command_return
CommandResult
handle_urlhandlers(Client &client,
gcc_unused int argc, gcc_unused char *argv[])
{
if (client.IsLocal())
client_puts(client, "handler: file://\n");
print_supported_uri_schemes(client);
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
enum command_return
CommandResult
handle_decoders(Client &client,
gcc_unused int argc, gcc_unused char *argv[])
{
decoder_list_print(client);
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
enum command_return
CommandResult
handle_tagtypes(Client &client,
gcc_unused int argc, gcc_unused char *argv[])
{
tag_print_types(client);
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
enum command_return
CommandResult
handle_kill(gcc_unused Client &client,
gcc_unused int argc, gcc_unused char *argv[])
{
return COMMAND_RETURN_KILL;
return CommandResult::KILL;
}
enum command_return
CommandResult
handle_close(gcc_unused Client &client,
gcc_unused int argc, gcc_unused char *argv[])
{
return COMMAND_RETURN_CLOSE;
return CommandResult::CLOSE;
}
enum command_return
CommandResult
handle_lsinfo(Client &client, int argc, char *argv[])
{
const char *uri;
......@@ -122,7 +122,7 @@ handle_lsinfo(Client &client, int argc, char *argv[])
if (path_fs.IsNull()) {
command_error(client, ACK_ERROR_NO_EXIST,
"unsupported file name");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
Error error;
......@@ -133,16 +133,16 @@ handle_lsinfo(Client &client, int argc, char *argv[])
if (song == NULL) {
command_error(client, ACK_ERROR_NO_EXIST,
"No such file");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
song_print_info(client, *song);
song->Free();
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
enum command_return result = handle_lsinfo2(client, argc, argv);
if (result != COMMAND_RETURN_OK)
CommandResult result = handle_lsinfo2(client, argc, argv);
if (result != CommandResult::OK)
return result;
if (isRootDirectory(uri)) {
......@@ -151,10 +151,10 @@ handle_lsinfo(Client &client, int argc, char *argv[])
print_spl_list(client, list);
}
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
enum command_return
CommandResult
handle_update(Client &client, gcc_unused int argc, char *argv[])
{
const char *path = "";
......@@ -170,22 +170,22 @@ handle_update(Client &client, gcc_unused int argc, char *argv[])
else if (!uri_safe_local(path)) {
command_error(client, ACK_ERROR_ARG,
"Malformed path");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
}
ret = update_enqueue(path, false);
if (ret > 0) {
client_printf(client, "updating_db: %i\n", ret);
return COMMAND_RETURN_OK;
return CommandResult::OK;
} else {
command_error(client, ACK_ERROR_UPDATE_ALREADY,
"already updating");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
}
enum command_return
CommandResult
handle_rescan(Client &client, gcc_unused int argc, char *argv[])
{
const char *path = "";
......@@ -198,93 +198,93 @@ handle_rescan(Client &client, gcc_unused int argc, char *argv[])
if (!uri_safe_local(path)) {
command_error(client, ACK_ERROR_ARG,
"Malformed path");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
}
ret = update_enqueue(path, true);
if (ret > 0) {
client_printf(client, "updating_db: %i\n", ret);
return COMMAND_RETURN_OK;
return CommandResult::OK;
} else {
command_error(client, ACK_ERROR_UPDATE_ALREADY,
"already updating");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
}
enum command_return
CommandResult
handle_setvol(Client &client, gcc_unused int argc, char *argv[])
{
unsigned level;
bool success;
if (!check_unsigned(client, &level, argv[1]))
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
if (level > 100) {
command_error(client, ACK_ERROR_ARG, "Invalid volume value");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
success = volume_level_change(level);
if (!success) {
command_error(client, ACK_ERROR_SYSTEM,
"problems setting volume");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
enum command_return
CommandResult
handle_stats(Client &client,
gcc_unused int argc, gcc_unused char *argv[])
{
stats_print(client);
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
enum command_return
CommandResult
handle_ping(gcc_unused Client &client,
gcc_unused int argc, gcc_unused char *argv[])
{
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
enum command_return
CommandResult
handle_password(Client &client, gcc_unused int argc, char *argv[])
{
unsigned permission = 0;
if (getPermissionFromPassword(argv[1], &permission) < 0) {
command_error(client, ACK_ERROR_PASSWORD, "incorrect password");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
client.SetPermission(permission);
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
enum command_return
CommandResult
handle_config(Client &client,
gcc_unused int argc, gcc_unused char *argv[])
{
if (!client.IsLocal()) {
command_error(client, ACK_ERROR_PERMISSION,
"Command only permitted to local clients");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
const char *path = mapper_get_music_directory_utf8();
if (path != NULL)
client_printf(client, "music_directory: %s\n", path);
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
enum command_return
CommandResult
handle_idle(Client &client,
gcc_unused int argc, gcc_unused char *argv[])
{
......@@ -311,5 +311,5 @@ handle_idle(Client &client,
/* enable "idle" mode on this client */
client.IdleWait(flags);
return COMMAND_RETURN_IDLE;
return CommandResult::IDLE;
}
......@@ -20,50 +20,50 @@
#ifndef MPD_OTHER_COMMANDS_HXX
#define MPD_OTHER_COMMANDS_HXX
#include "command.h"
#include "CommandResult.hxx"
class Client;
enum command_return
CommandResult
handle_urlhandlers(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_decoders(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_tagtypes(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_kill(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_close(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_lsinfo(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_update(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_rescan(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_setvol(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_stats(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_ping(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_password(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_config(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_idle(Client &client, int argc, char *argv[]);
#endif
......@@ -26,65 +26,65 @@
#include <string.h>
enum command_return
CommandResult
handle_enableoutput(Client &client, gcc_unused int argc, char *argv[])
{
unsigned device;
bool ret;
if (!check_unsigned(client, &device, argv[1]))
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
ret = audio_output_enable_index(device);
if (!ret) {
command_error(client, ACK_ERROR_NO_EXIST,
"No such audio output");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
enum command_return
CommandResult
handle_disableoutput(Client &client, gcc_unused int argc, char *argv[])
{
unsigned device;
bool ret;
if (!check_unsigned(client, &device, argv[1]))
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
ret = audio_output_disable_index(device);
if (!ret) {
command_error(client, ACK_ERROR_NO_EXIST,
"No such audio output");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
enum command_return
CommandResult
handle_toggleoutput(Client &client, gcc_unused int argc, char *argv[])
{
unsigned device;
if (!check_unsigned(client, &device, argv[1]))
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
if (!audio_output_toggle_index(device)) {
command_error(client, ACK_ERROR_NO_EXIST,
"No such audio output");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
enum command_return
CommandResult
handle_devices(Client &client,
gcc_unused int argc, gcc_unused char *argv[])
{
printAudioDevices(client);
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
......@@ -20,20 +20,20 @@
#ifndef MPD_OUTPUT_COMMANDS_HXX
#define MPD_OUTPUT_COMMANDS_HXX
#include "command.h"
#include "CommandResult.hxx"
class Client;
enum command_return
CommandResult
handle_enableoutput(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_disableoutput(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_toggleoutput(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_devices(Client &client, int argc, char *argv[]);
#endif
......@@ -52,62 +52,62 @@
#define COMMAND_STATUS_AUDIO "audio"
#define COMMAND_STATUS_UPDATING_DB "updating_db"
enum command_return
CommandResult
handle_play(Client &client, int argc, char *argv[])
{
int song = -1;
if (argc == 2 && !check_int(client, &song, argv[1]))
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
PlaylistResult result = client.partition.PlayPosition(song);
return print_playlist_result(client, result);
}
enum command_return
CommandResult
handle_playid(Client &client, int argc, char *argv[])
{
int id = -1;
if (argc == 2 && !check_int(client, &id, argv[1]))
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
PlaylistResult result = client.partition.PlayId(id);
return print_playlist_result(client, result);
}
enum command_return
CommandResult
handle_stop(Client &client,
gcc_unused int argc, gcc_unused char *argv[])
{
client.partition.Stop();
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
enum command_return
CommandResult
handle_currentsong(Client &client,
gcc_unused int argc, gcc_unused char *argv[])
{
playlist_print_current(client, client.playlist);
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
enum command_return
CommandResult
handle_pause(Client &client,
int argc, char *argv[])
{
if (argc == 2) {
bool pause_flag;
if (!check_bool(client, &pause_flag, argv[1]))
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
client.player_control.SetPause(pause_flag);
} else
client.player_control.Pause();
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
enum command_return
CommandResult
handle_status(Client &client,
gcc_unused int argc, gcc_unused char *argv[])
{
......@@ -202,10 +202,10 @@ handle_status(Client &client,
song, playlist.PositionToId(song));
}
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
enum command_return
CommandResult
handle_next(Client &client,
gcc_unused int argc, gcc_unused char *argv[])
{
......@@ -219,170 +219,170 @@ handle_next(Client &client,
client.partition.PlayNext();
playlist.queue.single = single;
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
enum command_return
CommandResult
handle_previous(Client &client,
gcc_unused int argc, gcc_unused char *argv[])
{
client.partition.PlayPrevious();
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
enum command_return
CommandResult
handle_repeat(Client &client, gcc_unused int argc, char *argv[])
{
bool status;
if (!check_bool(client, &status, argv[1]))
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
client.partition.SetRepeat(status);
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
enum command_return
CommandResult
handle_single(Client &client, gcc_unused int argc, char *argv[])
{
bool status;
if (!check_bool(client, &status, argv[1]))
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
client.partition.SetSingle(status);
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
enum command_return
CommandResult
handle_consume(Client &client, gcc_unused int argc, char *argv[])
{
bool status;
if (!check_bool(client, &status, argv[1]))
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
client.partition.SetConsume(status);
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
enum command_return
CommandResult
handle_random(Client &client, gcc_unused int argc, char *argv[])
{
bool status;
if (!check_bool(client, &status, argv[1]))
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
client.partition.SetRandom(status);
audio_output_all_set_replay_gain_mode(replay_gain_get_real_mode(client.partition.GetRandom()));
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
enum command_return
CommandResult
handle_clearerror(gcc_unused Client &client,
gcc_unused int argc, gcc_unused char *argv[])
{
client.player_control.ClearError();
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
enum command_return
CommandResult
handle_seek(Client &client, gcc_unused int argc, char *argv[])
{
unsigned song, seek_time;
if (!check_unsigned(client, &song, argv[1]))
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
if (!check_unsigned(client, &seek_time, argv[2]))
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
PlaylistResult result =
client.partition.SeekSongPosition(song, seek_time);
return print_playlist_result(client, result);
}
enum command_return
CommandResult
handle_seekid(Client &client, gcc_unused int argc, char *argv[])
{
unsigned id, seek_time;
if (!check_unsigned(client, &id, argv[1]))
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
if (!check_unsigned(client, &seek_time, argv[2]))
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
PlaylistResult result =
client.partition.SeekSongId(id, seek_time);
return print_playlist_result(client, result);
}
enum command_return
CommandResult
handle_seekcur(Client &client, gcc_unused int argc, char *argv[])
{
const char *p = argv[1];
bool relative = *p == '+' || *p == '-';
int seek_time;
if (!check_int(client, &seek_time, p))
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
PlaylistResult result =
client.partition.SeekCurrent(seek_time, relative);
return print_playlist_result(client, result);
}
enum command_return
CommandResult
handle_crossfade(Client &client, gcc_unused int argc, char *argv[])
{
unsigned xfade_time;
if (!check_unsigned(client, &xfade_time, argv[1]))
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
client.player_control.SetCrossFade(xfade_time);
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
enum command_return
CommandResult
handle_mixrampdb(Client &client, gcc_unused int argc, char *argv[])
{
float db;
if (!check_float(client, &db, argv[1]))
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
client.player_control.SetMixRampDb(db);
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
enum command_return
CommandResult
handle_mixrampdelay(Client &client, gcc_unused int argc, char *argv[])
{
float delay_secs;
if (!check_float(client, &delay_secs, argv[1]))
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
client.player_control.SetMixRampDelay(delay_secs);
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
enum command_return
CommandResult
handle_replay_gain_mode(Client &client,
gcc_unused int argc, char *argv[])
{
if (!replay_gain_set_mode_string(argv[1])) {
command_error(client, ACK_ERROR_ARG,
"Unrecognized replay gain mode");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
audio_output_all_set_replay_gain_mode(replay_gain_get_real_mode(client.playlist.queue.random));
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
enum command_return
CommandResult
handle_replay_gain_status(Client &client,
gcc_unused int argc, gcc_unused char *argv[])
{
client_printf(client, "replay_gain_mode: %s\n",
replay_gain_get_mode_string());
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
......@@ -20,71 +20,71 @@
#ifndef MPD_PLAYER_COMMANDS_HXX
#define MPD_PLAYER_COMMANDS_HXX
#include "command.h"
#include "CommandResult.hxx"
class Client;
enum command_return
CommandResult
handle_play(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_playid(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_stop(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_currentsong(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_pause(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_status(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_next(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_previous(Client &client, int argc, char *avg[]);
enum command_return
CommandResult
handle_repeat(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_single(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_consume(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_random(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_clearerror(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_seek(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_seekid(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_seekcur(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_crossfade(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_mixrampdb(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_mixrampdelay(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_replay_gain_mode(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_replay_gain_status(Client &client, int argc, char *argv[]);
#endif
......@@ -49,14 +49,14 @@ print_spl_list(Client &client, const PlaylistVector &list)
}
}
enum command_return
CommandResult
handle_save(Client &client, gcc_unused int argc, char *argv[])
{
PlaylistResult result = spl_save_playlist(argv[1], client.playlist);
return print_playlist_result(client, result);
}
enum command_return
CommandResult
handle_load(Client &client, int argc, char *argv[])
{
unsigned start_index, end_index;
......@@ -65,7 +65,7 @@ handle_load(Client &client, int argc, char *argv[])
start_index = 0;
end_index = unsigned(-1);
} else if (!check_range(client, &start_index, &end_index, argv[2]))
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
const PlaylistResult result =
playlist_open_into_queue(argv[1],
......@@ -79,7 +79,7 @@ handle_load(Client &client, int argc, char *argv[])
if (playlist_load_spl(client.playlist, client.player_control,
argv[1], start_index, end_index,
error))
return COMMAND_RETURN_OK;
return CommandResult::OK;
if (error.IsDomain(playlist_domain) &&
PlaylistResult(error.GetCode()) == PlaylistResult::BAD_NAME) {
......@@ -95,91 +95,91 @@ handle_load(Client &client, int argc, char *argv[])
return print_error(client, error);
}
enum command_return
CommandResult
handle_listplaylist(Client &client, gcc_unused int argc, char *argv[])
{
if (playlist_file_print(client, argv[1], false))
return COMMAND_RETURN_OK;
return CommandResult::OK;
Error error;
return spl_print(client, argv[1], false, error)
? COMMAND_RETURN_OK
? CommandResult::OK
: print_error(client, error);
}
enum command_return
CommandResult
handle_listplaylistinfo(Client &client,
gcc_unused int argc, char *argv[])
{
if (playlist_file_print(client, argv[1], true))
return COMMAND_RETURN_OK;
return CommandResult::OK;
Error error;
return spl_print(client, argv[1], true, error)
? COMMAND_RETURN_OK
? CommandResult::OK
: print_error(client, error);
}
enum command_return
CommandResult
handle_rm(Client &client, gcc_unused int argc, char *argv[])
{
Error error;
return spl_delete(argv[1], error)
? COMMAND_RETURN_OK
? CommandResult::OK
: print_error(client, error);
}
enum command_return
CommandResult
handle_rename(Client &client, gcc_unused int argc, char *argv[])
{
Error error;
return spl_rename(argv[1], argv[2], error)
? COMMAND_RETURN_OK
? CommandResult::OK
: print_error(client, error);
}
enum command_return
CommandResult
handle_playlistdelete(Client &client,
gcc_unused int argc, char *argv[]) {
char *playlist = argv[1];
unsigned from;
if (!check_unsigned(client, &from, argv[2]))
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
Error error;
return spl_remove_index(playlist, from, error)
? COMMAND_RETURN_OK
? CommandResult::OK
: print_error(client, error);
}
enum command_return
CommandResult
handle_playlistmove(Client &client, gcc_unused int argc, char *argv[])
{
char *playlist = argv[1];
unsigned from, to;
if (!check_unsigned(client, &from, argv[2]))
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
if (!check_unsigned(client, &to, argv[3]))
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
Error error;
return spl_move_index(playlist, from, to, error)
? COMMAND_RETURN_OK
? CommandResult::OK
: print_error(client, error);
}
enum command_return
CommandResult
handle_playlistclear(Client &client, gcc_unused int argc, char *argv[])
{
Error error;
return spl_clear(argv[1], error)
? COMMAND_RETURN_OK
? CommandResult::OK
: print_error(client, error);
}
enum command_return
CommandResult
handle_playlistadd(Client &client, gcc_unused int argc, char *argv[])
{
char *playlist = argv[1];
......@@ -191,7 +191,7 @@ handle_playlistadd(Client &client, gcc_unused int argc, char *argv[])
if (!uri_supported_scheme(uri)) {
command_error(client, ACK_ERROR_NO_EXIST,
"unsupported URI scheme");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
success = spl_append_uri(uri, playlist, error);
......@@ -202,13 +202,13 @@ handle_playlistadd(Client &client, gcc_unused int argc, char *argv[])
if (!success && !error.IsDefined()) {
command_error(client, ACK_ERROR_NO_EXIST,
"directory or file not found");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
return success ? COMMAND_RETURN_OK : print_error(client, error);
return success ? CommandResult::OK : print_error(client, error);
}
enum command_return
CommandResult
handle_listplaylists(Client &client,
gcc_unused int argc, gcc_unused char *argv[])
{
......@@ -218,5 +218,5 @@ handle_listplaylists(Client &client,
return print_error(client, error);
print_spl_list(client, list);
return COMMAND_RETURN_OK;
return CommandResult::OK;
}
......@@ -20,41 +20,41 @@
#ifndef MPD_PLAYLIST_COMMANDS_HXX
#define MPD_PLAYLIST_COMMANDS_HXX
#include "command.h"
#include "CommandResult.hxx"
class Client;
enum command_return
CommandResult
handle_save(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_load(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_listplaylist(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_listplaylistinfo(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_rm(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_rename(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_playlistdelete(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_playlistmove(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_playlistclear(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_playlistadd(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_listplaylists(Client &client, int argc, char *argv[]);
#endif
......@@ -20,65 +20,65 @@
#ifndef MPD_QUEUE_COMMANDS_HXX
#define MPD_QUEUE_COMMANDS_HXX
#include "command.h"
#include "CommandResult.hxx"
class Client;
enum command_return
CommandResult
handle_add(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_addid(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_delete(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_deleteid(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_playlist(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_shuffle(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_clear(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_plchanges(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_plchangesposid(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_playlistinfo(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_playlistid(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_playlistfind(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_playlistsearch(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_prio(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_prioid(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_move(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_moveid(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_swap(Client &client, int argc, char *argv[]);
enum command_return
CommandResult
handle_swapid(Client &client, int argc, char *argv[]);
#endif
......@@ -51,7 +51,7 @@ sticker_song_find_print_cb(Song &song, const char *value,
sticker_print_value(data->client, data->name, value);
}
static enum command_return
static CommandResult
handle_sticker_song(Client &client, int argc, char *argv[])
{
Error error;
......@@ -70,12 +70,12 @@ handle_sticker_song(Client &client, int argc, char *argv[])
if (value.empty()) {
command_error(client, ACK_ERROR_NO_EXIST,
"no such sticker");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
sticker_print_value(client, argv[4], value.c_str());
return COMMAND_RETURN_OK;
return CommandResult::OK;
/* list song song_id */
} else if (argc == 4 && strcmp(argv[1], "list") == 0) {
Song *song = db->GetSong(argv[3], error);
......@@ -89,7 +89,7 @@ handle_sticker_song(Client &client, int argc, char *argv[])
sticker_free(sticker);
}
return COMMAND_RETURN_OK;
return CommandResult::OK;
/* set song song_id id key */
} else if (argc == 6 && strcmp(argv[1], "set") == 0) {
Song *song = db->GetSong(argv[3], error);
......@@ -101,10 +101,10 @@ handle_sticker_song(Client &client, int argc, char *argv[])
if (!ret) {
command_error(client, ACK_ERROR_SYSTEM,
"failed to set sticker value");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
return COMMAND_RETURN_OK;
return CommandResult::OK;
/* delete song song_id [key] */
} else if ((argc == 4 || argc == 5) &&
strcmp(argv[1], "delete") == 0) {
......@@ -119,10 +119,10 @@ handle_sticker_song(Client &client, int argc, char *argv[])
if (!ret) {
command_error(client, ACK_ERROR_SYSTEM,
"no such sticker");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
return COMMAND_RETURN_OK;
return CommandResult::OK;
/* find song dir key */
} else if (argc == 5 && strcmp(argv[1], "find") == 0) {
/* "sticker find song a/directory name" */
......@@ -138,7 +138,7 @@ handle_sticker_song(Client &client, int argc, char *argv[])
db_unlock();
command_error(client, ACK_ERROR_NO_EXIST,
"no such directory");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
success = sticker_song_find(*directory, data.name,
......@@ -147,17 +147,17 @@ handle_sticker_song(Client &client, int argc, char *argv[])
if (!success) {
command_error(client, ACK_ERROR_SYSTEM,
"failed to set search sticker database");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
return COMMAND_RETURN_OK;
return CommandResult::OK;
} else {
command_error(client, ACK_ERROR_ARG, "bad request");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
}
enum command_return
CommandResult
handle_sticker(Client &client, int argc, char *argv[])
{
assert(argc >= 4);
......@@ -165,7 +165,7 @@ handle_sticker(Client &client, int argc, char *argv[])
if (!sticker_enabled()) {
command_error(client, ACK_ERROR_UNKNOWN,
"sticker database is disabled");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
if (strcmp(argv[2], "song") == 0)
......@@ -173,6 +173,6 @@ handle_sticker(Client &client, int argc, char *argv[])
else {
command_error(client, ACK_ERROR_ARG,
"unknown sticker domain");
return COMMAND_RETURN_ERROR;
return CommandResult::ERROR;
}
}
......@@ -20,11 +20,11 @@
#ifndef MPD_STICKER_COMMANDS_HXX
#define MPD_STICKER_COMMANDS_HXX
#include "command.h"
#include "CommandResult.hxx"
class Client;
enum command_return
CommandResult
handle_sticker(Client &client, int argc, char *argv[]);
#endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment