From 3c7b81aeb392c27a4cbead366287ff10e5c12a08 Mon Sep 17 00:00:00 2001 From: Matthew Woodcraft Date: Sun, 8 May 2011 15:42:52 +0100 Subject: [PATCH] Implement known_command; make gtp_is_valid() stricter --- gtp.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/gtp.c b/gtp.c index 804c943..206e80e 100644 --- a/gtp.c +++ b/gtp.c @@ -79,6 +79,7 @@ static char *known_commands = "name\n" "version\n" "list_commands\n" + "known_command\n" "quit\n" "boardsize\n" "clear_board\n" @@ -106,6 +107,7 @@ gtp_is_valid(char *cmd) if (!cmd || !*cmd) return false; char *s = strcasestr(known_commands, cmd); if (!s) return false; + if (s != known_commands && s[-1] != '\n') return false; int len = strlen(cmd); return s[len] == '\0' || s[len] == '\n'; @@ -160,6 +162,16 @@ gtp_parse(struct board *board, struct engine *engine, struct time_info *ti, char } else if (!strcasecmp(cmd, "list_commands")) { gtp_reply(id, known_commands, NULL); return P_OK; + + } else if (!strcasecmp(cmd, "known_command")) { + char *arg; + next_tok(arg); + if (gtp_is_valid(arg)) { + gtp_reply(id, "true", NULL); + } else { + gtp_reply(id, "false", NULL); + } + return P_OK; } if (engine->notify && gtp_is_valid(cmd)) { -- 2.11.4.GIT