diff options
author | Anton Khirnov <wyskas@gmail.com> | 2009-08-25 13:43:22 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2009-08-25 13:43:22 +0200 |
commit | df0c26a394be7dd4137c9614dd867122019d78f8 (patch) | |
tree | 7f7806e251104c6d473e6bba5be4a50ca6e84ffc /src/command.c | |
parent | 1e56c7b8629f5c11eee0680e4584030cac939ce8 (diff) | |
download | mpd-df0c26a394be7dd4137c9614dd867122019d78f8.tar.gz mpd-df0c26a394be7dd4137c9614dd867122019d78f8.tar.xz mpd-df0c26a394be7dd4137c9614dd867122019d78f8.zip |
command: add "findadd" command.
Diffstat (limited to 'src/command.c')
-rw-r--r-- | src/command.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/command.c b/src/command.c index c1c330765..58e931650 100644 --- a/src/command.c +++ b/src/command.c @@ -870,6 +870,30 @@ handle_find(struct client *client, int argc, char *argv[]) } static enum command_return +handle_findadd(struct client *client, int argc, char *argv[]) +{ + int ret; + struct locate_item_list *list = + locate_item_list_parse(argv + 1, argc - 1); + if (list == NULL || list->length == 0) { + if (list != NULL) + locate_item_list_free(list); + + command_error(client, ACK_ERROR_ARG, "incorrect arguments"); + return COMMAND_RETURN_ERROR; + } + + ret = findAddIn(client, NULL, list); + if (ret == -1) + command_error(client, ACK_ERROR_NO_EXIST, + "directory or file not found"); + + locate_item_list_free(list); + + return ret; +} + +static enum command_return handle_search(struct client *client, int argc, char *argv[]) { int ret; @@ -1671,6 +1695,7 @@ static const struct command commands[] = { { "disableoutput", PERMISSION_ADMIN, 1, 1, handle_disableoutput }, { "enableoutput", PERMISSION_ADMIN, 1, 1, handle_enableoutput }, { "find", PERMISSION_READ, 2, -1, handle_find }, + { "findadd", PERMISSION_READ, 2, -1, handle_findadd}, { "idle", PERMISSION_READ, 0, -1, handle_idle }, { "kill", PERMISSION_ADMIN, -1, -1, handle_kill }, { "list", PERMISSION_READ, 1, -1, handle_list }, |