From dad4d7f437fca3ffcf8624706cfd300c5a97a879 Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Wed, 9 May 2007 02:34:33 +0000 Subject: [PATCH] Adjust .ini file parsing to allow blank (no) modem command strings and stop over-riding sexpots.ini key values with default values if a secondary .ini file is specified on the command-line. --- src/sexpots/sexpots.c | 85 +++++++++++++++++++++++-------------------- 1 file changed, 45 insertions(+), 40 deletions(-) diff --git a/src/sexpots/sexpots.c b/src/sexpots/sexpots.c index e6ebb666dc..e276416bd0 100644 --- a/src/sexpots/sexpots.c +++ b/src/sexpots/sexpots.c @@ -61,18 +61,18 @@ /* global vars */ BOOL daemonize=FALSE; -char termtype[TELNET_TERM_MAXLEN+1]; -char termspeed[TELNET_TERM_MAXLEN+1]; /* "tx,rx", max length not defined */ +char termtype[TELNET_TERM_MAXLEN+1] = NAME; +char termspeed[TELNET_TERM_MAXLEN+1] = "28800,28800"; /* "tx,rx", max length not defined */ char revision[16]; -char mdm_init[INI_MAX_VALUE_LEN]; -char mdm_autoans[INI_MAX_VALUE_LEN]; -char mdm_cid[INI_MAX_VALUE_LEN]; -char mdm_cleanup[INI_MAX_VALUE_LEN]; +char mdm_init[INI_MAX_VALUE_LEN] = "AT&F"; +char mdm_autoans[INI_MAX_VALUE_LEN] = "ATS0=1"; +char mdm_cid[INI_MAX_VALUE_LEN] = "AT+VCID=1"; +char mdm_cleanup[INI_MAX_VALUE_LEN] = "ATS0=0"; BOOL mdm_null=FALSE; int mdm_timeout=5; /* seconds */ -char com_dev[MAX_PATH+1]; +char com_dev[MAX_PATH+1] = "COM1"; HANDLE com_handle=INVALID_HANDLE_VALUE; BOOL com_handle_passed=FALSE; BOOL com_alreadyconnected=FALSE; @@ -86,7 +86,7 @@ BOOL terminated=FALSE; BOOL terminate_after_one_call=FALSE; SOCKET sock=INVALID_SOCKET; -char host[MAX_PATH+1]; +char host[MAX_PATH+1] = "localhost"; ushort port=IPPORT_TELNET; /* stats */ @@ -112,7 +112,7 @@ BOOL telnet_advertise_cid=FALSE; BOOL ident=FALSE; ushort ident_port=IPPORT_IDENT; ulong ident_interface=INADDR_ANY; -char ident_response[INI_MAX_VALUE_LEN]; +char ident_response[INI_MAX_VALUE_LEN] = "CALLERID:SEXPOTS"; /* Caller-ID stuff */ char cid_name[64]; @@ -1274,58 +1274,64 @@ void parse_ini_file(const char* ini_fname) { FILE* fp; char* section; + str_list_t list=NULL; - if((fp=fopen(ini_fname,"r"))!=NULL) + if((fp=fopen(ini_fname,"r"))!=NULL) { lprintf(LOG_INFO,"Reading %s",ini_fname); + list=iniReadFile(fp); + fclose(fp); + } /* Root section */ - pause_on_exit = iniReadBool(fp,ROOT_SECTION,"PauseOnExit",FALSE); - log_level = iniReadLogLevel(fp,ROOT_SECTION,"LogLevel",log_level); + pause_on_exit = iniGetBool(list,ROOT_SECTION,"PauseOnExit",FALSE); + log_level = iniGetLogLevel(list,ROOT_SECTION,"LogLevel",log_level); - if(iniReadBool(fp,ROOT_SECTION,"Debug",FALSE)) + if(iniGetBool(list,ROOT_SECTION,"Debug",FALSE)) log_level=LOG_DEBUG; /* [COM] Section */ section="COM"; - iniReadString(fp, section, "Device", "COM1", com_dev); - com_baudrate = iniReadLongInt(fp, section, "BaudRate", com_baudrate); - com_hangup = iniReadBool(fp, section, "Hangup", com_hangup); - dcd_timeout = iniReadInteger(fp, section, "DCDTimeout", dcd_timeout); - dcd_ignore = iniReadBool(fp, section, "IgnoreDCD", dcd_ignore); - dtr_delay = iniReadLongInt(fp, section, "DTRDelay", dtr_delay); - mdm_null = iniReadBool(fp, section, "NullModem", mdm_null); + iniGetString(list, section, "Device", NULL, com_dev); + com_baudrate = iniGetLongInt(list, section, "BaudRate", com_baudrate); + com_hangup = iniGetBool(list, section, "Hangup", com_hangup); + dcd_timeout = iniGetInteger(list, section, "DCDTimeout", dcd_timeout); + dcd_ignore = iniGetBool(list, section, "IgnoreDCD", dcd_ignore); + dtr_delay = iniGetLongInt(list, section, "DTRDelay", dtr_delay); + mdm_null = iniGetBool(list, section, "NullModem", mdm_null); /* [Modem] Section */ section="Modem"; - iniReadString(fp, section, "Init", "AT&F", mdm_init); - iniReadString(fp, section, "AutoAnswer", "ATS0=1", mdm_autoans); - iniReadString(fp, section, "Cleanup", "ATS0=0", mdm_cleanup); - iniReadString(fp, section, "EnableCallerID", "AT+VCID=1", mdm_cid); - mdm_timeout = iniReadInteger(fp, section, "Timeout", mdm_timeout); + if(iniKeyExists(list, section, "Init")) + iniGetString(list, section, "Init", "", mdm_init); + if(iniKeyExists(list, section, "AutoAnswer")) + iniGetString(list, section, "AutoAnswer", "", mdm_autoans); + if(iniKeyExists(list, section, "Cleanup")) + iniGetString(list, section, "Cleanup", "", mdm_cleanup); + if(iniKeyExists(list, section, "EnableCallerID")) + iniGetString(list, section, "EnableCallerID", "", mdm_cid); + mdm_timeout = iniGetInteger(list, section, "Timeout", mdm_timeout); /* [TCP] Section */ section="TCP"; - iniReadString(fp, section, "Host", "localhost", host); - port = iniReadShortInt(fp, section, "Port", port); - tcp_nodelay = iniReadBool(fp,section,"NODELAY", tcp_nodelay); + iniGetString(list, section, "Host", NULL, host); + port = iniGetShortInt(list, section, "Port", port); + tcp_nodelay = iniGetBool(list,section,"NODELAY", tcp_nodelay); /* [Telnet] Section */ section="Telnet"; - telnet = iniReadBool(fp,section,"Enabled", telnet); - debug_telnet = iniReadBool(fp,section,"Debug", debug_telnet); - telnet_advertise_cid = iniReadBool(fp,section,"AdvertiseLocation", telnet_advertise_cid); - iniReadString(fp, section, "TermType", termtype, termtype); - iniReadString(fp, section, "TermSpeed", "28800,28800", termspeed); + telnet = iniGetBool(list,section,"Enabled", telnet); + debug_telnet = iniGetBool(list,section,"Debug", debug_telnet); + telnet_advertise_cid = iniGetBool(list,section,"AdvertiseLocation", telnet_advertise_cid); + iniGetString(list, section, "TermType", NULL, termtype); + iniGetString(list, section, "TermSpeed", NULL, termspeed); /* [Ident] Section */ section="Ident"; - ident = iniReadBool(fp,section,"Enabled", ident); - ident_port = iniReadShortInt(fp, section, "Port", ident_port); - ident_interface = iniReadIpAddress(fp, section, "Interface", ident_interface); - iniReadString(fp, section, "Response", "CALLERID:SEXPOTS", ident_response); + ident = iniGetBool(list,section,"Enabled", ident); + ident_port = iniGetShortInt(list, section, "Port", ident_port); + ident_interface = iniGetIpAddress(list, section, "Interface", ident_interface); + iniGetString(list, section, "Response", NULL, ident_response); - if(fp!=NULL) - fclose(fp); } char banner[128]; @@ -1538,7 +1544,6 @@ int main(int argc, char** argv) *p=0; if((p=getfext(fname))!=NULL) *p=0; - SAFECOPY(termtype,fname); strcat(fname,".ini"); iniFileName(ini_fname,sizeof(ini_fname),path,fname); -- GitLab