From 9811593bef89eef9387c21193b91f8307a1bbd1d Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Sun, 2 Mar 2008 23:34:12 +0000 Subject: [PATCH] Automatically recycle whenever ctrl/services.ini is modified. --- src/sbbs3/services.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/sbbs3/services.c b/src/sbbs3/services.c index fc8e857ce0..d58eb94de3 100644 --- a/src/sbbs3/services.c +++ b/src/sbbs3/services.c @@ -1443,7 +1443,7 @@ void DLLCALL services_terminate(void) #define NEXT_FIELD(p) FIND_WHITESPACE(p); SKIP_WHITESPACE(p) -static service_t* read_services_ini(service_t* service, uint32_t* services) +static service_t* read_services_ini(const char* services_ini, service_t* service, uint32_t* services) { uint i,j; FILE* fp; @@ -1452,7 +1452,6 @@ static service_t* read_services_ini(service_t* service, uint32_t* services) char host[INI_MAX_VALUE_LEN]; char prot[INI_MAX_VALUE_LEN]; char portstr[INI_MAX_VALUE_LEN]; - char services_ini[MAX_PATH+1]; char** sec_list; str_list_t list; service_t* np; @@ -1463,8 +1462,6 @@ static service_t* read_services_ini(service_t* service, uint32_t* services) uint32_t options; uint32_t stack_size; - iniFileName(services_ini,sizeof(services_ini),scfg.ctrl_dir,"services.ini"); - if((fp=fopen(services_ini,"r"))==NULL) { lprintf(LOG_ERR,"!ERROR %d opening %s", errno, services_ini); return(NULL); @@ -1613,6 +1610,7 @@ void DLLCALL services_thread(void* arg) char host_ip[32]; char compiler[32]; char str[128]; + char services_ini[MAX_PATH+1]; SOCKADDR_IN addr; SOCKADDR_IN client_addr; socklen_t client_addr_len; @@ -1734,7 +1732,9 @@ void DLLCALL services_thread(void* arg) if(uptime==0) uptime=time(NULL); /* this must be done *after* setting the timezone */ - if((service=read_services_ini(service, &services))==NULL) { + iniFileName(services_ini,sizeof(services_ini),scfg.ctrl_dir,"services.ini"); + + if((service=read_services_ini(services_ini, service, &services))==NULL) { cleanup(1); return; } @@ -1844,6 +1844,7 @@ void DLLCALL services_thread(void* arg) recycle_semfiles=semfile_list_init(scfg.ctrl_dir,"recycle","services"); SAFEPRINTF(path,"%sservices.rec",scfg.ctrl_dir); /* legacy */ semfile_list_add(&recycle_semfiles,path); + semfile_list_add(&recycle_semfiles,services_ini); if(!initialized) { semfile_list_check(&initialized,recycle_semfiles); semfile_list_check(&initialized,shutdown_semfiles); -- GitLab