diff --git a/exec/dosemulaunch.ini b/exec/dosemulaunch.ini index d5b14c09258e5c265df5f74b125b61b3bae1919d..0047505a3f62009475a6e14672fb2b01bfee5fd0 100644 --- a/exec/dosemulaunch.ini +++ b/exec/dosemulaunch.ini @@ -18,6 +18,6 @@ ; ; for standard external programs, put it in the global "cmd" key ; for intercept i/o programs, you can override by putting "cmd" key under [stdio] section -cmd=/usr/bin/env $TERM RUNTYPE=FOSSIL HOME=$CTRLDIR QUIET=1 DOSDRIVE_D=$NODEDIR NODEDIR=$NODEDIR $DOSEMUBIN -I"video { none }" $VIRTUALCONF -f$DOSEMUCONF -E$EXTBAT -o$NODEDIRdosemu_boot.log $EXTLOG +cmd=/usr/bin/env $TERM HOME=$CTRLDIR QUIET=1 DOSDRIVE_D=$NODEDIR NODEDIR=$NODEDIR $DOSEMUBIN -I"video { none }" $VIRTUALCONF -f$DOSEMUCONF -E$EXTBAT -o$NODEDIRdosemu_boot.log $EXTLOG [stdio] -cmd=/usr/bin/env $TERM RUNTYPE=STDIO HOME=$CTRLDIR QUIET=1 DOSDRIVE_D=$NODEDIR NODEDIR=$NODEDIR $DOSEMUBIN -I"video { none }" -I'keystroke "\n"' $VIRTUALCONF -f$DOSEMUCONF -E$EXTBAT -o$NODEDIRdosemu_boot.log $EXTLOG +cmd=/usr/bin/env $TERM HOME=$CTRLDIR QUIET=1 DOSDRIVE_D=$NODEDIR NODEDIR=$NODEDIR $DOSEMUBIN -I"video { none }" -I'keystroke "\n"' $VIRTUALCONF -f$DOSEMUCONF -E$EXTBAT -o$NODEDIRdosemu_boot.log $EXTLOG diff --git a/exec/external.bat b/exec/external.bat index e8224b68cec20a41f135e75632d4d855f1c85e29..96eb8039dfe7673c14fac5d6463e86fade52f395 100644 --- a/exec/external.bat +++ b/exec/external.bat @@ -30,11 +30,10 @@ GOTO EXEC :NOEMU @set PATH=%PATH%;E:\dosutils;H:\dosutils -unix -s RUNTYPE REM fossil driver, such as x00, bnu, or dosemu fossil.com -rem IF "%RUNTYPE%" == "FOSSIL" @fossil.com >NUL -rem IF "%RUNTYPE%" == "FOSSIL" bnu.com /P1 /L0=11520 >NUL -IF "%RUNTYPE%" == "FOSSIL" x00.exe eliminate >NUL +rem IF "$RUNTYPE" == "FOSSIL" @fossil.com >NUL +rem IF "$RUNTYPE" == "FOSSIL" bnu.com /P1 /L0=11520 >NUL +IF "$RUNTYPE" == "FOSSIL" x00.exe eliminate >NUL REM share.exe for multinode file locking @share >NUL diff --git a/src/sbbs3/xtrn.cpp b/src/sbbs3/xtrn.cpp index 71e1b177bcf77967ae87d08a3bba2b5e56cb30e8..bb057f967ee020f2fb597b1e84f47755353f96f8 100644 --- a/src/sbbs3/xtrn.cpp +++ b/src/sbbs3/xtrn.cpp @@ -1194,6 +1194,7 @@ int sbbs_t::external(const char* cmdline, long mode, const char* startup_dir) char virtualconf[75]; char dosterm[15]; char log_external[MAX_PATH+1]; + char runtype[7]; str_list_t de_launch_ini; /* on the Unix side. xtrndir is the parent of the door's startup dir. */ @@ -1315,6 +1316,19 @@ int sbbs_t::external(const char* cmdline, long mode, const char* startup_dir) fprintf(dosemubatfp,"SET STARTDIR=%s\r\n",gamedir); + /* Check the "Stdio Interception" flag from scfg for this door. If it's + * enabled, we enable doorway mode. Else, it's vmodem for us, unless + * it's a timed event. + */ + + if (!(mode&(EX_STDIO)) && online!=ON_LOCAL) { + SAFECOPY(virtualconf,"-I\"serial { virtual com 1 }\""); + SAFECOPY(runtype, "FOSSIL"); + } else { + virtualconf[0] = '\0'; + SAFECOPY(runtype, "STDIO"); + } + /* now append exec/external.bat (which is editable) to this generated file */ SAFEPRINTF(str,"%sexternal.bat",startup_dir); @@ -1346,18 +1360,19 @@ int sbbs_t::external(const char* cmdline, long mode, const char* startup_dir) } named_string_t externalbat_replacements[] = { - {(char*)"CMDLINE",cmdlinebatch }, - {(char*)"DSZLOG",(char*)nodedrive }, - {(char*)"SBBSNODE",(char*)nodedrive }, - {(char*)"SBBSCTRL",(char*)ctrldrive }, - {(char*)"SBBSDATA",(char*)datadrive }, - {(char*)"SBBSEXEC",(char*)execdrive }, - {(char*)"XTRNDIR",xtrndir_dos }, - {(char*)"CTRLDIR",ctrldir_dos }, - {(char*)"DATADIR",datadir_dos }, - {(char*)"EXECDIR",execdir_dos }, - {(char*)"NODEDIR",nodedir_dos }, - {(char*)"STARTDIR",(char*)gamedir }, + {(char*)"CMDLINE", cmdlinebatch }, + {(char*)"DSZLOG", (char*)nodedrive }, + {(char*)"SBBSNODE", (char*)nodedrive }, + {(char*)"SBBSCTRL", (char*)ctrldrive }, + {(char*)"SBBSDATA", (char*)datadrive }, + {(char*)"SBBSEXEC", (char*)execdrive }, + {(char*)"XTRNDIR", xtrndir_dos }, + {(char*)"CTRLDIR", ctrldir_dos }, + {(char*)"DATADIR", datadir_dos }, + {(char*)"EXECDIR", execdir_dos }, + {(char*)"NODEDIR", nodedir_dos }, + {(char*)"STARTDIR", (char*)gamedir }, + {(char*)"RUNTYPE", runtype }, {NULL, NULL } }; @@ -1375,16 +1390,6 @@ int sbbs_t::external(const char* cmdline, long mode, const char* startup_dir) fclose(externalbatfp); - /* Check the "Stdio Interception" flag from scfg for this door. If it's - * enabled, we enable doorway mode. Else, it's vmodem for us, unless - * it's a timed event. - */ - - if (!(mode&(EX_STDIO)) && online!=ON_LOCAL) - SAFECOPY(virtualconf,"-I\"serial { virtual com 1 }\""); - else - virtualconf[0] = '\0'; - /* Set the interception bits, since we are always going to want Synchronet * to intercept dos programs under Unix. */ @@ -1469,6 +1474,7 @@ int sbbs_t::external(const char* cmdline, long mode, const char* startup_dir) {(char*)"DOSEMUCONF", dosemuconf}, {(char*)"EXTBAT", externalbat}, {(char*)"EXTLOG", log_external}, + {(char*)"RUNTYPE", runtype }, {NULL, NULL} }; replace_named_values(de_launch_cmd, fullcmdline, sizeof(fullcmdline), (char*)"$",