From 53a29469996a5fd1478b359ff7ec94ab88a1c650 Mon Sep 17 00:00:00 2001
From: Rob Swindell <rob@synchro.net>
Date: Sat, 25 Jun 2022 21:09:59 -0700
Subject: [PATCH] Auto-detect (log) scripts/module execution as "native", not
 16-bit DOS

Address potential FAQ (issue #415)
---
 src/sbbs3/main.cpp | 5 +++--
 src/sbbs3/sbbs.h   | 3 +++
 src/sbbs3/xtrn.cpp | 2 +-
 3 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index ddba2095b9..c9a3b2aafe 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -3178,6 +3178,7 @@ void event_thread(void* arg)
 						node.status=NODE_EVENT_RUNNING;
 						sbbs->putnodedat(sbbs->cfg.event[i]->node,&node);
 					}
+					const char* cmd = sbbs->cfg.event[i]->cmd;
 					int ex_mode = EX_OFFLINE;
 					if(!(sbbs->cfg.event[i]->misc&EVENT_EXCL)
 						&& sbbs->cfg.event[i]->misc&EX_BG)
@@ -3188,13 +3189,13 @@ void event_thread(void* arg)
 					sbbs->online=ON_LOCAL;
 					sbbs->console|=CON_L_ECHO;
 					sbbs->lprintf(LOG_INFO,"Running %s%stimed event: %s"
-						,(ex_mode&EX_NATIVE)	? "native ":"16-bit DOS "
+						,native_executable(&sbbs->cfg, cmd, ex_mode) ? "native ":"16-bit DOS "
 						,(ex_mode&EX_BG)		? "background ":""
 						,event_code);
 					{
 						int result=
 							sbbs->external(
-								 sbbs->cmdstr(sbbs->cfg.event[i]->cmd,nulstr,sbbs->cfg.event[i]->dir,NULL)
+								 sbbs->cmdstr(cmd,nulstr,sbbs->cfg.event[i]->dir,NULL)
 								,ex_mode
 								,sbbs->cfg.event[i]->dir);
 						if(!(ex_mode&EX_BG))
diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h
index 61cc7b49be..aa6fd56e92 100644
--- a/src/sbbs3/sbbs.h
+++ b/src/sbbs3/sbbs.h
@@ -1251,6 +1251,9 @@ extern "C" {
 	/* con_out.cpp */
 	unsigned char		cp437_to_petscii(unsigned char);
 
+	/* xtrn.cpp */
+	bool				native_executable(scfg_t*, const char* cmdline, long mode);
+
 #ifdef JAVASCRIPT
 
 	typedef struct {
diff --git a/src/sbbs3/xtrn.cpp b/src/sbbs3/xtrn.cpp
index e5a64d400f..c762d0bfb6 100644
--- a/src/sbbs3/xtrn.cpp
+++ b/src/sbbs3/xtrn.cpp
@@ -218,7 +218,7 @@ static void petscii_convert(BYTE* buf, ulong len)
 	}
 }
 
-static bool native_executable(scfg_t* cfg, const char* cmdline, long mode)
+bool native_executable(scfg_t* cfg, const char* cmdline, long mode)
 {
 	char*	p;
 	char	str[MAX_PATH+1];
-- 
GitLab