From c8cf4c37c6dc0e8b615bfcc6853d6b065c391aca Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Fri, 15 Feb 2019 00:06:56 +0000 Subject: [PATCH] When saving message sub-boards and file directories to msgs.cnf/file.cnf, if any sub-boards or directories have *blank* names or internal code suffixes (a sign of a corrupted configuration), exclude them from the saved subs/dirs automatically. I'm not sure how this can happen (use of cnflib.js?) - but running "scfg -f" (force save) should fix this situation. For Android8675. --- src/sbbs3/scfgsave.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/sbbs3/scfgsave.c b/src/sbbs3/scfgsave.c index 81168ecea1..8f5eb41883 100644 --- a/src/sbbs3/scfgsave.c +++ b/src/sbbs3/scfgsave.c @@ -398,12 +398,19 @@ BOOL DLLCALL write_msgs_cfg(scfg_t* cfg, int backup_level) /* Calculate and save the actual number (total) of sub-boards that will be written */ n = 0; for(i=0; i<cfg->total_subs; i++) - if(cfg->sub[i]->grp < cfg->total_grps) /* total VALID sub-boards */ + if(cfg->sub[i]->grp < cfg->total_grps /* total VALID sub-boards */ + && cfg->sub[i]->lname[0] + && cfg->sub[i]->sname[0] + && cfg->sub[i]->code_suffix[0]) n++; put_int(n,stream); unsigned int subnum = 0; /* New sub-board numbering (as saved) */ for(unsigned grp = 0; grp < cfg->total_grps; grp++) { for(i=0;i<cfg->total_subs;i++) { + if(cfg->sub[i]->lname[0] == 0 + || cfg->sub[i]->sname[0] == 0 + || cfg->sub[i]->code_suffix[0] == 0) + continue; if(cfg->sub[i]->grp != grp) continue; cfg->sub[i]->subnum = subnum++; @@ -784,12 +791,19 @@ BOOL DLLCALL write_file_cfg(scfg_t* cfg, int backup_level) /* Calculate and save the actual number (total) of dirs that will be written */ n = 0; for (i = 0; i < cfg->total_dirs; i++) - if (cfg->dir[i]->lib < cfg->total_libs) /* total VALID file dirs */ + if (cfg->dir[i]->lib < cfg->total_libs /* total VALID file dirs */ + && cfg->dir[i]->lname[0] + && cfg->dir[i]->sname[0] + && cfg->dir[i]->code_suffix[0]) n++; put_int(n,stream); unsigned int dirnum = 0; /* New directory numbering (as saved) */ for (j = 0; j < cfg->total_libs; j++) { for (i = 0; i < cfg->total_dirs; i++) { + if (cfg->dir[i]->lname[0] == 0 + || cfg->dir[i]->sname[0] == 0 + || cfg->dir[i]->code_suffix[0] == 0) + continue; if (cfg->dir[i]->lib == j) { cfg->dir[i]->dirnum = dirnum++; put_int(cfg->dir[i]->lib, stream); -- GitLab