From 0dfbbbc6e7958ace2c7f7c4ed24624225fa0343f Mon Sep 17 00:00:00 2001 From: Rob Swindell <rob@synchro.net> Date: Mon, 30 Nov 2020 15:14:46 -0800 Subject: [PATCH] Revert "Better native vs. DOS cmd-line detection in cmdstr()" This reverts commit 1597e9a9ce13625ad8710fc9b737926347b6d281. --- src/sbbs3/sbbs.h | 16 +++++++++++++++- src/sbbs3/sbbsdefs.h | 1 + src/sbbs3/xtrn.cpp | 22 +++++++++++----------- 3 files changed, 27 insertions(+), 12 deletions(-) diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h index 4b3ae49017..18d963b305 100644 --- a/src/sbbs3/sbbs.h +++ b/src/sbbs3/sbbs.h @@ -1,4 +1,6 @@ /* 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) * @@ -13,9 +15,21 @@ * 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. * ****************************************************************************/ @@ -661,7 +675,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 = 0); + char * cmdstr(const char *instr, const char *fpath, const char *fspec, char *outstr, long mode = EX_UNSPECIFIED); char cmdstr_output[512]; void subinfo(uint subnum); diff --git a/src/sbbs3/sbbsdefs.h b/src/sbbs3/sbbsdefs.h index af558b63f2..f57703edcb 100644 --- a/src/sbbs3/sbbsdefs.h +++ b/src/sbbs3/sbbsdefs.h @@ -842,6 +842,7 @@ 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 a998cca7af..fb31c73df4 100644 --- a/src/sbbs3/xtrn.cpp +++ b/src/sbbs3/xtrn.cpp @@ -226,10 +226,7 @@ static bool native_executable(scfg_t* cfg, const char* cmdline, long mode) unsigned i; if(mode&EX_NATIVE) - return true; - - if(*cmdline == '?' || *cmdline == '*') - return true; + return(TRUE); SAFECOPY(str,cmdline); /* Set str to program name only */ truncstr(str," "); @@ -1842,6 +1839,9 @@ 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(!native_executable(&cfg, instr, mode) + if(!(mode & EX_NATIVE) && 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(!native_executable(&cfg, instr, mode)) + if(!(mode & EX_NATIVE)) 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(!native_executable(&cfg, instr, mode)) + if(!(mode & EX_NATIVE)) 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(!native_executable(&cfg, instr, mode))) + if(!(mode & EX_NATIVE)) 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(!native_executable(&cfg, instr, mode)) + if(!(mode & EX_NATIVE)) 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(!native_executable(&cfg, instr, mode)) + if(!(mode & EX_NATIVE)) 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(!native_executable(&cfg, instr, mode)) + if(!(mode & EX_NATIVE)) strncat(cmd, DOSEMU_EXEC_DIR, avail); else #endif -- GitLab