aboutsummaryrefslogtreecommitdiffstats
path: root/src/command/StickerCommands.cxx
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2014-12-12 22:12:19 +0100
committerMax Kellermann <max@duempel.org>2014-12-12 22:16:00 +0100
commitcc143105b884bfcaa188c6e9f93babec5958ea87 (patch)
tree46d5022fc55999ca6ec69ea9a474b682ded4b3fd /src/command/StickerCommands.cxx
parentfed44e95b3c4bc74c8bd96eaf6f08bc6ad01ed55 (diff)
downloadmpd-cc143105b884bfcaa188c6e9f93babec5958ea87.tar.gz
mpd-cc143105b884bfcaa188c6e9f93babec5958ea87.tar.xz
mpd-cc143105b884bfcaa188c6e9f93babec5958ea87.zip
sticker/Match: add operator "EQUALS"
Mapped to "=" in the MPD protocol. This is the first operator, initially supporting value matches in the MPD protocol.
Diffstat (limited to 'src/command/StickerCommands.cxx')
-rw-r--r--src/command/StickerCommands.cxx18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/command/StickerCommands.cxx b/src/command/StickerCommands.cxx
index b8eee55c5..07bed032e 100644
--- a/src/command/StickerCommands.cxx
+++ b/src/command/StickerCommands.cxx
@@ -138,7 +138,8 @@ handle_sticker_song(Client &client, ConstBuffer<const char *> args)
return CommandResult::OK;
/* find song dir key */
- } else if (args.size == 4 && strcmp(cmd, "find") == 0) {
+ } else if ((args.size == 4 || args.size == 6) &&
+ strcmp(cmd, "find") == 0) {
/* "sticker find song a/directory name" */
const char *const base_uri = args[2];
@@ -146,6 +147,21 @@ handle_sticker_song(Client &client, ConstBuffer<const char *> args)
StickerOperator op = StickerOperator::EXISTS;
const char *value = nullptr;
+ if (args.size == 6) {
+ /* match the value */
+
+ const char *op_s = args[4];
+ value = args[5];
+
+ if (strcmp(op_s, "=") == 0)
+ op = StickerOperator::EQUALS;
+ else {
+ command_error(client, ACK_ERROR_ARG,
+ "bad operator");
+ return CommandResult::ERROR;
+ }
+ }
+
bool success;
struct sticker_song_find_data data = {
client,