diff --git a/src/commands.c b/src/commands.c index 04ed376fa9d11134477d3bdc9f77fa2d4dee5d51..3dbd055d41eee50bd3a6c0d715ad966f5e72c12a 100644 --- a/src/commands.c +++ b/src/commands.c @@ -619,13 +619,15 @@ __find(struct lkt_state *srv, size_t c, char *cmd_args[LKT_MESSAGE_ARGS_MAX], lo .msg_count = lkt_remaining_msg(srv, c) - 3, /* Reserve slots for OK/ACK and continue: */ }; - // Check args // + /* Check args */ + if (cmd_args == NULL || cmd_args[0] == NULL) { fprintf(stderr, " ! __find: Argument invalid, empty cmd_args\n"); return false; } - // Select callback // + /* Select callback */ + switch (action) { case LKT_FND_ACT_RESPOND: search.call = (void(*)(void)) lkt_callback_send_row_v2; @@ -641,7 +643,8 @@ __find(struct lkt_state *srv, size_t c, char *cmd_args[LKT_MESSAGE_ARGS_MAX], lo return false; } - // Select the right column // + /* Select the right column */ + mpd_tag = cmd_args[0]; if (!strcasecmp("any", mpd_tag) || @@ -662,10 +665,13 @@ __find(struct lkt_state *srv, size_t c, char *cmd_args[LKT_MESSAGE_ARGS_MAX], lo col_name = LKT_DATABASE_NAME_KLANG; else if (!strcasecmp("date", mpd_tag)) col_name = LKT_DATABASE_NAME_KAUTHOR_YEAR; + else if (!strcasecmp("id", mpd_tag)) + col_name = LKT_DATABASE_NAME_KID; else - col_name = LKT_DATABASE_KARA_COLUMNT_ANY; + return false; + + /* Get the regex */ - // Get the regex // if (!cmd_args[1]) goto no_rgx; memset(rgx, 0, PATH_MAX * sizeof(char)); @@ -676,7 +682,8 @@ __find(struct lkt_state *srv, size_t c, char *cmd_args[LKT_MESSAGE_ARGS_MAX], lo strncat(rgx, " ", PATH_MAX - 1); } - // Make the search langand do the right action // + /* Make the search langand do the right action */ + if (!init(srv->db, col_name, rgx, &search)) { fprintf(stderr, " ! __find: Failed to init the search\n"); return false;