From 68e610da686891d7fe198658c56dacf30d834d1c Mon Sep 17 00:00:00 2001 From: "Rob Swindell (on Windows 11)" <rob@synchro.net> Date: Tue, 14 Jan 2025 17:40:31 -0800 Subject: [PATCH] load_cfg() can now report config file warnings Log the error string if it's non-blank, as a warning (e.g. unrecognized text.ini text.dat string ID). Reduce the number of logged messages when config load failure happens. Commonize the load_cfg() error log messages. --- src/sbbs3/ftpsrvr.c | 5 +++-- src/sbbs3/jsexec.c | 4 +++- src/sbbs3/load_cfg.c | 5 +++-- src/sbbs3/mailsrvr.c | 6 ++++-- src/sbbs3/main.cpp | 8 ++++---- src/sbbs3/sbbscon.c | 4 +++- src/sbbs3/sbbsecho.c | 5 +++-- src/sbbs3/services.c | 5 +++-- src/sbbs3/websrvr.c | 5 +++-- 9 files changed, 29 insertions(+), 18 deletions(-) diff --git a/src/sbbs3/ftpsrvr.c b/src/sbbs3/ftpsrvr.c index 218187f424..48df6e48da 100644 --- a/src/sbbs3/ftpsrvr.c +++ b/src/sbbs3/ftpsrvr.c @@ -5230,11 +5230,12 @@ void ftp_server(void* arg) scfg.size = sizeof(scfg); SAFECOPY(error, UNKNOWN_LOAD_ERROR); if (!load_cfg(&scfg, text, /* prep: */ TRUE, /* node: */ FALSE, error, sizeof(error))) { - lprintf(LOG_CRIT, "!ERROR %s", error); - lprintf(LOG_CRIT, "!Failed to load configuration files"); + lprintf(LOG_CRIT, "!ERROR loading configuration files: %s", error); cleanup(1, __LINE__); break; } + if (error[0] != '\0') + lprintf(LOG_WARNING, "!WARNING loading configuration files: %s", error); mqtt_startup(&mqtt, &scfg, (struct startup*)startup, ftp_ver(), lputs); diff --git a/src/sbbs3/jsexec.c b/src/sbbs3/jsexec.c index 1cdd9eec2e..78f06189a0 100644 --- a/src/sbbs3/jsexec.c +++ b/src/sbbs3/jsexec.c @@ -1470,7 +1470,9 @@ int main(int argc, char **argv) if (require_cfg) return do_bail(1); prep_dir(scfg.ctrl_dir, scfg.exec_dir, sizeof(scfg.exec_dir)); - } + } else if (error[0] != '\0') + lprintf(LOG_WARNING, "!WARNING loading configuration files: %s", error); + SAFECOPY(scfg.temp_dir, "../temp"); #endif prep_dir(scfg.ctrl_dir, scfg.temp_dir, sizeof(scfg.temp_dir)); diff --git a/src/sbbs3/load_cfg.c b/src/sbbs3/load_cfg.c index 26faa4d9e0..0c12a0429e 100644 --- a/src/sbbs3/load_cfg.c +++ b/src/sbbs3/load_cfg.c @@ -69,6 +69,8 @@ bool load_cfg(scfg_t* cfg, char* text[], bool prep, bool req_cfg, char* error, s , cfg->size, sizeof(scfg_t)); return false; } + if (error != NULL) + *error = '\0'; free_cfg(cfg); /* free allocated config parameters */ @@ -134,8 +136,7 @@ bool load_cfg(scfg_t* cfg, char* text[], bool prep, bool req_cfg, char* error, s safe_snprintf(error, maxerrlen, "%s text ID (%s) not recognized" , str , list[i]->name); - success = false; - break; + continue; } free(text[n]); text[n] = strdup(list[i]->value); diff --git a/src/sbbs3/mailsrvr.c b/src/sbbs3/mailsrvr.c index 628eb030ec..b0dc6fca9f 100644 --- a/src/sbbs3/mailsrvr.c +++ b/src/sbbs3/mailsrvr.c @@ -6195,11 +6195,13 @@ void mail_server(void* arg) scfg.size = sizeof(scfg); SAFECOPY(error, UNKNOWN_LOAD_ERROR); if (!load_cfg(&scfg, text, /* prep: */ TRUE, /* node: */ FALSE, error, sizeof(error))) { - lprintf(LOG_CRIT, "!ERROR %s", error); - lprintf(LOG_CRIT, "!Failed to load configuration files"); + lprintf(LOG_CRIT, "!ERROR loading configuration files: %s", error); cleanup(1); return; } + if (error[0] != '\0') + lprintf(LOG_WARNING, "!WARNING loading configuration files: %s", error); + mqtt_startup(&mqtt, &scfg, (struct startup*)startup, mail_ver(), lputs); diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp index d6b78bbab6..dc49938cb1 100644 --- a/src/sbbs3/main.cpp +++ b/src/sbbs3/main.cpp @@ -5073,11 +5073,12 @@ void bbs_thread(void* arg) scfg.node_num = startup->first_node; SAFECOPY(logstr, UNKNOWN_LOAD_ERROR); if (!load_cfg(&scfg, text, /* prep: */ true, /* node_req: */ true, logstr, sizeof(logstr))) { - lprintf(LOG_CRIT, "!ERROR %s", logstr); - lprintf(LOG_CRIT, "!FAILED to load configuration files"); + lprintf(LOG_CRIT, "!ERROR loading configuration files: %s", logstr); cleanup(1); return; } + if (logstr[0] != '\0') + lprintf(LOG_WARNING, "!WARNING loading configuration files: %s", logstr); mqtt_startup(&mqtt, &scfg, (struct startup*)startup, bbs_ver(), lputs); @@ -5763,8 +5764,7 @@ NO_SSH: lprintf(LOG_WARNING, "Node %d LOAD ERROR: %s, falling back to Node %d", cfg->node_num, logstr, first_node); cfg->node_num = first_node; if (!load_cfg(cfg, node_text[node_num - 1], /* prep: */ true, /* node: */ true, logstr, sizeof(logstr))) { - lprintf(LOG_CRIT, "!ERROR %s", logstr); - lprintf(LOG_CRIT, "!FAILED to load configuration files"); + lprintf(LOG_CRIT, "!ERROR loading configuration files: %s", logstr); sbbs->bprintf("\r\nFAILED: %s", logstr); client_off(client_socket); SSH_END(client_socket); diff --git a/src/sbbs3/sbbscon.c b/src/sbbs3/sbbscon.c index b7b8722b62..a5a272aeca 100644 --- a/src/sbbs3/sbbscon.c +++ b/src/sbbs3/sbbscon.c @@ -1706,9 +1706,11 @@ int main(int argc, char** argv) SAFECOPY(error, UNKNOWN_LOAD_ERROR); lprintf(LOG_INFO, "Loading configuration files from %s", scfg.ctrl_dir); if (!load_cfg(&scfg, /* text: */ NULL, /* prep: */ TRUE, /* node: */ FALSE, error, sizeof(error))) { - lprintf(LOG_ERR, "!ERROR Loading Configuration Files: %s", error); + lprintf(LOG_CRIT, "!ERROR loading configuration files: %s", error); return -1; } + if (error[0] != '\0') + lprintf(LOG_WARNING, "!WARNING loading configuration files: %s", error); /* Daemonize / Set uid/gid */ #ifdef __unix__ diff --git a/src/sbbs3/sbbsecho.c b/src/sbbs3/sbbsecho.c index a6567c84c1..0e3fa7b611 100644 --- a/src/sbbs3/sbbsecho.c +++ b/src/sbbs3/sbbsecho.c @@ -6655,11 +6655,12 @@ int main(int argc, char **argv) scfg.size = sizeof(scfg); SAFECOPY(str, UNKNOWN_LOAD_ERROR); if (!load_cfg(&scfg, text, /* prep: */ true, /* node: */ false, str, sizeof(str))) { - fprintf(stderr, "!ERROR %s\n", str); - fprintf(stderr, "!Failed to load configuration files\n"); + fprintf(stderr, "!ERROR loading configuration files: %s\n", str); bail(1); return -1; } + if (str[0] != '\0') + fprintf(stderr, "!WARNING loading configuration files: %s\n", str); twit_list = list_of_twits(&scfg); diff --git a/src/sbbs3/services.c b/src/sbbs3/services.c index ac2601dd81..1ee9eeb8e0 100644 --- a/src/sbbs3/services.c +++ b/src/sbbs3/services.c @@ -2019,11 +2019,12 @@ void services_thread(void* arg) scfg.size = sizeof(scfg); SAFECOPY(error, UNKNOWN_LOAD_ERROR); if (!load_cfg(&scfg, text, /* prep: */ true, /* node: */ false, error, sizeof(error))) { - lprintf(LOG_CRIT, "!ERROR %s", error); - lprintf(LOG_CRIT, "!Failed to load configuration files"); + lprintf(LOG_CRIT, "!ERROR loading configuration files: %s", error); cleanup(1); return; } + if (error[0] != '\0') + lprintf(LOG_WARNING, "!WARNING loading configuration files: %s", error); mqtt_startup(&mqtt, &scfg, (struct startup*)startup, services_ver(), lputs); diff --git a/src/sbbs3/websrvr.c b/src/sbbs3/websrvr.c index 6155b18ed8..606261575f 100644 --- a/src/sbbs3/websrvr.c +++ b/src/sbbs3/websrvr.c @@ -7370,11 +7370,12 @@ void web_server(void* arg) scfg.size = sizeof(scfg); SAFECOPY(logstr, UNKNOWN_LOAD_ERROR); if (!load_cfg(&scfg, text, /* prep: */ true, /* node: */ false, logstr, sizeof(logstr))) { - lprintf(LOG_CRIT, "!ERROR %s", logstr); - lprintf(LOG_CRIT, "!FAILED to load configuration files"); + lprintf(LOG_CRIT, "!ERROR loading configuration files: %s", logstr); cleanup(1); return; } + if (logstr[0] != '\0') + lprintf(LOG_WARNING, "!WARNING loading configuration files: %s", logstr); mqtt_startup(&mqtt, &scfg, (struct startup*)startup, web_ver(), lputs); -- GitLab