diff --git a/src/sbbs3/sbbs_ini.c b/src/sbbs3/sbbs_ini.c index 0af6873dcb552581b4734c1321240945909de2f4..05068c342018f1eaa2b2b28c3b7efc64b27250da 100644 --- a/src/sbbs3/sbbs_ini.c +++ b/src/sbbs3/sbbs_ini.c @@ -88,6 +88,7 @@ void sbbs_read_ini( ) { const char* section; + const char* default_term; char* ctrl_dir; char* host_name; @@ -135,6 +136,16 @@ void sbbs_read_ini( bbs->js_max_bytes =iniReadInteger(fp,section,"JS_MaxBytes",0); + /* Set default terminal type to "stock" termcap closest to "ansi-bbs" */ +#if defined(__FreeBSD__) + default_term="cons25"; +#else + default_term="pc3"; +#endif + + SAFECOPY(bbs->xtrn_term + ,iniReadString(fp,section,"ExternalTerm",default_term)); + SAFECOPY(bbs->answer_sound ,iniReadString(fp,section,"AnswerSound",nulstr)); SAFECOPY(bbs->hangup_sound diff --git a/src/sbbs3/startup.h b/src/sbbs3/startup.h index ed813330cb3e9453fab0c0e0d196e32f5992582a..79606d3cf3a4f00d1273cdf1206986d4ac873002 100644 --- a/src/sbbs3/startup.h +++ b/src/sbbs3/startup.h @@ -88,7 +88,9 @@ typedef struct { char reserved_path3[128]; char answer_sound[128]; char hangup_sound[128]; - char reserved_path2[128]; + char xtrn_term[32]; /* external terminal type (e.g. "ansi-bbs") */ + char reserved_str2[32]; + char reserved_str1[64]; char host_name[128]; BOOL recycle_now; diff --git a/src/sbbs3/xtrn.cpp b/src/sbbs3/xtrn.cpp index 704ac0def151c88dc1f3422730ade8b310446ac3..a80a26f91b9fdcde1fa5bab649a83ba6d6ecd9de 100644 --- a/src/sbbs3/xtrn.cpp +++ b/src/sbbs3/xtrn.cpp @@ -48,7 +48,7 @@ #include <pty.h> #endif #include <termios.h> - static void setup_term(int fd); + static void setup_term(int fd, char* term); #endif #define XTRN_IO_BUF_LEN 5000 @@ -1011,7 +1011,7 @@ int sbbs_t::external(char* cmdline, long mode, char* startup_dir) } } if(pid==0) { /* child process */ - setup_term(0); + setup_term(0, startup->xtrn_term); if(startup_dir!=NULL && startup_dir[0]) chdir(startup_dir); @@ -1331,7 +1331,7 @@ char * sbbs_t::cmdstr(char *instr, char *fpath, char *fspec, char *outstr) #ifdef __unix__ void -setup_term(int fd) +setup_term(int fd, char* term) { struct termios tt; // Shoud set speed here... @@ -1342,7 +1342,7 @@ setup_term(int fd) tt.c_lflag = TTYDEF_LFLAG; tcsetattr(fd, TCSAFLUSH, &tt); - setenv("TERM","ansi-bbs",1); + setenv("TERM",term,1); /* The following termcap entry is nice: <---SNIP--->