diff --git a/src/sbbs3/download.cpp b/src/sbbs3/download.cpp
index bfbcc236e8ca6d7bc206e7568da2a3e7de321d18..8444e24310362ab75829edbb5679cc47d2f1f142 100644
--- a/src/sbbs3/download.cpp
+++ b/src/sbbs3/download.cpp
@@ -194,7 +194,7 @@ int sbbs_t::protocol(char *cmdline, int cd)
 	i=external(cmdline
 		,EX_OUTL
 #ifdef __unix__		/* file xfer progs use stdio on Unix */
-		|EX_INR|EX_OUTR
+		|EX_INR|EX_OUTR|EX_BIN
 #endif
 		,p);
 	sys_status&=~SS_FILEXFER;
diff --git a/src/sbbs3/execmisc.cpp b/src/sbbs3/execmisc.cpp
index f1b3ddd5100c65cb6de030f6dea3078ae465b9d5..443b957d7192e6b938ef4ab237fa77671c56cb9b 100644
--- a/src/sbbs3/execmisc.cpp
+++ b/src/sbbs3/execmisc.cpp
@@ -967,7 +967,7 @@ int sbbs_t::exec_misc(csi_t* csi, char *path)
 							? cfg.prot[i]->dlcmd : cfg.prot[i]->ulcmd,str,str,buf)
 							,EX_OUTL
 #ifdef __unix__		/* file xfer progs use stdio on Unix */
-							|EX_INR|EX_OUTR
+							|EX_INR|EX_OUTR|EX_BIN
 #endif
 							)==0)
 							csi->logic=LOGIC_TRUE;
@@ -989,7 +989,7 @@ int sbbs_t::exec_misc(csi_t* csi, char *path)
 							 ? cfg.prot[i]->dlcmd : cfg.prot[i]->ulcmd,*pp,*pp,buf)
 							,EX_OUTL
 #ifdef __unix__		/* file xfer progs use stdio on Unix */
-							|EX_INR|EX_OUTR
+							|EX_INR|EX_OUTR|EX_BIN
 #endif
 							)==0)
 							csi->logic=LOGIC_TRUE;
diff --git a/src/sbbs3/sbbsdefs.h b/src/sbbs3/sbbsdefs.h
index 845070c05b7723f09d7c45c1ff965d1a7bcb886c..48928441b5f2da89c14e63a5454a654b1880320c 100644
--- a/src/sbbs3/sbbsdefs.h
+++ b/src/sbbs3/sbbsdefs.h
@@ -718,6 +718,7 @@ enum {						/* readmail and delmailidx which types		*/
 #define EX_OFFLINE	(1<<8)	/* Run this program offline					*/
 #define EX_NATIVE	(1<<9)	/* Native 32-bit application				*/
 #define EX_BG		(1<<10)	/* Back-ground/detached process				*/
+#define EX_BIN		(1<<11)	/* Binary mode (no Unix LF to CRLF)			*/
 
 #define OS2_POPEN	(1<<0)	/* Leave COM port open						*/