Skip to content
Snippets Groups Projects
Commit c7ca69e9 authored by Rob Swindell's avatar Rob Swindell :speech_balloon:
Browse files

Store the last read configuration filename in scfg_t.filename

Allows SCFG to more easily display the most relevant .ini file using the
UIFC timedisplay() callback.
parent 5a8e1dfd
No related branches found
No related tags found
1 merge request!463MRC mods by Codefenix (2024-10-20)
......@@ -362,11 +362,15 @@ void cfg_wizard(void)
free_msgs_cfg(&cfg);
}
void display_filename(const char* fname)
void display_filename(BOOL force)
{
static char last[MAX_PATH + 1];
const char* fname = cfg.filename;
if(strlen(fname) + 30 > uifc.scrn_width)
fname = getfname(fname);
if(force || strcmp(last, fname) != 0)
uifc.printf(29, 1, uifc.bclr|(uifc.cclr<<4), "%*s", uifc.scrn_width - 30, fname);
SAFECOPY(last, fname);
}
int main(int argc, char **argv)
......@@ -654,7 +658,7 @@ int main(int argc, char **argv)
if((mopt[i]=(char *)malloc(64))==NULL)
allocfail(64);
uifc.timedisplay = NULL;
uifc.timedisplay = display_filename;
SAFEPRINTF2(title,"Synchronet for %s v%s",PLATFORM_DESC,VERSION);
if(uifc.scrn(title)) {
printf(" USCRN (len=%d) failed!\n",uifc.scrn_len+1);
......@@ -697,7 +701,7 @@ int main(int argc, char **argv)
i = cryptInit();
(void)i;
while(1) {
display_filename(cfg_fname);
*cfg.filename = '\0';
uifc.helpbuf=
"`Main Configuration Menu:`\n"
"\n"
......@@ -731,12 +735,12 @@ int main(int argc, char **argv)
free_main_cfg(&cfg);
break;
case 1:
if(!load_main_cfg(&cfg, error, sizeof(error))) {
if(!load_xtrn_cfg(&cfg, error, sizeof(error))) {
SAFEPRINTF(errormsg,"ERROR: %s",error);
uifc.msg(errormsg);
break;
}
if(!load_xtrn_cfg(&cfg, error, sizeof(error))) {
if(!load_main_cfg(&cfg, error, sizeof(error))) {
SAFEPRINTF(errormsg,"ERROR: %s",error);
uifc.msg(errormsg);
break;
......
......@@ -115,7 +115,6 @@ extern char* area_sort_desc[AREA_SORT_TYPES+1];
/* Function Prototypes */
/***********************/
void display_filename(const char*);
void bail(int code);
void errormsg(int line, const char* function, const char *source, const char* action, const char *object, ulong access);
void clearptrs(int subnum);
......
......@@ -388,6 +388,7 @@ void net_cfg()
int mode;
while(1) {
*cfg.filename = '\0';
i=0;
strcpy(opt[i++],"Internet E-mail");
strcpy(opt[i++],"QWK Packet Networks");
......
......@@ -32,11 +32,13 @@ static char* node_path_help =
void node_menu()
{
char str[81],savnode=0;
char cfg_filename[MAX_PATH + 1];
int i,j;
static int node_menu_dflt, node_bar;
SAFECOPY(cfg_filename, cfg.filename);
while(1) {
display_filename("");
SAFECOPY(cfg.filename, cfg_filename);
for(i=0;i<cfg.sys_nodes;i++)
sprintf(opt[i],"Node %d",i+1);
opt[i][0]=0;
......@@ -156,9 +158,6 @@ void node_menu()
cfg.node_num = i + 1; /* so fix it */
save_node_cfg(&cfg, backup_level); /* and write it back */
}
char cfg_fname[MAX_PATH + 1];
SAFEPRINTF(cfg_fname, "%snode.ini", cfg.node_dir);
display_filename(cfg_fname);
node_cfg();
free_node_cfg(&cfg);
......
......@@ -52,6 +52,7 @@ static const char* maximum(uint val)
static void global_cfg(global_startup_t* startup)
{
static int cur;
char str[256];
char tmp[256];
while(1) {
......@@ -85,6 +86,35 @@ static void global_cfg(global_startup_t* startup)
,"Global Server Setttings",opt)) {
default:
return;
case 0:
i = startup->log_level;
i = uifc.list(WIN_MID|WIN_SAV, 0, 0, 0, &i, 0, "Log Level", iniLogLevelStringList());
if(i >= 0 && startup->log_level != i) {
startup->log_level = i;
uifc.changes = true;
}
break;
case 1:
i = startup->tls_error_level;
i = uifc.list(WIN_MID|WIN_SAV, 0, 0, 0, &i, 0, "TLS Error Log Level", iniLogLevelStringList());
if(i >= 0 && startup->tls_error_level != i) {
startup->tls_error_level = i;
uifc.changes = true;
}
break;
case 2:
strListCombine(startup->interfaces, str, sizeof(str), ", ");
if(uifc.input(WIN_MID|WIN_SAV, 0, 0, "", str, sizeof(str)-1, K_NONE|K_EDIT) >= 0) {
strListFree(&startup->interfaces);
strListSplitCopy(&startup->interfaces, str, ", ");
uifc.changes = true;
}
break;
case 3:
IPv4AddressToStr(startup->outgoing4.s_addr, str, sizeof(str));
if(uifc.input(WIN_MID|WIN_SAV, 0, 0, "Outbound Network Interface", str, sizeof(str)-1, K_NONE|K_EDIT) > 0)
startup->outgoing4.s_addr = parseIPv4Address(str);
break;
}
}
}
......@@ -380,17 +410,15 @@ void server_cfg(void)
mail_startup_t mail_startup = {0};
services_startup_t services_startup = {0};
char ini_fname[MAX_PATH + 1];
sbbs_get_ini_fname(ini_fname, cfg.ctrl_dir);
FILE* fp = fopen(ini_fname, "r");
sbbs_get_ini_fname(cfg.filename, cfg.ctrl_dir);
FILE* fp = fopen(cfg.filename, "r");
if(fp == NULL) {
uifc.msgf("Error opening %s", ini_fname);
uifc.msgf("Error opening %s", cfg.filename);
return;
}
display_filename(ini_fname);
sbbs_read_ini(
fp
,ini_fname
,cfg.filename
,&global_startup
,&run_bbs
,&bbs_startup
......
......@@ -396,6 +396,7 @@ typedef struct
{
DWORD size; /* sizeof(scfg_t) */
BOOL prepped; /* TRUE if prep_cfg() has been used */
char filename[MAX_PATH + 1]; // last-loaded cfg file path/name
grp_t **grp; /* Each message group */
uint16_t total_grps; /* Total number of groups */
......
......@@ -39,16 +39,15 @@ BOOL allocerr(char* error, size_t maxerrlen, const char* fname, const char *item
/****************************************************************************/
BOOL read_node_cfg(scfg_t* cfg, char* error, size_t maxerrlen)
{
char path[MAX_PATH+1];
char errstr[256];
FILE* fp;
str_list_t ini;
char value[INI_MAX_VALUE_LEN];
const char* fname = "node.ini";
SAFEPRINTF2(path,"%s%s",cfg->node_dir,fname);
if((fp = fnopen(NULL, path, O_RDONLY)) == NULL) {
safe_snprintf(error, maxerrlen, "%d (%s) opening %s",errno,safe_strerror(errno, errstr, sizeof(errstr)),path);
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);
return FALSE;
}
ini = iniReadFile(fp);
......@@ -76,7 +75,6 @@ BOOL read_node_cfg(scfg_t* cfg, char* error, size_t maxerrlen)
BOOL read_main_cfg(scfg_t* cfg, char* error, size_t maxerrlen)
{
BOOL result = FALSE;
char path[MAX_PATH+1];
char errstr[256];
FILE* fp;
str_list_t ini = NULL;
......@@ -84,9 +82,9 @@ BOOL read_main_cfg(scfg_t* cfg, char* error, size_t maxerrlen)
str_list_t section;
const char* fname = "main.ini";
SAFEPRINTF2(path,"%s%s",cfg->ctrl_dir,fname);
if((fp = fnopen(NULL, path, O_RDONLY)) == NULL) {
safe_snprintf(error, maxerrlen, "%d (%s) opening %s",errno,safe_strerror(errno, errstr, sizeof(errstr)),path);
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);
} else {
ini = iniReadFile(fp);
fclose(fp);
......@@ -332,16 +330,15 @@ BOOL read_main_cfg(scfg_t* cfg, char* error, size_t maxerrlen)
/****************************************************************************/
BOOL read_msgs_cfg(scfg_t* cfg, char* error, size_t maxerrlen)
{
char path[MAX_PATH+1];
char errstr[256];
FILE* fp;
str_list_t ini;
char value[INI_MAX_VALUE_LEN];
const char* fname = "msgs.ini";
SAFEPRINTF2(path,"%s%s",cfg->ctrl_dir,fname);
if((fp = fnopen(NULL, path, O_RDONLY)) == NULL) {
safe_snprintf(error, maxerrlen, "%d (%s) opening %s",errno,safe_strerror(errno, errstr, sizeof(errstr)),path);
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);
return FALSE;
}
ini = iniReadFile(fp);
......
......@@ -46,16 +46,15 @@ static void read_dir_defaults_cfg(scfg_t* cfg, str_list_t ini, dir_t* dir)
/****************************************************************************/
BOOL read_file_cfg(scfg_t* cfg, char* error, size_t maxerrlen)
{
char path[MAX_PATH+1];
char errstr[256];
FILE* fp;
str_list_t ini;
char value[INI_MAX_VALUE_LEN];
const char* fname = "file.ini";
SAFEPRINTF2(path,"%s%s",cfg->ctrl_dir,fname);
if((fp = fnopen(NULL, path, O_RDONLY)) == NULL) {
safe_snprintf(error, maxerrlen, "%d (%s) opening %s",errno,safe_strerror(errno, errstr, sizeof(errstr)),path);
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);
return FALSE;
}
ini = iniReadFile(fp);
......@@ -364,16 +363,15 @@ BOOL read_file_cfg(scfg_t* cfg, char* error, size_t maxerrlen)
/****************************************************************************/
BOOL read_xtrn_cfg(scfg_t* cfg, char* error, size_t maxerrlen)
{
char path[MAX_PATH+1];
char errstr[256];
FILE* fp;
str_list_t ini;
char value[INI_MAX_VALUE_LEN];
const char* fname = "xtrn.ini";
SAFEPRINTF2(path,"%s%s",cfg->ctrl_dir,fname);
if((fp = fnopen(NULL, path, O_RDONLY)) == NULL) {
safe_snprintf(error, maxerrlen, "%d (%s) opening %s",errno,safe_strerror(errno, errstr, sizeof(errstr)),path);
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);
return FALSE;
}
ini = iniReadFile(fp);
......@@ -576,16 +574,15 @@ BOOL read_xtrn_cfg(scfg_t* cfg, char* error, size_t maxerrlen)
/****************************************************************************/
BOOL read_chat_cfg(scfg_t* cfg, char* error, size_t maxerrlen)
{
char path[MAX_PATH+1];
char errstr[256];
FILE* fp;
str_list_t ini;
char value[INI_MAX_VALUE_LEN];
const char* fname = "chat.ini";
SAFEPRINTF2(path,"%s%s",cfg->ctrl_dir,fname);
if((fp = fnopen(NULL, path, O_RDONLY)) == NULL) {
safe_snprintf(error, maxerrlen, "%d (%s) opening %s",errno,safe_strerror(errno, errstr, sizeof(errstr)),path);
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);
return FALSE;
}
ini = iniReadFile(fp);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment