sticker/Match: add operator "EQUALS"

Mapped to "=" in the MPD protocol.  This is the first operator,
initially supporting value matches in the MPD protocol.
This commit is contained in:
Max Kellermann
2014-12-12 22:12:19 +01:00
parent fed44e95b3
commit cc143105b8
5 changed files with 52 additions and 3 deletions

View File

@@ -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,