summaryrefslogtreecommitdiff
path: root/minecctl/minecctl.c
diff options
context:
space:
mode:
authorDavid Härdeman <david@hardeman.nu>2020-07-07 22:32:11 +0200
committerDavid Härdeman <david@hardeman.nu>2020-07-07 22:32:11 +0200
commit4ae60696aed938347cc1cf2a5d8f5a2b86292132 (patch)
treeb83ad5727b56f010c0e90bb3f80b4ff95bf04082 /minecctl/minecctl.c
parente685df91251ca111e42306e6f36835e55f052c0c (diff)
Improve handling of info and status commands
Diffstat (limited to 'minecctl/minecctl.c')
-rw-r--r--minecctl/minecctl.c25
1 files changed, 13 insertions, 12 deletions
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 */