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

Make PromptTimeout configurable (default to 0/infinite)

Set to number of seconds to timeout, if desired.
Log the received character in response to the prompt.
parent 0b8517e1
No related branches found
No related tags found
1 merge request!463MRC mods by Codefenix (2024-10-20)
Pipeline #2609 passed
/* sexpots.c */
/* Synchronet External Plain Old Telephone System (POTS) support */ /* Synchronet External Plain Old Telephone System (POTS) support */
/* $Id: sexpots.c,v 1.33 2020/09/11 22:48:33 rswindell Exp $ */
/**************************************************************************** /****************************************************************************
* @format.tab-size 4 (Plain Text/Source Code File Header) * * @format.tab-size 4 (Plain Text/Source Code File Header) *
* @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) * * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) *
...@@ -17,21 +13,9 @@ ...@@ -17,21 +13,9 @@
* See the GNU General Public License for more details: gpl.txt or * * See the GNU General Public License for more details: gpl.txt or *
* http://www.fsf.org/copyleft/gpl.html * * http://www.fsf.org/copyleft/gpl.html *
* * * *
* Anonymous FTP access to the most recent released source is available at *
* ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net *
* *
* Anonymous CVS access to the development source and modification history *
* is available at cvs.synchro.net:/cvsroot/sbbs, example: *
* cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs login *
* (just hit return, no password is necessary) *
* cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs checkout src *
* *
* For Synchronet coding style and modification guidelines, see * * For Synchronet coding style and modification guidelines, see *
* http://www.synchro.net/source.html * * http://www.synchro.net/source.html *
* * * *
* You are encouraged to submit any modifications (preferably in Unix diff *
* format) via e-mail to mods@synchro.net *
* *
* Note: If this box doesn't appear square, then you need to fix your tabs. * * Note: If this box doesn't appear square, then you need to fix your tabs. *
****************************************************************************/ ****************************************************************************/
...@@ -61,9 +45,9 @@ ...@@ -61,9 +45,9 @@
/* global vars */ /* global vars */
BOOL daemonize=FALSE; BOOL daemonize=FALSE;
char prompt[INI_MAX_VALUE_LEN+1]; char prompt[INI_MAX_VALUE_LEN+1];
int prompt_timeout = 0;
char termtype[INI_MAX_VALUE_LEN+1] = NAME; char termtype[INI_MAX_VALUE_LEN+1] = NAME;
char termspeed[INI_MAX_VALUE_LEN+1] = "28800,28800"; /* "tx,rx", max length not defined */ char termspeed[INI_MAX_VALUE_LEN+1] = "28800,28800"; /* "tx,rx", max length not defined */
char revision[16];
char mdm_init[INI_MAX_VALUE_LEN] = "AT&F"; char mdm_init[INI_MAX_VALUE_LEN] = "AT&F";
char mdm_autoans[INI_MAX_VALUE_LEN] = "ATS0=1"; char mdm_autoans[INI_MAX_VALUE_LEN] = "ATS0=1";
...@@ -1405,6 +1389,7 @@ void parse_ini_file(const char* ini_fname) ...@@ -1405,6 +1389,7 @@ void parse_ini_file(const char* ini_fname)
pause_on_exit = iniGetBool(ini,ROOT_SECTION,"PauseOnExit",FALSE); pause_on_exit = iniGetBool(ini,ROOT_SECTION,"PauseOnExit",FALSE);
log_level = iniGetLogLevel(ini,ROOT_SECTION,"LogLevel",log_level); log_level = iniGetLogLevel(ini,ROOT_SECTION,"LogLevel",log_level);
iniGetString(ini, ROOT_SECTION, "Prompt", NULL, prompt); iniGetString(ini, ROOT_SECTION, "Prompt", NULL, prompt);
prompt_timeout = iniGetInteger(ini, ROOT_SECTION, "PromptTimeout", prompt_timeout);
if(iniGetBool(ini,ROOT_SECTION,"Debug",FALSE)) if(iniGetBool(ini,ROOT_SECTION,"Debug",FALSE))
log_level=LOG_DEBUG; log_level=LOG_DEBUG;
...@@ -1600,7 +1585,8 @@ service_loop(int argc, char** argv) ...@@ -1600,7 +1585,8 @@ service_loop(int argc, char** argv)
if(prompt[0] != '\0') { if(prompt[0] != '\0') {
comWriteString(com_handle, prompt); comWriteString(com_handle, prompt);
char ch; char ch;
if(comReadBuf(com_handle, &ch, sizeof(ch), NULL, 10000)) { if(comReadBuf(com_handle, &ch, sizeof(ch), NULL, prompt_timeout * 1000)) {
lprintf(LOG_INFO, "Received character '%c' (%d) in response to prompt", ch, ch);
if(!IS_CONTROL(ch)) { if(!IS_CONTROL(ch)) {
SAFEPRINTF(str, "TCP:%c", ch); SAFEPRINTF(str, "TCP:%c", ch);
iniGetExistingWord(ini, str, "Host", NULL, host); iniGetExistingWord(ini, str, "Host", NULL, host);
...@@ -1639,12 +1625,10 @@ int main(int argc, char** argv) ...@@ -1639,12 +1625,10 @@ int main(int argc, char** argv)
/*******************************/ /*******************************/
/* Generate and display banner */ /* Generate and display banner */
/*******************************/ /*******************************/
sscanf("$Revision: 1.32 $", "%*s %s", revision);
sprintf(banner,"\n%s v%s-%s" sprintf(banner,"\n%s v2.0-%s"
" Copyright %s Rob Swindell" " Copyright %s Rob Swindell"
,TITLE ,TITLE
,revision
,PLATFORM_DESC ,PLATFORM_DESC
,__DATE__+7 ,__DATE__+7
); );
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment