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