From 44b544a26cbacb45b6c4739c2025d4815d96cbc8 Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Wed, 12 Oct 2005 23:18:00 +0000 Subject: [PATCH] Use iniGet* API instead of iniRead* API for sbbs.ini and services.ini files - (potentially) faster and supports !include files. --- src/sbbs3/sbbs_ini.c | 287 ++++++++++++++++++++++--------------------- src/sbbs3/sbbs_ini.h | 8 +- src/sbbs3/services.c | 35 +++--- 3 files changed, 169 insertions(+), 161 deletions(-) diff --git a/src/sbbs3/sbbs_ini.c b/src/sbbs3/sbbs_ini.c index 5b67486f16..271e906557 100644 --- a/src/sbbs3/sbbs_ini.c +++ b/src/sbbs3/sbbs_ini.c @@ -1,6 +1,6 @@ /* sbbs_ini.c */ -/* Synchronet console configuration (.ini) file routines */ +/* Synchronet initialization (.ini) file routines */ /* $Id$ */ @@ -123,18 +123,18 @@ static void sbbs_fix_js_settings(js_startup_t* js) if(js->cx_stack==0) js->cx_stack=JAVASCRIPT_CONTEXT_STACK; } -void sbbs_read_js_settings( - FILE* fp +void sbbs_get_js_settings( + str_list_t list ,const char* section ,js_startup_t* js ,js_startup_t* defaults) { - js->max_bytes = iniReadInteger(fp,section,strJavaScriptMaxBytes ,defaults->max_bytes); - js->cx_stack = iniReadInteger(fp,section,strJavaScriptContextStack ,defaults->cx_stack); - js->thread_stack = iniReadInteger(fp,section,strJavaScriptThreadStack ,defaults->thread_stack); - js->branch_limit = iniReadInteger(fp,section,strJavaScriptBranchLimit ,defaults->branch_limit); - js->gc_interval = iniReadInteger(fp,section,strJavaScriptGcInterval ,defaults->gc_interval); - js->yield_interval = iniReadInteger(fp,section,strJavaScriptYieldInterval ,defaults->yield_interval); + js->max_bytes = iniGetInteger(list,section,strJavaScriptMaxBytes ,defaults->max_bytes); + js->cx_stack = iniGetInteger(list,section,strJavaScriptContextStack ,defaults->cx_stack); + js->thread_stack = iniGetInteger(list,section,strJavaScriptThreadStack ,defaults->thread_stack); + js->branch_limit = iniGetInteger(list,section,strJavaScriptBranchLimit ,defaults->branch_limit); + js->gc_interval = iniGetInteger(list,section,strJavaScriptGcInterval ,defaults->gc_interval); + js->yield_interval = iniGetInteger(list,section,strJavaScriptYieldInterval ,defaults->yield_interval); sbbs_fix_js_settings(js); } @@ -194,19 +194,19 @@ BOOL sbbs_set_js_settings( return(!failure); } -static void read_ini_globals(FILE* fp, global_startup_t* global) +static void get_ini_globals(str_list_t list, global_startup_t* global) { const char* section = "Global"; char value[INI_MAX_VALUE_LEN]; char* p; - p=iniReadString(fp,section,strCtrlDirectory,nulstr,value); + p=iniGetString(list,section,strCtrlDirectory,nulstr,value); if(*p) { SAFECOPY(global->ctrl_dir,value); backslash(global->ctrl_dir); } - p=iniReadString(fp,section,strTempDirectory,nulstr,value); + p=iniGetString(list,section,strTempDirectory,nulstr,value); #if defined(__unix__) if(*p==0) p=_PATH_TMP; /* Good idea to use "/tmp" on Unix */ @@ -216,15 +216,15 @@ static void read_ini_globals(FILE* fp, global_startup_t* global) backslash(global->temp_dir); } - p=iniReadString(fp,section,strHostName,nulstr,value); + p=iniGetString(list,section,strHostName,nulstr,value); if(*p) SAFECOPY(global->host_name,value); - global->sem_chk_freq=iniReadShortInt(fp,section,strSemFileCheckFrequency,0); - global->interface_addr=iniReadIpAddress(fp,section,strInterface,INADDR_ANY); - global->log_mask=iniReadBitField(fp,section,strLogMask,log_mask_bits,DEFAULT_LOG_MASK); - global->bind_retry_count=iniReadInteger(fp,section,strBindRetryCount,DEFAULT_BIND_RETRY_COUNT); - global->bind_retry_delay=iniReadInteger(fp,section,strBindRetryDelay,DEFAULT_BIND_RETRY_DELAY); + global->sem_chk_freq=iniGetShortInt(list,section,strSemFileCheckFrequency,0); + global->interface_addr=iniGetIpAddress(list,section,strInterface,INADDR_ANY); + global->log_mask=iniGetBitField(list,section,strLogMask,log_mask_bits,DEFAULT_LOG_MASK); + global->bind_retry_count=iniGetInteger(list,section,strBindRetryCount,DEFAULT_BIND_RETRY_COUNT); + global->bind_retry_delay=iniGetInteger(list,section,strBindRetryDelay,DEFAULT_BIND_RETRY_DELAY); /* Setup default values here */ global->js.max_bytes = JAVASCRIPT_MAX_BYTES; @@ -235,7 +235,7 @@ static void read_ini_globals(FILE* fp, global_startup_t* global) global->js.yield_interval = JAVASCRIPT_YIELD_INTERVAL; /* Read .ini values here */ - sbbs_read_js_settings(fp, section, &global->js, &global->js); + sbbs_get_js_settings(list, section, &global->js, &global->js); } @@ -258,6 +258,7 @@ void sbbs_read_ini( const char* default_term_ansi; const char* default_dosemu_path; char value[INI_MAX_VALUE_LEN]; + str_list_t list; global_startup_t global_buf; if(global==NULL) { @@ -265,7 +266,9 @@ void sbbs_read_ini( global=&global_buf; } - read_ini_globals(fp, global); + list=iniReadFile(fp); + + get_ini_globals(list, global); if(global->ctrl_dir[0]) { if(bbs!=NULL) SAFECOPY(bbs->ctrl_dir,global->ctrl_dir); @@ -286,44 +289,44 @@ void sbbs_read_ini( section = "BBS"; if(run_bbs!=NULL) - *run_bbs=iniReadBool(fp,section,strAutoStart,TRUE); + *run_bbs=iniGetBool(list,section,strAutoStart,TRUE); if(bbs!=NULL) { bbs->telnet_interface - =iniReadIpAddress(fp,section,"TelnetInterface",global->interface_addr); + =iniGetIpAddress(list,section,"TelnetInterface",global->interface_addr); bbs->telnet_port - =iniReadShortInt(fp,section,"TelnetPort",IPPORT_TELNET); + =iniGetShortInt(list,section,"TelnetPort",IPPORT_TELNET); bbs->rlogin_interface - =iniReadIpAddress(fp,section,"RLoginInterface",global->interface_addr); + =iniGetIpAddress(list,section,"RLoginInterface",global->interface_addr); bbs->rlogin_port - =iniReadShortInt(fp,section,"RLoginPort",513); + =iniGetShortInt(list,section,"RLoginPort",513); bbs->first_node - =iniReadShortInt(fp,section,"FirstNode",1); + =iniGetShortInt(list,section,"FirstNode",1); bbs->last_node - =iniReadShortInt(fp,section,"LastNode",4); + =iniGetShortInt(list,section,"LastNode",4); bbs->outbuf_highwater_mark - =iniReadShortInt(fp,section,"OutbufHighwaterMark",1024); + =iniGetShortInt(list,section,"OutbufHighwaterMark",1024); bbs->outbuf_drain_timeout - =iniReadShortInt(fp,section,"OutbufDrainTimeout",10); + =iniGetShortInt(list,section,"OutbufDrainTimeout",10); bbs->sem_chk_freq - =iniReadShortInt(fp,section,strSemFileCheckFrequency,global->sem_chk_freq); + =iniGetShortInt(list,section,strSemFileCheckFrequency,global->sem_chk_freq); bbs->xtrn_polls_before_yield - =iniReadInteger(fp,section,"ExternalYield",10); + =iniGetInteger(list,section,"ExternalYield",10); /* JavaScript operating parameters */ - sbbs_read_js_settings(fp, section, &bbs->js, &global->js); + sbbs_get_js_settings(list, section, &bbs->js, &global->js); SAFECOPY(bbs->host_name - ,iniReadString(fp,section,strHostName,global->host_name,value)); + ,iniGetString(list,section,strHostName,global->host_name,value)); SAFECOPY(bbs->temp_dir - ,iniReadString(fp,section,strTempDirectory,bbs->temp_dir,value)); + ,iniGetString(list,section,strTempDirectory,bbs->temp_dir,value)); /* Set default terminal type to "stock" termcap closest to "ansi-bbs" */ #if defined(__FreeBSD__) @@ -333,9 +336,9 @@ void sbbs_read_ini( #endif SAFECOPY(bbs->xtrn_term_ansi - ,iniReadString(fp,section,"ExternalTermANSI",default_term_ansi,value)); + ,iniGetString(list,section,"ExternalTermANSI",default_term_ansi,value)); SAFECOPY(bbs->xtrn_term_dumb - ,iniReadString(fp,section,"ExternalTermDumb","dumb",value)); + ,iniGetString(list,section,"ExternalTermDumb","dumb",value)); #if defined(__FreeBSD__) default_dosemu_path="/usr/bin/doscmd"; @@ -344,273 +347,275 @@ void sbbs_read_ini( #endif SAFECOPY(bbs->dosemu_path - ,iniReadString(fp,section,"DOSemuPath",default_dosemu_path,value)); + ,iniGetString(list,section,"DOSemuPath",default_dosemu_path,value)); SAFECOPY(bbs->answer_sound - ,iniReadString(fp,section,strAnswerSound,nulstr,value)); + ,iniGetString(list,section,strAnswerSound,nulstr,value)); SAFECOPY(bbs->hangup_sound - ,iniReadString(fp,section,strHangupSound,nulstr,value)); + ,iniGetString(list,section,strHangupSound,nulstr,value)); bbs->log_mask - =iniReadBitField(fp,section,strLogMask,log_mask_bits,global->log_mask); + =iniGetBitField(list,section,strLogMask,log_mask_bits,global->log_mask); bbs->options - =iniReadBitField(fp,section,strOptions,bbs_options + =iniGetBitField(list,section,strOptions,bbs_options ,BBS_OPT_XTRN_MINIMIZED|BBS_OPT_SYSOP_AVAILABLE); - bbs->bind_retry_count=iniReadInteger(fp,section,strBindRetryCount,global->bind_retry_count); - bbs->bind_retry_delay=iniReadInteger(fp,section,strBindRetryDelay,global->bind_retry_delay); + bbs->bind_retry_count=iniGetInteger(list,section,strBindRetryCount,global->bind_retry_count); + bbs->bind_retry_delay=iniGetInteger(list,section,strBindRetryDelay,global->bind_retry_delay); } /***********************************************************************/ section = "FTP"; if(run_ftp!=NULL) - *run_ftp=iniReadBool(fp,section,strAutoStart,TRUE); + *run_ftp=iniGetBool(list,section,strAutoStart,TRUE); if(ftp!=NULL) { ftp->interface_addr - =iniReadIpAddress(fp,section,strInterface,global->interface_addr); + =iniGetIpAddress(list,section,strInterface,global->interface_addr); ftp->port - =iniReadShortInt(fp,section,strPort,IPPORT_FTP); + =iniGetShortInt(list,section,strPort,IPPORT_FTP); ftp->max_clients - =iniReadShortInt(fp,section,strMaxClients,10); + =iniGetShortInt(list,section,strMaxClients,10); ftp->max_inactivity - =iniReadShortInt(fp,section,strMaxInactivity,300); /* seconds */ + =iniGetShortInt(list,section,strMaxInactivity,300); /* seconds */ ftp->qwk_timeout - =iniReadShortInt(fp,section,"QwkTimeout",600); /* seconds */ + =iniGetShortInt(list,section,"QwkTimeout",600); /* seconds */ ftp->sem_chk_freq - =iniReadShortInt(fp,section,strSemFileCheckFrequency,global->sem_chk_freq); + =iniGetShortInt(list,section,strSemFileCheckFrequency,global->sem_chk_freq); /* Passive transfer settings (for stupid firewalls/NATs) */ ftp->pasv_ip_addr - =iniReadIpAddress(fp,section,"PasvIpAddress",0); + =iniGetIpAddress(list,section,"PasvIpAddress",0); ftp->pasv_port_low - =iniReadShortInt(fp,section,"PasvPortLow",IPPORT_RESERVED); + =iniGetShortInt(list,section,"PasvPortLow",IPPORT_RESERVED); ftp->pasv_port_high - =iniReadShortInt(fp,section,"PasvPortHigh",0xffff); + =iniGetShortInt(list,section,"PasvPortHigh",0xffff); /* JavaScript Operating Parameters */ - sbbs_read_js_settings(fp, section, &ftp->js, &global->js); + sbbs_get_js_settings(list, section, &ftp->js, &global->js); SAFECOPY(ftp->host_name - ,iniReadString(fp,section,strHostName,global->host_name,value)); + ,iniGetString(list,section,strHostName,global->host_name,value)); SAFECOPY(ftp->index_file_name - ,iniReadString(fp,section,"IndexFileName","00index",value)); + ,iniGetString(list,section,"IndexFileName","00index",value)); SAFECOPY(ftp->html_index_file - ,iniReadString(fp,section,"HtmlIndexFile","00index.html",value)); + ,iniGetString(list,section,"HtmlIndexFile","00index.html",value)); SAFECOPY(ftp->html_index_script - ,iniReadString(fp,section,"HtmlIndexScript","ftp-html.js",value)); + ,iniGetString(list,section,"HtmlIndexScript","ftp-html.js",value)); SAFECOPY(ftp->answer_sound - ,iniReadString(fp,section,strAnswerSound,nulstr,value)); + ,iniGetString(list,section,strAnswerSound,nulstr,value)); SAFECOPY(ftp->hangup_sound - ,iniReadString(fp,section,strHangupSound,nulstr,value)); + ,iniGetString(list,section,strHangupSound,nulstr,value)); SAFECOPY(ftp->hack_sound - ,iniReadString(fp,section,strHackAttemptSound,nulstr,value)); + ,iniGetString(list,section,strHackAttemptSound,nulstr,value)); SAFECOPY(ftp->temp_dir - ,iniReadString(fp,section,strTempDirectory,ftp->temp_dir,value)); + ,iniGetString(list,section,strTempDirectory,ftp->temp_dir,value)); ftp->log_mask - =iniReadBitField(fp,section,strLogMask,log_mask_bits,global->log_mask); + =iniGetBitField(list,section,strLogMask,log_mask_bits,global->log_mask); ftp->options - =iniReadBitField(fp,section,strOptions,ftp_options + =iniGetBitField(list,section,strOptions,ftp_options ,FTP_OPT_INDEX_FILE|FTP_OPT_HTML_INDEX_FILE|FTP_OPT_ALLOW_QWK); - ftp->bind_retry_count=iniReadInteger(fp,section,strBindRetryCount,global->bind_retry_count); - ftp->bind_retry_delay=iniReadInteger(fp,section,strBindRetryDelay,global->bind_retry_delay); + ftp->bind_retry_count=iniGetInteger(list,section,strBindRetryCount,global->bind_retry_count); + ftp->bind_retry_delay=iniGetInteger(list,section,strBindRetryDelay,global->bind_retry_delay); } /***********************************************************************/ section = "Mail"; if(run_mail!=NULL) - *run_mail=iniReadBool(fp,section,strAutoStart,TRUE); + *run_mail=iniGetBool(list,section,strAutoStart,TRUE); if(mail!=NULL) { mail->interface_addr - =iniReadIpAddress(fp,section,strInterface,global->interface_addr); + =iniGetIpAddress(list,section,strInterface,global->interface_addr); mail->smtp_port - =iniReadShortInt(fp,section,"SMTPPort",IPPORT_SMTP); + =iniGetShortInt(list,section,"SMTPPort",IPPORT_SMTP); mail->pop3_port - =iniReadShortInt(fp,section,"POP3Port",IPPORT_POP3); + =iniGetShortInt(list,section,"POP3Port",IPPORT_POP3); mail->relay_port - =iniReadShortInt(fp,section,"RelayPort",IPPORT_SMTP); + =iniGetShortInt(list,section,"RelayPort",IPPORT_SMTP); mail->max_clients - =iniReadShortInt(fp,section,strMaxClients,10); + =iniGetShortInt(list,section,strMaxClients,10); mail->max_inactivity - =iniReadShortInt(fp,section,strMaxInactivity,120); /* seconds */ + =iniGetShortInt(list,section,strMaxInactivity,120); /* seconds */ mail->max_delivery_attempts - =iniReadShortInt(fp,section,"MaxDeliveryAttempts",50); + =iniGetShortInt(list,section,"MaxDeliveryAttempts",50); mail->rescan_frequency - =iniReadShortInt(fp,section,"RescanFrequency",3600); /* 60 minutes */ + =iniGetShortInt(list,section,"RescanFrequency",3600); /* 60 minutes */ mail->sem_chk_freq - =iniReadShortInt(fp,section,strSemFileCheckFrequency,global->sem_chk_freq); + =iniGetShortInt(list,section,strSemFileCheckFrequency,global->sem_chk_freq); mail->lines_per_yield - =iniReadShortInt(fp,section,"LinesPerYield",10); + =iniGetShortInt(list,section,"LinesPerYield",10); mail->max_recipients - =iniReadShortInt(fp,section,"MaxRecipients",100); + =iniGetShortInt(list,section,"MaxRecipients",100); mail->max_msg_size - =iniReadInteger(fp,section,"MaxMsgSize",DEFAULT_MAX_MSG_SIZE); + =iniGetInteger(list,section,"MaxMsgSize",DEFAULT_MAX_MSG_SIZE); SAFECOPY(mail->host_name - ,iniReadString(fp,section,strHostName,global->host_name,value)); + ,iniGetString(list,section,strHostName,global->host_name,value)); SAFECOPY(mail->temp_dir - ,iniReadString(fp,section,strTempDirectory,mail->temp_dir,value)); + ,iniGetString(list,section,strTempDirectory,mail->temp_dir,value)); SAFECOPY(mail->relay_server - ,iniReadString(fp,section,"RelayServer",mail->relay_server,value)); + ,iniGetString(list,section,"RelayServer",mail->relay_server,value)); SAFECOPY(mail->relay_user - ,iniReadString(fp,section,"RelayUsername",mail->relay_user,value)); + ,iniGetString(list,section,"RelayUsername",mail->relay_user,value)); SAFECOPY(mail->relay_pass - ,iniReadString(fp,section,"RelayPassword",mail->relay_pass,value)); + ,iniGetString(list,section,"RelayPassword",mail->relay_pass,value)); SAFECOPY(mail->dns_server - ,iniReadString(fp,section,"DNSServer",mail->dns_server,value)); + ,iniGetString(list,section,"DNSServer",mail->dns_server,value)); SAFECOPY(mail->default_user - ,iniReadString(fp,section,"DefaultUser",nulstr,value)); + ,iniGetString(list,section,"DefaultUser",nulstr,value)); SAFECOPY(mail->dnsbl_hdr - ,iniReadString(fp,section,"DNSBlacklistHeader","X-DNSBL",value)); + ,iniGetString(list,section,"DNSBlacklistHeader","X-DNSBL",value)); SAFECOPY(mail->dnsbl_tag - ,iniReadString(fp,section,"DNSBlacklistSubject","SPAM",value)); + ,iniGetString(list,section,"DNSBlacklistSubject","SPAM",value)); SAFECOPY(mail->pop3_sound - ,iniReadString(fp,section,"POP3Sound",nulstr,value)); + ,iniGetString(list,section,"POP3Sound",nulstr,value)); SAFECOPY(mail->inbound_sound - ,iniReadString(fp,section,"InboundSound",nulstr,value)); + ,iniGetString(list,section,"InboundSound",nulstr,value)); SAFECOPY(mail->outbound_sound - ,iniReadString(fp,section,"OutboundSound",nulstr,value)); + ,iniGetString(list,section,"OutboundSound",nulstr,value)); /* JavaScript Operating Parameters */ - sbbs_read_js_settings(fp, section, &mail->js, &global->js); + sbbs_get_js_settings(list, section, &mail->js, &global->js); mail->log_mask - =iniReadBitField(fp,section,strLogMask,log_mask_bits,global->log_mask); + =iniGetBitField(list,section,strLogMask,log_mask_bits,global->log_mask); mail->options - =iniReadBitField(fp,section,strOptions,mail_options + =iniGetBitField(list,section,strOptions,mail_options ,MAIL_OPT_ALLOW_POP3); - mail->bind_retry_count=iniReadInteger(fp,section,strBindRetryCount,global->bind_retry_count); - mail->bind_retry_delay=iniReadInteger(fp,section,strBindRetryDelay,global->bind_retry_delay); + mail->bind_retry_count=iniGetInteger(list,section,strBindRetryCount,global->bind_retry_count); + mail->bind_retry_delay=iniGetInteger(list,section,strBindRetryDelay,global->bind_retry_delay); } /***********************************************************************/ section = "Services"; if(run_services!=NULL) - *run_services=iniReadBool(fp,section,strAutoStart,TRUE); + *run_services=iniGetBool(list,section,strAutoStart,TRUE); if(services!=NULL) { services->interface_addr - =iniReadIpAddress(fp,section,strInterface,global->interface_addr); + =iniGetIpAddress(list,section,strInterface,global->interface_addr); services->sem_chk_freq - =iniReadShortInt(fp,section,strSemFileCheckFrequency,global->sem_chk_freq); + =iniGetShortInt(list,section,strSemFileCheckFrequency,global->sem_chk_freq); /* JavaScript operating parameters */ - sbbs_read_js_settings(fp, section, &services->js, &global->js); + sbbs_get_js_settings(list, section, &services->js, &global->js); SAFECOPY(services->host_name - ,iniReadString(fp,section,strHostName,global->host_name,value)); + ,iniGetString(list,section,strHostName,global->host_name,value)); SAFECOPY(services->temp_dir - ,iniReadString(fp,section,strTempDirectory,services->temp_dir,value)); + ,iniGetString(list,section,strTempDirectory,services->temp_dir,value)); SAFECOPY(services->answer_sound - ,iniReadString(fp,section,strAnswerSound,nulstr,value)); + ,iniGetString(list,section,strAnswerSound,nulstr,value)); SAFECOPY(services->hangup_sound - ,iniReadString(fp,section,strHangupSound,nulstr,value)); + ,iniGetString(list,section,strHangupSound,nulstr,value)); services->log_mask - =iniReadBitField(fp,section,strLogMask,log_mask_bits,global->log_mask); + =iniGetBitField(list,section,strLogMask,log_mask_bits,global->log_mask); services->options - =iniReadBitField(fp,section,strOptions,service_options + =iniGetBitField(list,section,strOptions,service_options ,BBS_OPT_NO_HOST_LOOKUP); - services->bind_retry_count=iniReadInteger(fp,section,strBindRetryCount,global->bind_retry_count); - services->bind_retry_delay=iniReadInteger(fp,section,strBindRetryDelay,global->bind_retry_delay); + services->bind_retry_count=iniGetInteger(list,section,strBindRetryCount,global->bind_retry_count); + services->bind_retry_delay=iniGetInteger(list,section,strBindRetryDelay,global->bind_retry_delay); } /***********************************************************************/ section = "Web"; if(run_web!=NULL) - *run_web=iniReadBool(fp,section,strAutoStart,FALSE); + *run_web=iniGetBool(list,section,strAutoStart,FALSE); if(web!=NULL) { web->interface_addr - =iniReadIpAddress(fp,section,strInterface,global->interface_addr); + =iniGetIpAddress(list,section,strInterface,global->interface_addr); web->port - =iniReadShortInt(fp,section,strPort,IPPORT_HTTP); + =iniGetShortInt(list,section,strPort,IPPORT_HTTP); web->max_clients - =iniReadShortInt(fp,section,strMaxClients,10); + =iniGetShortInt(list,section,strMaxClients,10); web->max_inactivity - =iniReadShortInt(fp,section,strMaxInactivity,120); /* seconds */ + =iniGetShortInt(list,section,strMaxInactivity,120); /* seconds */ web->sem_chk_freq - =iniReadShortInt(fp,section,strSemFileCheckFrequency,global->sem_chk_freq); + =iniGetShortInt(list,section,strSemFileCheckFrequency,global->sem_chk_freq); /* JavaScript operating parameters */ - sbbs_read_js_settings(fp, section, &web->js, &global->js); + sbbs_get_js_settings(list, section, &web->js, &global->js); SAFECOPY(web->host_name - ,iniReadString(fp,section,strHostName,global->host_name,value)); + ,iniGetString(list,section,strHostName,global->host_name,value)); SAFECOPY(web->temp_dir - ,iniReadString(fp,section,strTempDirectory,web->temp_dir,value)); + ,iniGetString(list,section,strTempDirectory,web->temp_dir,value)); SAFECOPY(web->root_dir - ,iniReadString(fp,section,"RootDirectory",WEB_DEFAULT_ROOT_DIR,value)); + ,iniGetString(list,section,"RootDirectory",WEB_DEFAULT_ROOT_DIR,value)); SAFECOPY(web->error_dir - ,iniReadString(fp,section,"ErrorDirectory",WEB_DEFAULT_ERROR_DIR,value)); + ,iniGetString(list,section,"ErrorDirectory",WEB_DEFAULT_ERROR_DIR,value)); SAFECOPY(web->cgi_dir - ,iniReadString(fp,section,"CGIDirectory",WEB_DEFAULT_CGI_DIR,value)); + ,iniGetString(list,section,"CGIDirectory",WEB_DEFAULT_CGI_DIR,value)); SAFECOPY(web->logfile_base - ,iniReadString(fp,section,"HttpLogFile",nulstr,value)); + ,iniGetString(list,section,"HttpLogFile",nulstr,value)); SAFECOPY(web->default_cgi_content - ,iniReadString(fp,section,"DefaultCGIContent",WEB_DEFAULT_CGI_CONTENT,value)); + ,iniGetString(list,section,"DefaultCGIContent",WEB_DEFAULT_CGI_CONTENT,value)); iniFreeStringList(web->index_file_name); web->index_file_name - =iniReadStringList(fp,section,"IndexFileNames", "," ,"index.html,index.ssjs"); + =iniGetStringList(list,section,"IndexFileNames", "," ,"index.html,index.ssjs"); iniFreeStringList(web->cgi_ext); web->cgi_ext - =iniReadStringList(fp,section,"CGIExtensions", "," ,".cgi"); + =iniGetStringList(list,section,"CGIExtensions", "," ,".cgi"); SAFECOPY(web->ssjs_ext - ,iniReadString(fp,section,"JavaScriptExtension",".ssjs",value)); + ,iniGetString(list,section,"JavaScriptExtension",".ssjs",value)); SAFECOPY(web->js_ext - ,iniReadString(fp,section,"EmbJavaScriptExtension",".bbs",value)); + ,iniGetString(list,section,"EmbJavaScriptExtension",".bbs",value)); web->max_inactivity - =iniReadShortInt(fp,section,strMaxInactivity,120); /* seconds */ + =iniGetShortInt(list,section,strMaxInactivity,120); /* seconds */ web->max_cgi_inactivity - =iniReadShortInt(fp,section,"MaxCgiInactivity",120); /* seconds */ + =iniGetShortInt(list,section,"MaxCgiInactivity",120); /* seconds */ SAFECOPY(web->answer_sound - ,iniReadString(fp,section,strAnswerSound,nulstr,value)); + ,iniGetString(list,section,strAnswerSound,nulstr,value)); SAFECOPY(web->hangup_sound - ,iniReadString(fp,section,strHangupSound,nulstr,value)); + ,iniGetString(list,section,strHangupSound,nulstr,value)); SAFECOPY(web->hack_sound - ,iniReadString(fp,section,strHackAttemptSound,nulstr,value)); + ,iniGetString(list,section,strHackAttemptSound,nulstr,value)); web->log_mask - =iniReadBitField(fp,section,strLogMask,log_mask_bits,global->log_mask); + =iniGetBitField(list,section,strLogMask,log_mask_bits,global->log_mask); web->options - =iniReadBitField(fp,section,strOptions,web_options + =iniGetBitField(list,section,strOptions,web_options ,BBS_OPT_NO_HOST_LOOKUP | WEB_OPT_HTTP_LOGGING); - web->bind_retry_count=iniReadInteger(fp,section,strBindRetryCount,global->bind_retry_count); - web->bind_retry_delay=iniReadInteger(fp,section,strBindRetryDelay,global->bind_retry_delay); + web->bind_retry_count=iniGetInteger(list,section,strBindRetryCount,global->bind_retry_count); + web->bind_retry_delay=iniGetInteger(list,section,strBindRetryDelay,global->bind_retry_delay); } + + iniFreeStringList(list); } BOOL sbbs_write_ini( @@ -636,17 +641,17 @@ BOOL sbbs_write_ini( ini_style_t style; global_startup_t global_buf; - if(global==NULL) { - read_ini_globals(fp, &global_buf); - global = &global_buf; - } - memset(&style, 0, sizeof(style)); style.key_prefix = "\t"; style.bit_separator = " | "; if((list=iniReadFile(fp))==NULL) return(FALSE); + + if(global==NULL) { + get_ini_globals(list, &global_buf); + global = &global_buf; + } lp=&list; @@ -1112,7 +1117,7 @@ BOOL sbbs_write_ini( } while(0); /* finally */ - strListFree(&list); + iniFreeStringList(list); return(result); } diff --git a/src/sbbs3/sbbs_ini.h b/src/sbbs3/sbbs_ini.h index 5112af11a9..a7dff8ac12 100644 --- a/src/sbbs3/sbbs_ini.h +++ b/src/sbbs3/sbbs_ini.h @@ -1,6 +1,6 @@ /* sbbs_ini.h */ -/* Synchronet console configuration (.ini) file routines */ +/* Synchronet initialization (.ini) file routines */ /* $Id$ */ @@ -8,7 +8,7 @@ * @format.tab-size 4 (Plain Text/Source Code File Header) * * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) * * * - * Copyright 2004 Rob Swindell - http://www.synchro.net/copyright.html * + * Copyright 2005 Rob Swindell - http://www.synchro.net/copyright.html * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License * @@ -71,8 +71,8 @@ void sbbs_read_ini( ,services_startup_t* services_startup ); -void sbbs_read_js_settings( - FILE* fp +void sbbs_get_js_settings( + str_list_t list ,const char* section ,js_startup_t* js ,js_startup_t* defaults diff --git a/src/sbbs3/services.c b/src/sbbs3/services.c index 5ed7b4328b..1f9109c741 100644 --- a/src/sbbs3/services.c +++ b/src/sbbs3/services.c @@ -1433,6 +1433,7 @@ static service_t* read_services_ini(service_t* service, DWORD* services) char prot[INI_MAX_VALUE_LEN]; char services_ini[MAX_PATH+1]; char** sec_list; + str_list_t list; service_t* np; service_t serv; int log_level; @@ -1445,23 +1446,26 @@ static service_t* read_services_ini(service_t* service, DWORD* services) } lprintf(LOG_INFO,"Reading %s",services_ini); - log_level = iniReadLogLevel(fp,ROOT_SECTION,"LogLevel",LOG_DEBUG); - sec_list = iniReadSectionList(fp,""); + list=iniReadFile(fp); + fclose(fp); + + log_level = iniGetLogLevel(list,ROOT_SECTION,"LogLevel",LOG_DEBUG); + sec_list = iniGetSectionList(list,""); for(i=0; sec_list!=NULL && sec_list[i]!=NULL; i++) { memset(&serv,0,sizeof(service_t)); - SAFECOPY(serv.protocol,iniReadString(fp,sec_list[i],"Protocol",sec_list[i],prot)); + SAFECOPY(serv.protocol,iniGetString(list,sec_list[i],"Protocol",sec_list[i],prot)); serv.socket=INVALID_SOCKET; - serv.interface_addr=iniReadIpAddress(fp,sec_list[i],"Interface",startup->interface_addr); - serv.port=iniReadShortInt(fp,sec_list[i],"Port",0); - serv.max_clients=iniReadInteger(fp,sec_list[i],"MaxClients",0); - serv.listen_backlog=iniReadInteger(fp,sec_list[i],"ListenBacklog",DEFAULT_LISTEN_BACKLOG); - serv.stack_size=iniReadInteger(fp,sec_list[i],"StackSize",0); - serv.options=iniReadBitField(fp,sec_list[i],"Options",service_options,0); - serv.log_level = iniReadLogLevel(fp,sec_list[i],"LogLevel",log_level); - SAFECOPY(serv.cmd,iniReadString(fp,sec_list[i],"Command","",cmd)); + serv.interface_addr=iniGetIpAddress(list,sec_list[i],"Interface",startup->interface_addr); + serv.port=iniGetShortInt(list,sec_list[i],"Port",0); + serv.max_clients=iniGetInteger(list,sec_list[i],"MaxClients",0); + serv.listen_backlog=iniGetInteger(list,sec_list[i],"ListenBacklog",DEFAULT_LISTEN_BACKLOG); + serv.stack_size=iniGetInteger(list,sec_list[i],"StackSize",0); + serv.options=iniGetBitField(list,sec_list[i],"Options",service_options,0); + serv.log_level = iniGetLogLevel(list,sec_list[i],"LogLevel",log_level); + SAFECOPY(serv.cmd,iniGetString(list,sec_list[i],"Command","",cmd)); /* JavaScript operating parameters */ - sbbs_read_js_settings(fp, sec_list[i], &serv.js, &startup->js); + sbbs_get_js_settings(list, sec_list[i], &serv.js, &startup->js); for(j=0;j<*services;j++) if(service[j].interface_addr==serv.interface_addr && service[j].port==serv.port @@ -1472,11 +1476,11 @@ static service_t* read_services_ini(service_t* service, DWORD* services) continue; } - if(stricmp(iniReadString(fp,sec_list[i],"Host",startup->host_name,host), startup->host_name)!=0) { + if(stricmp(iniGetString(list,sec_list[i],"Host",startup->host_name,host), startup->host_name)!=0) { lprintf(LOG_NOTICE,"Ignoring service (%s) for host: %s", sec_list[i], host); continue; } - if(stricmp(iniReadString(fp,sec_list[i],"NotHost","",host), startup->host_name)==0) { + if(stricmp(iniGetString(list,sec_list[i],"NotHost","",host), startup->host_name)==0) { lprintf(LOG_NOTICE,"Ignoring service (%s) not for host: %s", sec_list[i], host); continue; } @@ -1491,8 +1495,7 @@ static service_t* read_services_ini(service_t* service, DWORD* services) (*services)++; } iniFreeStringList(sec_list); - - fclose(fp); + strListFree(&list); return(service); } -- GitLab