diff --git a/src/sbbs3/scfglib1.c b/src/sbbs3/scfglib1.c index 55ff9f4014b89fd964c23edfb0e5bb0cdfea7ef3..6d195cde2e3ba5a227bbc22ff972da28ca6e3a63 100644 --- a/src/sbbs3/scfglib1.c +++ b/src/sbbs3/scfglib1.c @@ -900,48 +900,86 @@ BOOL read_msgs_cfg(scfg_t* cfg, read_cfg_text_t* txt) void free_node_cfg(scfg_t* cfg) { - FREE_AND_NULL(cfg->mdm_result); + int i; + + if(cfg->mdm_result!=NULL) { + for(i=0;i<cfg->mdm_results;i++) { + FREE_ALLOC(cfg->mdm_result[i].str); + } + FREE_AND_NULL(cfg->mdm_result); + } + + for(i=0;i<10;i++) { /* WFC 0-9 DOS commands */ + FREE_ALLOC(cfg->wfc_cmd[i]); + } + for(i=0;i<12;i++) { /* WFC F1-F12 shrinking DOS cmds */ + FREE_ALLOC(cfg->wfc_scmd[i]); + } } void free_main_cfg(scfg_t* cfg) { int i; - for(i=0;i<cfg->sys_nodes;i++) - FREE_AND_NULL(cfg->node_path[i]); - FREE_AND_NULL(cfg->node_path); - for(i=0;i<cfg->total_shells;i++) - FREE_AND_NULL(cfg->shell[i]); - FREE_AND_NULL(cfg->shell); + if(cfg->node_path!=NULL) { + for(i=0;i<cfg->sys_nodes;i++) + FREE_AND_NULL(cfg->node_path[i]); + FREE_AND_NULL(cfg->node_path); + } + if(cfg->shell!=NULL) { + for(i=0;i<cfg->total_shells;i++) { + FREE_ALLOC(cfg->shell[i]->name); + FREE_AND_NULL(cfg->shell[i]); + } + FREE_AND_NULL(cfg->shell); + } } void free_msgs_cfg(scfg_t* cfg) { int i; - for(i=0;i<cfg->total_grps;i++) - FREE_AND_NULL(cfg->grp[i]); - FREE_AND_NULL(cfg->grp); + if(cfg->grp!=NULL) { + for(i=0;i<cfg->total_grps;i++) { + FREE_ALLOC(cfg->grp[i]->lname); + FREE_ALLOC(cfg->grp[i]->sname); + FREE_AND_NULL(cfg->grp[i]); + } + FREE_AND_NULL(cfg->grp); + } - for(i=0;i<cfg->total_subs;i++) - FREE_AND_NULL(cfg->sub[i]); - FREE_AND_NULL(cfg->sub); + if(cfg->sub!=NULL) { + for(i=0;i<cfg->total_subs;i++) { + FREE_ALLOC(cfg->sub[i]->lname); + FREE_ALLOC(cfg->sub[i]->sname); + FREE_ALLOC(cfg->sub[i]->qwkname); + FREE_AND_NULL(cfg->sub[i]); + } + FREE_AND_NULL(cfg->sub); + } FREE_AND_NULL(cfg->faddr); cfg->total_faddrs=0; - for(i=0;i<cfg->total_qhubs;i++) { - FREE_AND_NULL(cfg->qhub[i]->mode); - FREE_AND_NULL(cfg->qhub[i]->conf); - FREE_AND_NULL(cfg->qhub[i]->sub); - FREE_AND_NULL(cfg->qhub[i]); } - FREE_AND_NULL(cfg->qhub); - cfg->qhub=NULL; - - for(i=0;i<cfg->total_phubs;i++) - FREE_AND_NULL(cfg->phub[i]); - FREE_AND_NULL(cfg->phub); + if(cfg->qhub!=NULL) { + for(i=0;i<cfg->total_qhubs;i++) { + FREE_ALLOC(cfg->qhub[i]->call); + FREE_ALLOC(cfg->qhub[i]->pack); + FREE_ALLOC(cfg->qhub[i]->unpack); + FREE_AND_NULL(cfg->qhub[i]->mode); + FREE_AND_NULL(cfg->qhub[i]->conf); + FREE_AND_NULL(cfg->qhub[i]->sub); + FREE_AND_NULL(cfg->qhub[i]); } + FREE_AND_NULL(cfg->qhub); + } + if(cfg->phub!=NULL) { + for(i=0;i<cfg->total_phubs;i++) { + FREE_ALLOC(cfg->phub[i]->call); + FREE_AND_NULL(cfg->phub[i]); + } + FREE_AND_NULL(cfg->phub); + } } /************************************************************/ diff --git a/src/sbbs3/scfglib2.c b/src/sbbs3/scfglib2.c index ad832c99f6b6df37bdeca8375cfd0e895bca70ab..7018204c85ab28bb53117a273259df7c6741b3ce 100644 --- a/src/sbbs3/scfglib2.c +++ b/src/sbbs3/scfglib2.c @@ -1097,70 +1097,141 @@ void free_file_cfg(scfg_t* cfg) { uint i; - for(i=0;i<cfg->total_fextrs;i++) - FREE_AND_NULL(cfg->fextr[i]); - FREE_AND_NULL(cfg->fextr); - - for(i=0;i<cfg->total_fcomps;i++) - FREE_AND_NULL(cfg->fcomp[i]); - FREE_AND_NULL(cfg->fcomp); - - for(i=0;i<cfg->total_fviews;i++) - FREE_AND_NULL(cfg->fview[i]); - FREE_AND_NULL(cfg->fview); - - for(i=0;i<cfg->total_ftests;i++) - FREE_AND_NULL(cfg->ftest[i]); - FREE_AND_NULL(cfg->ftest); - - for(i=0;i<cfg->total_dlevents;i++) - FREE_AND_NULL(cfg->dlevent[i]); - FREE_AND_NULL(cfg->dlevent); - - for(i=0;i<cfg->total_prots;i++) - FREE_AND_NULL(cfg->prot[i]); - FREE_AND_NULL(cfg->prot); - - for(i=0;i<cfg->altpaths;i++) - FREE_AND_NULL(cfg->altpath[i]); - FREE_AND_NULL(cfg->altpath); + if(cfg->fextr!=NULL) { + for(i=0;i<cfg->total_fextrs;i++) { + FREE_ALLOC(cfg->fextr[i]->cmd); + FREE_AND_NULL(cfg->fextr[i]); + } + FREE_AND_NULL(cfg->fextr); + } - for(i=0;i<cfg->total_libs;i++) - FREE_AND_NULL(cfg->lib[i]); - FREE_AND_NULL(cfg->lib); + if(cfg->fcomp!=NULL) { + for(i=0;i<cfg->total_fcomps;i++) { + FREE_ALLOC(cfg->fcomp[i]->cmd); + FREE_AND_NULL(cfg->fcomp[i]); + } + FREE_AND_NULL(cfg->fcomp); + } - for(i=0;i<cfg->total_dirs;i++) - FREE_AND_NULL(cfg->dir[i]); - FREE_AND_NULL(cfg->dir); + if(cfg->fview!=NULL) { + for(i=0;i<cfg->total_fviews;i++) { + FREE_ALLOC(cfg->fview[i]->cmd); + FREE_AND_NULL(cfg->fview[i]); + } + FREE_AND_NULL(cfg->fview); + } + + if(cfg->ftest!=NULL) { + for(i=0;i<cfg->total_ftests;i++) { + FREE_ALLOC(cfg->ftest[i]->cmd); + FREE_ALLOC(cfg->ftest[i]->workstr); + FREE_AND_NULL(cfg->ftest[i]); + } + FREE_AND_NULL(cfg->ftest); + } + + if(cfg->dlevent!=NULL) { + for(i=0;i<cfg->total_dlevents;i++) { + FREE_ALLOC(cfg->dlevent[i]->cmd); + FREE_ALLOC(cfg->dlevent[i]->workstr); + FREE_AND_NULL(cfg->dlevent[i]); + } + FREE_AND_NULL(cfg->dlevent); + } + + if(cfg->prot!=NULL) { + for(i=0;i<cfg->total_prots;i++) { + FREE_ALLOC(cfg->prot[i]->name); + FREE_ALLOC(cfg->prot[i]->ulcmd); + FREE_ALLOC(cfg->prot[i]->dlcmd); + FREE_ALLOC(cfg->prot[i]->batulcmd); + FREE_ALLOC(cfg->prot[i]->batdlcmd); + FREE_ALLOC(cfg->prot[i]->blindcmd); + FREE_ALLOC(cfg->prot[i]->bicmd); + FREE_AND_NULL(cfg->prot[i]); + } + FREE_AND_NULL(cfg->prot); + } + + if(cfg->altpath!=NULL) { + for(i=0;i<cfg->altpaths;i++) + FREE_AND_NULL(cfg->altpath[i]); + FREE_AND_NULL(cfg->altpath); + } + + if(cfg->lib!=NULL) { + for(i=0;i<cfg->total_libs;i++) { + FREE_ALLOC(cfg->lib[i]->lname); + FREE_ALLOC(cfg->lib[i]->sname); + FREE_AND_NULL(cfg->lib[i]); + } + FREE_AND_NULL(cfg->lib); + } + + if(cfg->dir!=NULL) { + for(i=0;i<cfg->total_dirs;i++) { + FREE_ALLOC(cfg->dir[i]->lname); + FREE_ALLOC(cfg->dir[i]->sname); + FREE_ALLOC(cfg->dir[i]->exts); + FREE_ALLOC(cfg->dir[i]->upload_sem); + FREE_AND_NULL(cfg->dir[i]); + } + FREE_AND_NULL(cfg->dir); + } - for(i=0;i<cfg->total_txtsecs;i++) - FREE_AND_NULL(cfg->txtsec[i]); - FREE_AND_NULL(cfg->txtsec); + if(cfg->txtsec!=NULL) { + for(i=0;i<cfg->total_txtsecs;i++) { + FREE_ALLOC(cfg->txtsec[i]->name); + FREE_AND_NULL(cfg->txtsec[i]); + } + FREE_AND_NULL(cfg->txtsec); + } } void free_chat_cfg(scfg_t* cfg) { int i; - for(i=0;i<cfg->total_actsets;i++) - FREE_AND_NULL(cfg->actset[i]); - FREE_AND_NULL(cfg->actset); - - for(i=0;i<cfg->total_chatacts;i++) - FREE_AND_NULL(cfg->chatact[i]); - FREE_AND_NULL(cfg->chatact); + if(cfg->actset!=NULL) { + for(i=0;i<cfg->total_actsets;i++) { + FREE_ALLOC(cfg->actset[i]->name); + FREE_AND_NULL(cfg->actset[i]); + } + FREE_AND_NULL(cfg->actset); + } + + if(cfg->chatact!=NULL) { + for(i=0;i<cfg->total_chatacts;i++) { + FREE_ALLOC(cfg->chatact[i]->cmd); + FREE_ALLOC(cfg->chatact[i]->out); + FREE_AND_NULL(cfg->chatact[i]); + } + FREE_AND_NULL(cfg->chatact); + } - for(i=0;i<cfg->total_chans;i++) - FREE_AND_NULL(cfg->chan[i]); - FREE_AND_NULL(cfg->chan); + if(cfg->chan!=NULL) { + for(i=0;i<cfg->total_chans;i++) { + FREE_ALLOC(cfg->chan[i]->name); + FREE_AND_NULL(cfg->chan[i]); + } + FREE_AND_NULL(cfg->chan); + } - for(i=0;i<cfg->total_gurus;i++) - FREE_AND_NULL(cfg->guru[i]); - FREE_AND_NULL(cfg->guru); + if(cfg->guru!=NULL) { + for(i=0;i<cfg->total_gurus;i++) { + FREE_ALLOC(cfg->guru[i]->name); + FREE_AND_NULL(cfg->guru[i]); + } + FREE_AND_NULL(cfg->guru); + } - for(i=0;i<cfg->total_pages;i++) - FREE_AND_NULL(cfg->page[i]); - FREE_AND_NULL(cfg->page); + if(cfg->page!=NULL) { + for(i=0;i<cfg->total_pages;i++) { + FREE_ALLOC(cfg->page[i]->cmd); + FREE_AND_NULL(cfg->page[i]); + } + FREE_AND_NULL(cfg->page); + } } @@ -1168,24 +1239,55 @@ void free_xtrn_cfg(scfg_t* cfg) { int i; - for(i=0;i<cfg->total_swaps;i++) - FREE_AND_NULL(cfg->swap[i]); - FREE_AND_NULL(cfg->swap); - - for(i=0;i<cfg->total_xedits;i++) - FREE_AND_NULL(cfg->xedit[i]); - FREE_AND_NULL(cfg->xedit); - - for(i=0;i<cfg->total_xtrnsecs;i++) - FREE_AND_NULL(cfg->xtrnsec[i]); - FREE_AND_NULL(cfg->xtrnsec); + if(cfg->swap!=NULL) { + for(i=0;i<cfg->total_swaps;i++) { + FREE_ALLOC(cfg->swap[i]->cmd); + FREE_AND_NULL(cfg->swap[i]); + } + FREE_AND_NULL(cfg->swap); + } + + if(cfg->xedit!=NULL) { + for(i=0;i<cfg->total_xedits;i++) { + FREE_ALLOC(cfg->xedit[i]->name); + FREE_ALLOC(cfg->xedit[i]->lcmd); + FREE_ALLOC(cfg->xedit[i]->rcmd); + FREE_AND_NULL(cfg->xedit[i]); + } + FREE_AND_NULL(cfg->xedit); + } - for(i=0;i<cfg->total_xtrns;i++) - FREE_AND_NULL(cfg->xtrn[i]); - FREE_AND_NULL(cfg->xtrn); + if(cfg->xtrnsec!=NULL) { + for(i=0;i<cfg->total_xtrnsecs;i++) { + FREE_ALLOC(cfg->xtrnsec[i]->name); + FREE_AND_NULL(cfg->xtrnsec[i]); + } + FREE_AND_NULL(cfg->xtrnsec); + } + + if(cfg->xtrn!=NULL) { + for(i=0;i<cfg->total_xtrns;i++) { + FREE_ALLOC(cfg->xtrn[i]->name); + FREE_ALLOC(cfg->xtrn[i]->cmd); + FREE_ALLOC(cfg->xtrn[i]->clean); + FREE_AND_NULL(cfg->xtrn[i]); + } + FREE_AND_NULL(cfg->xtrn); + } - for(i=0;i<cfg->total_events;i++) - FREE_AND_NULL(cfg->event[i]); - FREE_AND_NULL(cfg->event); + if(cfg->event!=NULL) { + for(i=0;i<cfg->total_events;i++) { + FREE_ALLOC(cfg->event[i]->cmd); + FREE_AND_NULL(cfg->event[i]); + } + FREE_AND_NULL(cfg->event); + } + if(cfg->natvpgm!=NULL) { + for(i=0;i<cfg->total_natvpgms;i++) { + FREE_ALLOC(cfg->natvpgm[i]->name); + FREE_AND_NULL(cfg->natvpgm[i]); + } + FREE_AND_NULL(cfg->natvpgm); + } }