diff --git a/src/sbbs3/sbbs_ini.c b/src/sbbs3/sbbs_ini.c index 436c00e3a6aa7e0b4370863dc8af4c2f93cce172..b5dcb2aa84d80f9ac987d149fcb525bf09674386 100644 --- a/src/sbbs3/sbbs_ini.c +++ b/src/sbbs3/sbbs_ini.c @@ -150,7 +150,7 @@ void sbbs_read_ini( ) { const char* section; - const char* default_term; + const char* default_term_ansi; const char* default_cgi_temp; char* ctrl_dir; char host_name[128]; @@ -183,7 +183,7 @@ void sbbs_read_ini( bbs->rlogin_interface =iniReadIpAddress(fp,section,"RLoginInterface",INADDR_ANY); bbs->rlogin_port - =iniReadShortInt(fp,section,"RloginPort",513); + =iniReadShortInt(fp,section,"RLoginPort",513); bbs->first_node =iniReadShortInt(fp,section,"FirstNode",1); @@ -197,16 +197,27 @@ void sbbs_read_ini( /* Set default terminal type to "stock" termcap closest to "ansi-bbs" */ #if defined(__FreeBSD__) - default_term="cons25"; + default_term_ansi="cons25"; #else - default_term="pc3"; + default_term_ansi="pc3"; #endif SAFECOPY(bbs->host_name ,iniReadString(fp,section,"HostName",host_name)); - SAFECOPY(bbs->xtrn_term - ,iniReadString(fp,section,"ExternalTerm",default_term)); + SAFECOPY(bbs->xtrn_term_ansi + ,iniReadString(fp,section,"ExternalTermANSI",default_term_ansi)); + SAFECOPY(bbs->xtrn_term_dumb + ,iniReadString(fp,section,"ExternalTermDumb","dumb")); + + SAFECOPY(bbs->dosemu_path + ,iniReadString(fp,section,"DOSemuPath" +#if defined(__FreeBSD__) + ,"/usr/bin/doscmd" +#else + ,"/usr/bin/dosemu" +#endif + ); SAFECOPY(bbs->answer_sound ,iniReadString(fp,section,"AnswerSound",nulstr)); diff --git a/src/sbbs3/startup.h b/src/sbbs3/startup.h index fe0c832439c2a45f2399ae33c5c6c0efbe1f2727..c945190a38a46afcd0cdbe61ee32b68b6a471d2c 100644 --- a/src/sbbs3/startup.h +++ b/src/sbbs3/startup.h @@ -80,7 +80,7 @@ typedef struct { void (*reserved_fptr2)(void); void (*reserved_fptr1)(void); char ctrl_dir[128]; - char reserved_path8[128]; + char dosemu_path[128]; char reserved_path7[128]; char reserved_path6[128]; char reserved_path5[128]; @@ -88,8 +88,8 @@ typedef struct { char reserved_path3[128]; char answer_sound[128]; char hangup_sound[128]; - char xtrn_term[32]; /* external terminal type (e.g. "ansi-bbs") */ - char reserved_str2[32]; + char xtrn_term_ansi[32]; /* external ANSI terminal type (e.g. "ansi-bbs") */ + char xtrn_term_dumb[32]; /* external dumb terminal type (e.g. "dumb") */ char reserved_str1[64]; char host_name[128]; BOOL recycle_now; diff --git a/src/sbbs3/xtrn.cpp b/src/sbbs3/xtrn.cpp index 9e26f900c987d9e6a2e002a9fb1cef8c941d04fb..5fb56b22cf7720ed984a2031080b4edefc0a58ab 100644 --- a/src/sbbs3/xtrn.cpp +++ b/src/sbbs3/xtrn.cpp @@ -1166,7 +1166,7 @@ int sbbs_t::external(char* cmdline, long mode, char* startup_dir) fclose(doscmdrc); SAFECOPY(str,cmdline); - sprintf(cmdline,"/usr/bin/doscmd -F %s",str); + sprintf(cmdline,"%s -F %s",startup->dosemu_path,str); #endif } @@ -1222,7 +1222,10 @@ int sbbs_t::external(char* cmdline, long mode, char* startup_dir) sigprocmask(SIG_UNBLOCK,&sigs,NULL); if(!(mode&EX_BIN)) { static char term_env[256]; - sprintf(term_env,"TERM=%s",startup->xtrn_term); + if(useron.misc&ANSI) + sprintf(term_env,"TERM=%s",startup->xtrn_term_ansi); + else + sprintf(term_env,"TERM=%s",startup->xtrn_term_dumb); putenv(term_env); } #ifdef __FreeBSD__