summaryrefslogtreecommitdiff
path: root/minecctl/server.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/server.c
parente685df91251ca111e42306e6f36835e55f052c0c (diff)
Improve handling of info and status commands
Diffstat (limited to 'minecctl/server.c')
-rw-r--r--minecctl/server.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/minecctl/server.c b/minecctl/server.c
index 979c15f..599be1f 100644
--- a/minecctl/server.c
+++ b/minecctl/server.c
@@ -78,6 +78,41 @@ bool server_read_config(struct cfg *cfg, struct server *server,
return true;
}
+bool server_read_all_configs(struct cfg *cfg, bool print_results)
+{
+ struct server *server;
+ unsigned lineno;
+ const char *error;
+ bool rv = true;
+
+ /* server->scfg.filename check excludes servers created from cmdline */
+ list_for_each_entry(server, &cfg->servers, list) {
+ if (!server->scfg.filename)
+ continue;
+
+ if (!server_read_config(cfg, server, &lineno, &error)) {
+ if (lineno != 0 && print_results)
+ info("• %s: %sfail%s - line %u: %s",
+ server->name, ansi_red, ansi_normal,
+ lineno, error);
+ else if (print_results)
+ info("• %s: %sfail%s - %s",
+ server->name, ansi_red, ansi_normal,
+ error);
+ rv = false;
+ } else if (!scfg_validate(&server->scfg, &error) &&
+ print_results) {
+ info("• %s: %sfail%s - %s",
+ server->name, ansi_red, ansi_normal,
+ error);
+ rv = false;
+ } else if (print_results) {
+ info("• %s: %sok%s", server->name, ansi_green,
+ ansi_normal);
+ }
+ }
+}
+
struct server *server_get_default(struct cfg *cfg)
{
struct server *server;
@@ -105,6 +140,7 @@ bool server_set_default(struct cfg *cfg, const char *name)
list_for_each_entry(server, &cfg->servers, list) {
if (streq(name, server->name)) {
list_rotate_to_front(&server->list, &cfg->servers);
+ cfg->default_set = true;
return true;
}
}