From 6a5885c7a3ede1cdf6c0d97e528dd280311a25b2 Mon Sep 17 00:00:00 2001 From: Kubat <mael.martin31@gmail.com> Date: Mon, 4 May 2020 19:14:28 +0200 Subject: [PATCH] Use a macro for string comparaison, use the same comparaison for all the program --- inc/common/macro.h | 3 ++ src/commands.c | 38 ++++++++-------- src/database/update.c | 4 +- src/main/lkt.c | 14 +++--- src/mkv/mkv.c | 13 +++--- src/mkv/write.c | 11 +++-- src/module/mpv.c | 9 ++-- src/net/listen.c | 103 +++++++++++++++++++++--------------------- 8 files changed, 100 insertions(+), 95 deletions(-) diff --git a/inc/common/macro.h b/inc/common/macro.h index cc89cf24..cb3393ec 100644 --- a/inc/common/macro.h +++ b/inc/common/macro.h @@ -169,3 +169,6 @@ typedef volatile enum { #define SQLITE_DO_ROLLBACK(db) \ sqlite3_exec((sqlite3 *) db, "ROLLBACK TRANSACTION;\n", NULL, NULL, NULL); + +#define STR_MATCH(str1, str2) (! strcasecmp(str1, str2)) +#define STR_NMATCH(str1, str2, n) (! strncasecmp(str1, str2, n)) diff --git a/src/commands.c b/src/commands.c index b205df41..1b18a65a 100644 --- a/src/commands.c +++ b/src/commands.c @@ -329,29 +329,29 @@ command_idle(struct lkt_state *srv, size_t c, struct lkt_command *cmd) for (size_t i = 0; cmd->args[i]; ++i) { once |= true; - if (strcmp(cmd->args[i], "database") == 0) + if (STR_MATCH(cmd->args[i], "database")) *clt_mask |= MPD_IDLE_DATABASE; - else if (strcmp(cmd->args[i], "update") == 0) + else if (STR_MATCH(cmd->args[i], "update")) *clt_mask |= MPD_IDLE_UPDATE; - else if (strcmp(cmd->args[i], "stored_playlist") == 0) + else if (STR_MATCH(cmd->args[i], "stored_playlist")) *clt_mask |= MPD_IDLE_STORED_PLAYLIST; - else if (strcmp(cmd->args[i], "playlist") == 0) + else if (STR_MATCH(cmd->args[i], "playlist")) *clt_mask |= MPD_IDLE_PLAYLIST; - else if (strcmp(cmd->args[i], "player") == 0) + else if (STR_MATCH(cmd->args[i], "player")) *clt_mask |= MPD_IDLE_PLAYER; - else if (strcmp(cmd->args[i], "mixer") == 0) + else if (STR_MATCH(cmd->args[i], "mixer")) *clt_mask |= MPD_IDLE_MIXER; - else if (strcmp(cmd->args[i], "output") == 0) + else if (STR_MATCH(cmd->args[i], "output")) *clt_mask |= MPD_IDLE_OUTPUT; - else if (strcmp(cmd->args[i], "options") == 0) + else if (STR_MATCH(cmd->args[i], "options")) *clt_mask |= MPD_IDLE_OPTIONS; - else if (strcmp(cmd->args[i], "partition") == 0) + else if (STR_MATCH(cmd->args[i], "partition")) *clt_mask |= MPD_IDLE_PARTITION; - else if (strcmp(cmd->args[i], "sticker") == 0) + else if (STR_MATCH(cmd->args[i], "sticker")) *clt_mask |= MPD_IDLE_STICKER; - else if (strcmp(cmd->args[i], "subscription") == 0) + else if (STR_MATCH(cmd->args[i], "subscription")) *clt_mask |= MPD_IDLE_SUBSCRIPTION; - else if (strcmp(cmd->args[i], "message") == 0) + else if (STR_MATCH(cmd->args[i], "message")) *clt_mask |= MPD_IDLE_MESSAGE; else *clt_mask = MPD_IDLE_ALL; @@ -414,23 +414,23 @@ command_find(struct lkt_state *srv, size_t c, char *cmd_args[LKT_MESSAGE_ARGS_MA /* Select the right column */ mpd_tag = cmd_args[0]; - if (!strcasecmp("any", mpd_tag) || !strcasecmp("all", mpd_tag) || !strcasecmp("query", mpd_tag) || - !strcasecmp("source", mpd_tag) || !strcasecmp("title", mpd_tag)) + if (STR_MATCH("any", mpd_tag) || STR_MATCH("all", mpd_tag) || STR_MATCH("query", mpd_tag) || + STR_MATCH("source", mpd_tag) || STR_MATCH("title", mpd_tag)) search.name = LKT_DATABASE_KARA_COLUMNT_ANY; - else if (!strcasecmp("author", mpd_tag)) + else if (STR_MATCH("author", mpd_tag)) search.name = LKT_DATABASE_NAME_KAUTHOR; - else if (!strcasecmp("category", mpd_tag) || !strcasecmp("cat", mpd_tag)) + else if (STR_MATCH("category", mpd_tag) || STR_MATCH("cat", mpd_tag)) search.name = LKT_DATABASE_NAME_KCAT; - else if (!strcasecmp("type", mpd_tag)) + else if (STR_MATCH("type", mpd_tag)) search.name = LKT_DATABASE_NAME_KTYPE; - else if (!strcasecmp("language", mpd_tag) || !strcasecmp("lang", mpd_tag)) + else if (STR_MATCH("language", mpd_tag) || STR_MATCH("lang", mpd_tag)) search.name = LKT_DATABASE_NAME_KLANG; - else if (!strcasecmp("id", mpd_tag)) + else if (STR_MATCH("id", mpd_tag)) search.name = LKT_DATABASE_NAME_KID; else diff --git a/src/database/update.c b/src/database/update.c index cacb7bad..9f5e840e 100644 --- a/src/database/update.c +++ b/src/database/update.c @@ -146,8 +146,8 @@ database_update(volatile sqlite3 *db, const char *kara_dir) } else if (dir->d_type == DT_DIR && - strcmp(dir->d_name, ".") != 0 && - strcmp(dir->d_name, "..") != 0) + !STR_MATCH(dir->d_name, ".") && + !STR_MATCH(dir->d_name, "..")) database_update(db, path); } diff --git a/src/main/lkt.c b/src/main/lkt.c index 4c69449b..5494caa6 100644 --- a/src/main/lkt.c +++ b/src/main/lkt.c @@ -26,8 +26,6 @@ #include <limits.h> #define LKT_KEY_VALUE_SEP ": \n\t\0" -#define STR_MATCH(str1, str2) (! strcasecmp(str1, str2)) -#define STR_NMATCH(str1, str2, n) (! strncasecmp(str1, str2, n)) #define fail_if(cond, msg) { if (cond) { LOG_ERROR("%s", msg); exit(EXIT_FAILURE); } } #define fail(msg) { LOG_ERROR("%s", msg); exit(EXIT_FAILURE); } #define lkt_send_and_exit(buffer, len) exit(write_socket(lkt_connect(), buffer, len)) @@ -299,7 +297,7 @@ ping__(struct lkt_cmd_args *args) fail("Failed to send the ping to lektord"); if (read_socket(sock, buff, 6 * sizeof(char)) <= 0) fail("Failed to recieve the response of lektord"); - if (strncmp(buff, "OK", 2)) + if (!STR_NMATCH(buff, "OK", 2)) fail("ACK"); write(1, "OK\n", sizeof("OK\n")); exit(EXIT_SUCCESS); @@ -388,7 +386,7 @@ queue_pop__(struct lkt_cmd_args *args) if (write_socket(sock, "status\n", sizeof("status\n"))) goto error; -#define assign_int(str, var) if (! strncmp(buff, str, len)) { var = (atoi(lkt_skip_key(buff))); continue; } +#define assign_int(str, var) if (STR_NMATCH(buff, str, len)) { var = (atoi(lkt_skip_key(buff))); continue; } for (;;) { memset(buff, 0, LKT_MESSAGE_MAX * sizeof(char)); if (read_socket(sock, buff, LKT_MESSAGE_MAX - 1) <= 0) @@ -448,8 +446,8 @@ status__(struct lkt_cmd_args *args) if (STR_NMATCH(buff, "state", len)) { char *it = lkt_skip_key(buff); - play = ! strncmp(it, "play", 4); - stopped = ! strncmp(it, "stop", 4); + play = STR_NMATCH(it, "play", 4); + stopped = STR_NMATCH(it, "stop", 4); continue; } @@ -601,7 +599,7 @@ redo: memset(buff, 0, LKT_MESSAGE_MAX * sizeof(char)); assert(read_socket(sock, buff, LKT_MESSAGE_MAX - 1) > 0); - if (! strncmp(buff, "continue:", strlen("continue:"))) { + if (STR_NMATCH(buff, "continue:", strlen("continue:"))) { continuation = atoi(lkt_skip_key(buff)); if (continuation > 0) { fclose(sock); @@ -646,7 +644,7 @@ queue_list__(struct lkt_cmd_args *args) if (write_socket(sock, "status\n", sizeof("status\n"))) fail("Communication error"); -#define assign_int(str, var) if (! strncmp(buff, str, len)) { var = (atoi(lkt_skip_key(buff))); continue; } +#define assign_int(str, var) if (STR_NMATCH(buff, str, len)) { var = (atoi(lkt_skip_key(buff))); continue; } for (;;) { memset(buff, 0, LKT_MESSAGE_MAX * sizeof(char)); if (read_socket(sock, buff, LKT_MESSAGE_MAX - 1) <= 0) diff --git a/src/mkv/mkv.c b/src/mkv/mkv.c index a62d536f..fe1b6fff 100644 --- a/src/mkv/mkv.c +++ b/src/mkv/mkv.c @@ -5,6 +5,7 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> +#include <strings.h> #include <unistd.h> #include <lektor/bufferfd.h> @@ -431,20 +432,20 @@ static void kara_add_simple_tag(struct kara_metadata *dst, struct mkv_simple_tag *t, uint64_t target_type_value) { - if (!strcmp("TITLE", t->name)) { + if (STR_MATCH("TITLE", t->name)) { if (target_type_value == 50) strncpy(dst->song_name, t->value, LEKTOR_TAG_MAX - 1); else if (target_type_value == 70) strncpy(dst->source_name, t->value, LEKTOR_TAG_MAX - 1); - } else if (!strcmp("CONTENT_TYPE", t->name)) + } else if (STR_MATCH("CONTENT_TYPE", t->name)) strncpy(dst->category, t->value, LEKTOR_TAG_MAX - 1); - else if (!strcmp("ADDRESS", t->name)) + else if (STR_MATCH("ADDRESS", t->name)) strncpy(dst->language, t->value, LEKTOR_TAG_MAX - 1); - else if (!strcmp("ARTIST", t->name)) + else if (STR_MATCH("ARTIST", t->name)) strncpy(dst->author_name, t->value, LEKTOR_TAG_MAX - 1); - else if (!strcmp("GENRE", t->name)) + else if (STR_MATCH("GENRE", t->name)) strncpy(dst->song_type, t->value, LEKTOR_TAG_MAX - 1); - else if (!strcmp("TRACK", t->name)) + else if (STR_MATCH("TRACK", t->name)) dst->song_number = (int) strtol(t->value, NULL, 10); } diff --git a/src/mkv/write.c b/src/mkv/write.c index c5caa8c0..d366c6bf 100644 --- a/src/mkv/write.c +++ b/src/mkv/write.c @@ -3,6 +3,7 @@ #include <common/common.h> #include <lektor/mkv.h> +#include <strings.h> #include <stdbool.h> #include <stdio.h> #include <unistd.h> @@ -204,13 +205,13 @@ metadata_set_directory(const char *kara_dir, const char *mkvpropedit) strncat(path, "/", PATH_MAX - 1); strncat(path, dir->d_name, PATH_MAX - 1); - if (dir->d_type == DT_REG && - metadata_from_path(path, &meta) && + if (dir->d_type == DT_REG && + metadata_from_path(path, &meta) && kara_metadata_write(&meta, path, mkvpropedit)) continue; - else if (dir->d_type == DT_DIR && - strcmp(dir->d_name, ".") != 0 && - strcmp(dir->d_name, "..") != 0) + else if (dir->d_type == DT_DIR && + !STR_MATCH(dir->d_name, ".") && + !STR_MATCH(dir->d_name, "..")) metadata_set_directory(path, mkvpropedit); } diff --git a/src/module/mpv.c b/src/module/mpv.c index b29d7153..30c8d5a7 100644 --- a/src/module/mpv.c +++ b/src/module/mpv.c @@ -4,6 +4,7 @@ #include <lektor/module/mpv.h> #include <lektor/commands.h> #include <lektor/database.h> +#include <strings.h> #include <stdio.h> #include <string.h> #include <unistd.h> @@ -162,24 +163,24 @@ loop: if (prop->format == MPV_FORMAT_NONE) break; // MPV volume (BUG: The flag is not MPV_FORMAT_NONE only at the end of the song...) // - if (!strcmp(prop->name, "ao-volume") + if (STR_MATCH(prop->name, "ao-volume") && prop->format == MPV_FORMAT_INT64) { ao_volume = *(int *) prop->data; database_config_queue(db, "volume", ao_volume); } // File duration // - if (!strcmp(prop->name, "duration") + if (STR_MATCH(prop->name, "duration") && prop->format == MPV_FORMAT_INT64) { *time_duration = *(int *) prop->data; database_config_queue(db, "duration", *(int *) prop->data); } - if (!strcmp(prop->name, "time-pos") + if (STR_MATCH(prop->name, "time-pos") && prop->format == MPV_FORMAT_INT64) { *time_pos = *(int *) prop->data; database_config_queue(db, "elapsed", *(int *) prop->data); } // Pause state // - if (!strcmp(prop->name, "pause") + if (STR_MATCH(prop->name, "pause") && prop->format == MPV_FORMAT_FLAG) database_queue_set_paused(db, *(bool *) prop->data); break; diff --git a/src/net/listen.c b/src/net/listen.c index 0aa570f4..2e6da642 100644 --- a/src/net/listen.c +++ b/src/net/listen.c @@ -7,6 +7,7 @@ #include <sqlite3.h> +#include <strings.h> #include <sched.h> #include <assert.h> #include <arpa/inet.h> @@ -151,111 +152,111 @@ handle_simple_command(struct lkt_state *srv, size_t c, struct lkt_command cmd) switch (*lkt_client_get_mask(srv, c)) { case MPD_IDLE_NONE: /* Commands that requires authentification. */ - if (!strcmp(cmd.name, "__adduser")) + if (STR_MATCH(cmd.name, "__adduser")) err = ! command_user_add(srv, c, (sqlite3 *) srv->db, cmd.args); - else if (!strcmp(cmd.name, "__restart")) + else if (STR_MATCH(cmd.name, "__restart")) err = ! command_restart(srv, c); - else if (!strcmp(cmd.name, "kill")) + else if (STR_MATCH(cmd.name, "kill")) err = ! command_kill(srv, c); - else if (!strcmp(cmd.name, "update")) + else if (STR_MATCH(cmd.name, "update")) err = ! command_update(srv, c, cmd.args); - else if (!strcmp(cmd.name, "rescan")) + else if (STR_MATCH(cmd.name, "rescan")) err = ! command_rescan(srv, c, cmd.args); /* Commands that are available if not in idle mode */ - else if (!strcmp(cmd.name, "currentsong")) + else if (STR_MATCH(cmd.name, "currentsong")) err = !command_currentsong(srv, c); - else if (!strcmp(cmd.name, "status")) + else if (STR_MATCH(cmd.name, "status")) err = !command_status(srv, c); - else if (!strcmp(cmd.name, "close")) + else if (STR_MATCH(cmd.name, "close")) err = !lkt_close_client(srv, c); - else if (!strcmp(cmd.name, "ping")) + else if (STR_MATCH(cmd.name, "ping")) err = 0; - else if (!strcmp(cmd.name, "next")) + else if (STR_MATCH(cmd.name, "next")) err = !command_next((sqlite3 *) srv->db, &srv->win, &srv->mpd_idle_events); - else if (!strcmp(cmd.name, "pause")) + else if (STR_MATCH(cmd.name, "pause")) err = !command_pause((sqlite3 *) srv->db, &srv->win, &srv->mpd_idle_events); - else if (!strcmp(cmd.name, "previous")) + else if (STR_MATCH(cmd.name, "previous")) err = !command_previous((sqlite3 *) srv->db, &srv->win, &srv->mpd_idle_events); - else if (!strcmp(cmd.name, "play")) + else if (STR_MATCH(cmd.name, "play")) err = ! command_play((sqlite3 *) srv->db, &srv->win, cmd.args, &srv->mpd_idle_events); - else if (!strcmp(cmd.name, "playid")) + else if (STR_MATCH(cmd.name, "playid")) err = ! command_playid((sqlite3 *) srv->db, &srv->win, cmd.args, &srv->mpd_idle_events); - else if (!strcmp(cmd.name, "stop")) + else if (STR_MATCH(cmd.name, "stop")) err = !command_stop((sqlite3 *) srv->db, &srv->win, &srv->mpd_idle_events); - else if (!strcmp(cmd.name, "clear")) + else if (STR_MATCH(cmd.name, "clear")) err = !command_clear((sqlite3 *) srv->db, &srv->mpd_idle_events); - else if (!strcmp(cmd.name, "crop")) + else if (STR_MATCH(cmd.name, "crop")) err = !command_crop((sqlite3 *) srv->db, &srv->mpd_idle_events); - else if (!strcmp(cmd.name, "moveid")) + else if (STR_MATCH(cmd.name, "moveid")) err = !command_move((sqlite3 *) srv->db, cmd.args, &srv->mpd_idle_events); - else if (!strcmp(cmd.name, "shuffle")) + else if (STR_MATCH(cmd.name, "shuffle")) err = !command_shuffle((sqlite3 *) srv->db, &srv->mpd_idle_events); - else if (!strcmp(cmd.name, "playlist") || !strcmp(cmd.name, "playlistinfo")) + else if (STR_MATCH(cmd.name, "playlist") || STR_MATCH(cmd.name, "playlistinfo")) err = !command_queue_list(srv, c, cmd.args); - else if (!strcmp(cmd.name, "playlistfind") || !strcmp(cmd.name, "playlistsearch")) + else if (STR_MATCH(cmd.name, "playlistfind") || STR_MATCH(cmd.name, "playlistsearch")) err = ! command_find(srv, c, cmd.args, cmd.cont, database_search_queue_init); - else if (!strcmp(cmd.name, "sticker") && cmd.args[0]) { - if (!strcmp(cmd.args[0], "get")) + else if (STR_MATCH(cmd.name, "sticker") && cmd.args[0]) { + if (STR_MATCH(cmd.args[0], "get")) err = ! command_sticker_get(srv, c, &cmd.args[1]); - else if (!strcmp(cmd.args[0], "set")) + else if (STR_MATCH(cmd.args[0], "set")) err = ! command_sticker_set(srv, c, &cmd.args[1]); - else if (!strcmp(cmd.args[0], "delete")) + else if (STR_MATCH(cmd.args[0], "delete")) err = ! command_sticker_delete(srv, c, &cmd.args[1]); - else if (!strcmp(cmd.args[0], "list") || !strcmp(cmd.args[0], "find")) + else if (STR_MATCH(cmd.args[0], "list") || STR_MATCH(cmd.args[0], "find")) err = ! command_sticker_delete(srv, c, &cmd.args[1]); } - else if (!strcmp(cmd.name, "help")) + else if (STR_MATCH(cmd.name, "help")) err = !command_help(srv, c); - else if (!strcmp(cmd.name, "__insert")) + else if (STR_MATCH(cmd.name, "__insert")) err = !command_add((sqlite3 *) srv->db, &srv->win, cmd.args, &srv->mpd_idle_events, 5); - else if (!strcmp(cmd.name, "searchadd") || !strcmp(cmd.name, "findadd") || !strcmp(cmd.name, "add")) + else if (STR_MATCH(cmd.name, "searchadd") || STR_MATCH(cmd.name, "findadd") || STR_MATCH(cmd.name, "add")) err = !command_add((sqlite3 *) srv->db, &srv->win, cmd.args, &srv->mpd_idle_events, 1); - else if (!strcmp(cmd.name, "addid")) + else if (STR_MATCH(cmd.name, "addid")) err = !command_addid((sqlite3 *) srv->db, &srv->win, cmd.args, &srv->mpd_idle_events); - else if (!strcmp(cmd.name, "deleteid")) + else if (STR_MATCH(cmd.name, "deleteid")) err = ! (cmd.args[0] != NULL && command_delid((sqlite3 *) srv->db, &srv->win, cmd.args[0], &srv->mpd_idle_events)); - else if (!strcmp(cmd.name, "playlistclear")) + else if (STR_MATCH(cmd.name, "playlistclear")) err = ! command_plt_clear((sqlite3 *) srv->db, cmd.args, &srv->mpd_idle_events); - else if (!strcmp(cmd.name, "rename")) + else if (STR_MATCH(cmd.name, "rename")) err = ! command_plt_rename((sqlite3 * ) srv->db, cmd.args, &srv->mpd_idle_events); - else if (!strcmp(cmd.name, "playlistdelete")) + else if (STR_MATCH(cmd.name, "playlistdelete")) err = ! command_plt_remove((sqlite3 *) srv->db, cmd.args, &srv->mpd_idle_events); - else if (!strcmp(cmd.name, "playlistadd")) + else if (STR_MATCH(cmd.name, "playlistadd")) err = ! command_plt_add((sqlite3 *) srv->db, cmd.args, &srv->mpd_idle_events); - else if (!strcmp(cmd.name, "rm") && cmd.args[0] != NULL && cmd.args[1] == NULL) + else if (STR_MATCH(cmd.name, "rm") && cmd.args[0] != NULL && cmd.args[1] == NULL) err = ! command_plt_remove((sqlite3 *) srv->db, cmd.args, &srv->mpd_idle_events); - else if (!strcmp(cmd.name, "save")) + else if (STR_MATCH(cmd.name, "save")) err = ! command_plt_export((sqlite3 *) srv->db, cmd.args, &srv->mpd_idle_events); - else if (!strcmp(cmd.name, "__import")) + else if (STR_MATCH(cmd.name, "__import")) err = ! command_plt_import((sqlite3 *) srv->db, cmd.args, &srv->mpd_idle_events); - else if (!strcmp(cmd.name, "random")) + else if (STR_MATCH(cmd.name, "random")) err = !command_set_playback_option(srv, c, lkt_playback_option_random, cmd.args); - else if (!strcmp(cmd.name, "repeat")) + else if (STR_MATCH(cmd.name, "repeat")) err = !command_set_playback_option(srv, c, lkt_playback_option_repeat, cmd.args); - else if (!strcmp(cmd.name, "setvol")) + else if (STR_MATCH(cmd.name, "setvol")) err = !command_set_playback_option(srv, c, lkt_playback_option_volume, cmd.args); - else if (!strcmp(cmd.name, "single")) + else if (STR_MATCH(cmd.name, "single")) err = !command_set_playback_option(srv, c, lkt_playback_option_single, cmd.args); - else if (!strcmp(cmd.name, "consume")) + else if (STR_MATCH(cmd.name, "consume")) err = !command_set_playback_option(srv, c, lkt_playback_option_consume, cmd.args); - else if (!strcmp(cmd.name, "password")) + else if (STR_MATCH(cmd.name, "password")) err = !command_password(srv, c, cmd.args); - else if (!strcmp(cmd.name, "idle")) { + else if (STR_MATCH(cmd.name, "idle")) { err = !command_idle(srv, c, &cmd); goto end_no_send_status; - } else if (!strcmp(cmd.name, "search") || !strcmp(cmd.name, "find")) + } else if (STR_MATCH(cmd.name, "search") || STR_MATCH(cmd.name, "find")) err = ! command_find(srv, c, cmd.args, cmd.cont, database_search_database_init); else err = 2; @@ -264,10 +265,10 @@ handle_simple_command(struct lkt_state *srv, size_t c, struct lkt_command cmd) default: /* commands available only in idle mode */ - if (!strcmp(cmd.name, "idle")) { + if (STR_MATCH(cmd.name, "idle")) { err = !command_idle(srv, c, &cmd); goto end_no_send_status; - } else if (!strcmp(cmd.name, "noidle")) + } else if (STR_MATCH(cmd.name, "noidle")) err = !command_noidle(srv, c); else err = 2; @@ -314,11 +315,11 @@ handle_command(struct lkt_state *srv, size_t i, struct lkt_command cmd) struct lkt_client *cli = &srv->clients[i - 1]; int err = 0; - if (!strcmp(cmd.name, "command_list_begin")) + if (STR_MATCH(cmd.name, "command_list_begin")) err = command_list_begin(srv, i, 0); - else if (!strcmp(cmd.name, "command_list_ok_begin")) + else if (STR_MATCH(cmd.name, "command_list_ok_begin")) err = command_list_begin(srv, i, 1); - else if (!strcmp(cmd.name, "command_list_end")) + else if (STR_MATCH(cmd.name, "command_list_end")) err = command_list_end(srv, i); else if (cli->command_list_mode != LKT_COMMAND_LIST_OFF) cli->command_list[cli->command_list_len++] = lkt_command_clone(&cmd); -- GitLab