diff --git a/src/sbbs3/scfglib1.c b/src/sbbs3/scfglib1.c index bd9991e09332efa50ebe696412637f3adcef1103..f28b3ef90d2622c8dcedd223d77dbd9d3b5f0fad 100644 --- a/src/sbbs3/scfglib1.c +++ b/src/sbbs3/scfglib1.c @@ -30,7 +30,7 @@ bool allocerr(char* error, size_t maxerrlen, const char* fname, const char *item, size_t size) { - safe_snprintf(error, maxerrlen, "%s: allocating %u bytes of memory for %s" + snprintf(error, maxerrlen, "%s: allocating %u bytes of memory for %s" , fname, (uint)size, item); return false; } @@ -44,16 +44,23 @@ bool read_node_cfg(scfg_t* cfg, char* error, size_t maxerrlen) FILE* fp; str_list_t ini; char value[INI_MAX_VALUE_LEN]; + bool result = false; const char* fname = "node.ini"; SAFEPRINTF2(cfg->filename, "%s%s", cfg->node_dir, fname); if ((fp = fnopen(NULL, cfg->filename, O_RDONLY)) == NULL) { - safe_snprintf(error, maxerrlen, "%d (%s) opening %s", errno, safe_strerror(errno, errstr, sizeof(errstr)), cfg->filename); + snprintf(error, maxerrlen, "ERROR %d (%s) opening %s", errno, safe_strerror(errno, errstr, sizeof(errstr)), cfg->filename); return false; } ini = iniReadFile(fp); fclose(fp); + if (ini == NULL) { + snprintf(error, maxerrlen, "Read no contents from %s", cfg->filename); + result = false; + } else + result = true; + SAFECOPY(cfg->node_phone, iniGetString(ini, ROOT_SECTION, "phone", "", value)); SAFECOPY(cfg->node_daily.cmd, iniGetString(ini, ROOT_SECTION, "daily", "", value)); cfg->node_daily.misc = iniGetUInteger(ini, ROOT_SECTION, "daily_settings", 0); @@ -66,7 +73,7 @@ bool read_node_cfg(scfg_t* cfg, char* error, size_t maxerrlen) iniFreeStringList(ini); - return true; + return result; } /****************************************************************************/ @@ -84,11 +91,15 @@ bool read_main_cfg(scfg_t* cfg, char* error, size_t maxerrlen) const char* fname = "main.ini"; SAFEPRINTF2(cfg->filename, "%s%s", cfg->ctrl_dir, fname); if ((fp = fnopen(NULL, cfg->filename, O_RDONLY)) == NULL) { - safe_snprintf(error, maxerrlen, "%d (%s) opening %s", errno, safe_strerror(errno, errstr, sizeof(errstr)), cfg->filename); + snprintf(error, maxerrlen, "ERROR %d (%s) opening %s", errno, safe_strerror(errno, errstr, sizeof(errstr)), cfg->filename); } else { ini = iniReadFile(fp); fclose(fp); - result = true; + if (ini == NULL) { + snprintf(error, maxerrlen, "No contents read from %s", cfg->filename); + result = false; + } else + result = true; } SAFECOPY(cfg->sys_name, iniGetString(ini, ROOT_SECTION, "name", "", value)); @@ -348,16 +359,23 @@ bool read_msgs_cfg(scfg_t* cfg, char* error, size_t maxerrlen) FILE* fp; str_list_t ini; char value[INI_MAX_VALUE_LEN]; + bool result = false; const char* fname = "msgs.ini"; SAFEPRINTF2(cfg->filename, "%s%s", cfg->ctrl_dir, fname); if ((fp = fnopen(NULL, cfg->filename, O_RDONLY)) == NULL) { - safe_snprintf(error, maxerrlen, "%d (%s) opening %s", errno, safe_strerror(errno, errstr, sizeof(errstr)), cfg->filename); + snprintf(error, maxerrlen, "ERROR %d (%s) opening %s", errno, safe_strerror(errno, errstr, sizeof(errstr)), cfg->filename); return false; } ini = iniReadFile(fp); fclose(fp); + if (ini == NULL) { + snprintf(error, maxerrlen, "Read no contents from %s", cfg->filename); + result = false; + } else + result = true; + /*************************/ /* General Message Stuff */ /*************************/ @@ -471,7 +489,7 @@ bool read_msgs_cfg(scfg_t* cfg, char* error, size_t maxerrlen) #ifdef SBBS for (uint j = 0; j < i; j++) if (cfg->sub[i]->ptridx == cfg->sub[j]->ptridx) { - safe_snprintf(error, maxerrlen, "%s: Duplicate pointer index for subs %s and %s" + snprintf(error, maxerrlen, "%s: Duplicate pointer index for subs %s and %s" , fname , cfg->sub[i]->code_suffix, cfg->sub[j]->code_suffix); return false; @@ -589,7 +607,7 @@ bool read_msgs_cfg(scfg_t* cfg, char* error, size_t maxerrlen) iniFreeStringList(ini); iniFreeParsedSections(sections); - return true; + return result; } void free_node_cfg(scfg_t* cfg) @@ -1009,7 +1027,7 @@ char* dir_vpath(scfg_t* cfg, dir_t* dir, char* path, size_t size) if (dir->vshortcut[0] != '\0') return dir->vshortcut; else - safe_snprintf(path, size, "%s/%s" + snprintf(path, size, "%s/%s" , cfg->lib[dir->lib]->vdir, dir->vdir); return path; }