diff options
author | Max Kellermann <max@duempel.org> | 2014-12-12 22:12:19 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2014-12-12 22:16:00 +0100 |
commit | cc143105b884bfcaa188c6e9f93babec5958ea87 (patch) | |
tree | 46d5022fc55999ca6ec69ea9a474b682ded4b3fd /src/command | |
parent | fed44e95b3c4bc74c8bd96eaf6f08bc6ad01ed55 (diff) | |
download | mpd-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')
-rw-r--r-- | src/command/StickerCommands.cxx | 18 |
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, |