From 4ae60696aed938347cc1cf2a5d8f5a2b86292132 Mon Sep 17 00:00:00 2001 From: David Härdeman Date: Tue, 7 Jul 2020 22:32:11 +0200 Subject: Improve handling of info and status commands --- minecctl/minecctl.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) (limited to 'minecctl/minecctl.c') diff --git a/minecctl/minecctl.c b/minecctl/minecctl.c index 925092e..56e386e 100644 --- a/minecctl/minecctl.c +++ b/minecctl/minecctl.c @@ -265,21 +265,22 @@ error: } static inline void get_optional_server_arg(struct cfg *cfg, char *const **argv, - bool more) + bool server_mandatory, bool more) { - if (!cfg->rcon_addrstr) { - if (!**argv) { + if (!cfg->rcon_addrstr && !cfg->mc_addrstr) { + if (server_mandatory && !**argv) { error("Missing arguments"); usage(false); } - if (!server_set_default(cfg, **argv)) { + if (**argv && !server_set_default(cfg, **argv)) { error("\"%s\" is not a known server or command", **argv); usage(false); } - (*argv)++; + if (**argv) + (*argv)++; } if (!more && **argv) { @@ -336,29 +337,29 @@ static void parse_command(struct cfg *cfg, char *const *argv) cfg->cmd = do_stop_all; break; case CMD_INFO: - get_optional_server_arg(cfg, &argv, false); + get_optional_server_arg(cfg, &argv, false, false); cfg->cmd = do_info; break; case CMD_STATUS: - get_optional_server_arg(cfg, &argv, false); + get_optional_server_arg(cfg, &argv, false, false); cfg->cmd = do_status; break; case CMD_STOP: - get_optional_server_arg(cfg, &argv, false); + get_optional_server_arg(cfg, &argv, true, false); cfg->cmd = do_stop; break; case CMD_PCOUNT: - get_optional_server_arg(cfg, &argv, false); + get_optional_server_arg(cfg, &argv, true, false); cfg->cmd = do_pcount; break; case CMD_CONSOLE: - get_optional_server_arg(cfg, &argv, false); + get_optional_server_arg(cfg, &argv, true, false); cfg->cmd = do_console; break; case CMD_COMMAND: _fallthrough_; case CMD_COMMANDS: - get_optional_server_arg(cfg, &argv, true); + get_optional_server_arg(cfg, &argv, true, true); if (!*argv) { error("Missing arguments"); @@ -373,7 +374,7 @@ static void parse_command(struct cfg *cfg, char *const *argv) break; case CMD_INVALID: /* shorthand notation */ - get_optional_server_arg(cfg, &argv, true); + get_optional_server_arg(cfg, &argv, true, true); if (!*argv) { /* !CMD = console */ -- cgit v1.2.3