From a6b905895fef7bdd51781def5c003a95983a231e Mon Sep 17 00:00:00 2001 From: David Härdeman Date: Fri, 26 Jun 2020 22:50:18 +0200 Subject: Pass struct cfg throughout --- minecctl/minecctl.c | 62 ++++++++++++++++++++++++++--------------------------- 1 file changed, 30 insertions(+), 32 deletions(-) (limited to 'minecctl/minecctl.c') diff --git a/minecctl/minecctl.c b/minecctl/minecctl.c index 324f0ef..c00a994 100644 --- a/minecctl/minecctl.c +++ b/minecctl/minecctl.c @@ -21,10 +21,8 @@ #include "config-parser.h" #include "config.h" -static struct cfg *cfg = NULL; - static void -dump_config() +dump_config(struct cfg *cfg) { /* FIXME: return unless debugging enabled */ struct server *server; @@ -126,7 +124,7 @@ out: } static bool -create_server_from_cmdline_args() +create_server_from_cmdline_args(struct cfg *cfg) { struct server *server; @@ -180,7 +178,7 @@ do_list(struct cfg *cfg) } static inline void -get_optional_server_arg(char * const **argv, bool more) +get_optional_server_arg(struct cfg *cfg, char * const **argv, bool more) { if (!cfg->rcon_addrstr) { if (!**argv) { @@ -203,7 +201,7 @@ get_optional_server_arg(char * const **argv, bool more) } static void -parse_command(char * const *argv) +parse_command(struct cfg *cfg, char * const *argv) { enum commands cmd = CMD_INVALID; @@ -244,27 +242,27 @@ parse_command(char * const *argv) cfg->cmd = do_stop_all; break; case CMD_STATUS: - get_optional_server_arg(&argv, false); + get_optional_server_arg(cfg, &argv, false); cfg->cmd = do_status; break; case CMD_PING: - get_optional_server_arg(&argv, false); + get_optional_server_arg(cfg, &argv, false); cfg->cmd = do_ping; break; case CMD_STOP: - get_optional_server_arg(&argv, false); + get_optional_server_arg(cfg, &argv, false); cfg->cmd = do_stop; break; case CMD_PCOUNT: - get_optional_server_arg(&argv, false); + get_optional_server_arg(cfg, &argv, false); cfg->cmd = do_pcount; break; case CMD_CONSOLE: - get_optional_server_arg(&argv, false); + get_optional_server_arg(cfg, &argv, false); cfg->cmd = do_console; break; case CMD_COMMAND: - get_optional_server_arg(&argv, true); + get_optional_server_arg(cfg, &argv, true); if (!*argv) { error("Missing arguments"); @@ -276,7 +274,7 @@ parse_command(char * const *argv) break; case CMD_INVALID: /* shorthand notation */ - get_optional_server_arg(&argv, true); + get_optional_server_arg(cfg, &argv, true); if (!*argv) { /* !CMD = console */ @@ -293,7 +291,7 @@ parse_command(char * const *argv) } static void -parse_cmdline(int argc, char * const *argv) +parse_cmdline(struct cfg *cfg, int argc, char * const *argv) { int c; char *e; @@ -377,45 +375,45 @@ parse_cmdline(int argc, char * const *argv) int main(int argc, char **argv) { - int rv = EXIT_FAILURE; + struct cfg cfg = { + .servers = LIST_HEAD_INIT(cfg.servers), + }; struct server *server, *tmp; + int rv = EXIT_FAILURE; debug_mask = DBG_ERROR | DBG_INFO; set_use_colors(); - cfg = zmalloc(sizeof(*cfg)); - INIT_LIST_HEAD(&cfg->servers); + parse_cmdline(&cfg, argc, argv); - parse_cmdline(argc, argv); + server_load_all_known(&cfg); - server_load_known(cfg); + parse_command(&cfg, &argv[optind]); - parse_command(&argv[optind]); - - if (!cfg->cmd) { + if (!cfg.cmd) { error("Failed to parse command"); goto out; } - if (cfg->rcon_addrstr || cfg->mc_addrstr) - if (!create_server_from_cmdline_args()) + if (cfg.rcon_addrstr || cfg.mc_addrstr) + if (!create_server_from_cmdline_args(&cfg)) goto out; - dump_config(); + + dump_config(&cfg); /* FIXME: Should return bool */ - cfg->cmd(cfg); + cfg.cmd(&cfg); rv = EXIT_SUCCESS; out: - list_for_each_entry_safe(server, tmp, &cfg->servers, list) + list_for_each_entry_safe(server, tmp, &cfg.servers, list) server_free(server); - free_password(&cfg->rcon_password); - xfree(cfg->rcon_addrstr); - xfree(cfg->mc_addrstr); - xfree(cfg->cmdstr); - xfree(cfg); + free_password(&cfg.rcon_password); + xfree(cfg.rcon_addrstr); + xfree(cfg.mc_addrstr); + xfree(cfg.cmdstr); exit(rv); } -- cgit v1.2.3