diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h
index 18d963b305b19b3aec1d88488d4eb0d245cedbfd..4b3ae490170891ad60fc833850f2ff0ffc9e69b3 100644
--- a/src/sbbs3/sbbs.h
+++ b/src/sbbs3/sbbs.h
@@ -1,6 +1,4 @@
 /* Synchronet class (sbbs_t) definition and exported function prototypes */
-// vi: tabstop=4
-/* $Id: sbbs.h,v 1.583 2020/08/17 00:48:28 rswindell Exp $ */
 
 /****************************************************************************
  * @format.tab-size 4		(Plain Text/Source Code File Header)			*
@@ -15,21 +13,9 @@
  * See the GNU General Public License for more details: gpl.txt or			*
  * 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				*
  * 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.	*
  ****************************************************************************/
 
@@ -675,7 +661,7 @@ public:
 	bool	inputnstime32(time32_t *dt);
 	bool	inputnstime(time_t *dt);
 	bool	chkpass(char *pass, user_t* user, bool unique);
-	char *	cmdstr(const char *instr, const char *fpath, const char *fspec, char *outstr, long mode = EX_UNSPECIFIED);
+	char *	cmdstr(const char *instr, const char *fpath, const char *fspec, char *outstr, long mode = 0);
 	char	cmdstr_output[512];
 
 	void	subinfo(uint subnum);
diff --git a/src/sbbs3/sbbsdefs.h b/src/sbbs3/sbbsdefs.h
index f57703edcb87f555bd0f84b2b4b4bbb2e972383a..af558b63f28be66c100df474faaf4e3ec69c39a7 100644
--- a/src/sbbs3/sbbsdefs.h
+++ b/src/sbbs3/sbbsdefs.h
@@ -842,7 +842,6 @@ enum {							/* readmail and delmailidx which types		*/
 #define EX_JS_CX	(1<<24)		/* New JavaScript context */
 #define EX_NOLOG	(1<<30)		/* Don't log intercepted stdio				*/
 #define EX_CONIO	(1<<31)		/* Intercept Windows console I/O (doorway)	*/
-#define EX_UNSPECIFIED	-1
 
 #if defined(__unix__)
 #define EX_WILDCARD	EX_SH		/* Expand wildcards using 'sh' on Unix		*/
diff --git a/src/sbbs3/xtrn.cpp b/src/sbbs3/xtrn.cpp
index fb31c73df43c6d4eda6ed6300a5b5bf2d95bf11e..a998cca7af5e39a6661a65c796ab15d6fa44757e 100644
--- a/src/sbbs3/xtrn.cpp
+++ b/src/sbbs3/xtrn.cpp
@@ -226,7 +226,10 @@ static bool native_executable(scfg_t* cfg, const char* cmdline, long mode)
 	unsigned i;
 
 	if(mode&EX_NATIVE)
-		return(TRUE);
+		return true;
+
+	if(*cmdline == '?' || *cmdline == '*')
+		return true;
 
     SAFECOPY(str,cmdline);				/* Set str to program name only */
 	truncstr(str," ");
@@ -1839,9 +1842,6 @@ char* sbbs_t::cmdstr(const char *instr, const char *fpath, const char *fspec, ch
 	char	str[MAX_PATH+1],*cmd;
     int		i,j,len;
 
-	if(mode == EX_UNSPECIFIED && (*instr == '?' || *instr == '*'))
-		mode = EX_NATIVE;
-
     if(outstr==NULL)
         cmd=cmdstr_output;
     else
@@ -1874,7 +1874,7 @@ char* sbbs_t::cmdstr(const char *instr, const char *fpath, const char *fspec, ch
                     break;
                 case 'F':   /* File path */
 #if defined(__linux__) && defined(USE_DOSEMU)
-					if(!(mode & EX_NATIVE)
+					if(!native_executable(&cfg, instr, mode)
 						&& strncmp(fpath, cfg.node_dir, strlen(cfg.node_dir)) == 0) {
 						strncat(cmd, DOSEMU_NODE_DIR, avail);
 						strncat(cmd, fpath + strlen(cfg.node_dir), avail);
@@ -1885,7 +1885,7 @@ char* sbbs_t::cmdstr(const char *instr, const char *fpath, const char *fspec, ch
                     break;
                 case 'G':   /* Temp directory */
 #if defined(__linux__) && defined(USE_DOSEMU)
-					if(!(mode & EX_NATIVE))
+					if(!native_executable(&cfg, instr, mode))
 						strncat(cmd, DOSEMU_TEMP_DIR, avail);
 					else
 #endif
@@ -1899,7 +1899,7 @@ char* sbbs_t::cmdstr(const char *instr, const char *fpath, const char *fspec, ch
                     break;
                 case 'J':
 #if defined(__linux__) && defined(USE_DOSEMU)
-					if(!(mode & EX_NATIVE))
+					if(!native_executable(&cfg, instr, mode))
 						strncat(cmd, DOSEMU_DATA_DIR, avail);
 					else
 #endif
@@ -1907,7 +1907,7 @@ char* sbbs_t::cmdstr(const char *instr, const char *fpath, const char *fspec, ch
                     break;
                 case 'K':
 #if defined(__linux__) && defined(USE_DOSEMU)
-					if(!(mode & EX_NATIVE))
+					if(!native_executable(&cfg, instr, mode)))
 						strncat(cmd, DOSEMU_CTRL_DIR, avail);
 					else
 #endif
@@ -1921,7 +1921,7 @@ char* sbbs_t::cmdstr(const char *instr, const char *fpath, const char *fspec, ch
                     break;
                 case 'N':   /* Node Directory (same as SBBSNODE environment var) */
 #if defined(__linux__) && defined(USE_DOSEMU)
-					if(!(mode & EX_NATIVE))
+					if(!native_executable(&cfg, instr, mode))
 						strncat(cmd, DOSEMU_NODE_DIR, avail);
 					else
 #endif
@@ -1966,7 +1966,7 @@ char* sbbs_t::cmdstr(const char *instr, const char *fpath, const char *fspec, ch
                     break;
                 case 'Z':
 #if defined(__linux__) && defined(USE_DOSEMU)
-					if(!(mode & EX_NATIVE))
+					if(!native_executable(&cfg, instr, mode))
 						strncat(cmd, DOSEMU_TEXT_DIR, avail);
 					else
 #endif
@@ -1984,7 +1984,7 @@ char* sbbs_t::cmdstr(const char *instr, const char *fpath, const char *fspec, ch
 					break;
                 case '!':   /* EXEC Directory */
 #if defined(__linux__) && defined(USE_DOSEMU)
-					if(!(mode & EX_NATIVE))
+					if(!native_executable(&cfg, instr, mode))
 						strncat(cmd, DOSEMU_EXEC_DIR, avail);
 					else
 #endif