diff --git a/src/sbbs3/echocfg.c b/src/sbbs3/echocfg.c index 53046f295b74c74305114096ebeb248253d55488..b47d7b404c7d553e946ed8c2ce4bf6987aee9803 100644 --- a/src/sbbs3/echocfg.c +++ b/src/sbbs3/echocfg.c @@ -180,24 +180,6 @@ int main(int argc, char **argv) } SAFECOPY(cfg.cfgfile,str); - p=getenv("SBBSCTRL"); - if(!p) { - p=getenv("SBBSNODE"); - if(!p) { - printf("usage: echocfg [cfg_file]\n"); - exit(1); - } - strcpy(str,p); - backslash(str); - strcat(str,"../ctrl/ftn_domains.ini"); - } - else { - strcpy(str,p); - backslash(str); - strcat(str,"ftn_domains.ini"); - } - SAFECOPY(cfg.ftndomainsfile,str); - if(!sbbsecho_read_ini(&cfg)) { fprintf(stderr, "ERROR %d (%s) reading %s\n", errno, strerror(errno), cfg.cfgfile); exit(1); diff --git a/src/sbbs3/rechocfg.c b/src/sbbs3/rechocfg.c index 577543a1e4f656871bf82e021fff26a77c148225..43e7e28e6ee85639c923996ced4b99ab65ce992c 100644 --- a/src/sbbs3/rechocfg.c +++ b/src/sbbs3/rechocfg.c @@ -365,19 +365,31 @@ bool sbbsecho_read_ini(sbbsecho_cfg_t* cfg) strListFree(&ini); + return true; +} + +bool sbbsecho_read_ftn_domains(sbbsecho_cfg_t* cfg, const char * ctrl_dir) +{ + FILE* fp; + str_list_t ini; + char path[MAX_PATH+1]; + str_list_t domains; + const char * domain; + str_list_t zones; + const char * zone; + struct zone_mapping * mapping; + if(cfg->use_ftn_domains) { - if((fp=iniOpenFile(cfg->ftndomainsfile, /* create: */false))==NULL) + SAFEPRINTF(path, "%sftn_domains.ini", ctrl_dir); + if((fp=iniOpenFile(path, /* create: */false))==NULL) return false; ini = iniReadFile(fp); iniCloseFile(fp); - str_list_t domains = iniGetSectionList(ini, NULL); - const char* domain; + domains = iniGetSectionList(ini, NULL); while((domain = strListPop(&domains)) != NULL) { - str_list_t zones = iniGetStringList(ini, domain, "Zones", ",", NULL); - const char* zone; + zones = iniGetStringList(ini, domain, "Zones", ",", NULL); while((zone = strListPop(&zones)) != NULL) { - char path[MAX_PATH+1]; - struct zone_mapping *mapping = (struct zone_mapping *)malloc(sizeof(struct zone_mapping)); + mapping = (struct zone_mapping *)malloc(sizeof(struct zone_mapping)); if (mapping == NULL) { strListFree(&zones); @@ -390,9 +402,11 @@ bool sbbsecho_read_ini(sbbsecho_cfg_t* cfg) mapping->next = cfg->zone_map; cfg->zone_map = mapping; } + strListFree(&zones); } + strListFree(&domains); } - + strListFree(&ini); return true; } diff --git a/src/sbbs3/sbbsecho.c b/src/sbbs3/sbbsecho.c index 6d16dc0394797125b6e8b2e2f02151c53397ef0f..78ec34d77efe952a03464334b2fee5db9f960d2c 100644 --- a/src/sbbs3/sbbsecho.c +++ b/src/sbbs3/sbbsecho.c @@ -5015,13 +5015,14 @@ int main(int argc, char **argv) if(!cfg.cfgfile[0]) SAFEPRINTF(cfg.cfgfile,"%ssbbsecho.ini",scfg.ctrl_dir); - if(!cfg.ftndomainsfile[0]) - SAFEPRINTF(cfg.ftndomainsfile,"%sftn_domains.ini",scfg.ctrl_dir); - if(!sbbsecho_read_ini(&cfg)) { fprintf(stderr, "ERROR %d (%s) reading %s\n", errno, strerror(errno), cfg.cfgfile); bail(1); } + if(!sbbsecho_read_ftn_domains(&cfg, scfg.ctrl_dir)) { + fprintf(stderr, "ERROR %d (%s) reading %sftn_domains.ini\n", errno, strerror(errno), scfg.ctrl_dir); + bail(1); + } if(nodeaddr.zone && (nodecfg = findnodecfg(&cfg, nodeaddr, /* exact: */true)) == NULL) { fprintf(stderr, "Invalid node address: %s\n", argv[i]); diff --git a/src/sbbs3/sbbsecho.h b/src/sbbs3/sbbsecho.h index 5d5edf79d60b3c43b3c895277e47cae893e27bf2..aad74decea00e9642392169c1ae28cd5dac41650 100644 --- a/src/sbbs3/sbbsecho.h +++ b/src/sbbs3/sbbsecho.h @@ -135,7 +135,6 @@ typedef struct { char areafile[MAX_PATH+1]; /* AREAS.BBS path/filename */ char logfile[MAX_PATH+1]; /* LOG path/filename */ char cfgfile[MAX_PATH+1]; /* Configuration path/filename */ - char ftndomainsfile[MAX_PATH+1]; /* ftn_domains.ini path/filename */ char temp_dir[MAX_PATH+1]; /* Temporary file directory */ str_list_t sysop_alias_list; /* List of sysop aliases */ ulong maxpktsize /* Maximum size for packets */ @@ -186,6 +185,7 @@ char* mailStatusStringList[4]; /* Function prototypes */ /***********************/ bool sbbsecho_read_ini(sbbsecho_cfg_t*); +bool sbbsecho_read_ftn_domains(sbbsecho_cfg_t*, const char*); bool sbbsecho_write_ini(sbbsecho_cfg_t*); void bail(int code); fidoaddr_t atofaddr(const char *str);