From 4c9de0f3a0e3d9877ac711f1fe3cecb384141786 Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Fri, 15 Sep 2006 01:01:42 +0000
Subject: [PATCH] In Win32 builds, when generating drop files for 16-bit DOS
 programs, put Micros~1 shortened paths in the drop files. Another fix for
 installations to e.g. "C:\Synchronet"

---
 src/sbbs3/xtrn_sec.cpp | 46 +++++++++++++++++++++++++++++++++---------
 1 file changed, 37 insertions(+), 9 deletions(-)

diff --git a/src/sbbs3/xtrn_sec.cpp b/src/sbbs3/xtrn_sec.cpp
index 746b051be9..4730bf656b 100644
--- a/src/sbbs3/xtrn_sec.cpp
+++ b/src/sbbs3/xtrn_sec.cpp
@@ -306,6 +306,34 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
 	struct tm tl;
 	stats_t stats;
 
+	char	node_dir[MAX_PATH+1];
+	char	ctrl_dir[MAX_PATH+1];
+	char	data_dir[MAX_PATH+1];
+	char	exec_dir[MAX_PATH+1];
+	char	text_dir[MAX_PATH+1];
+	char	temp_dir[MAX_PATH+1];
+
+	SAFECOPY(node_dir,cfg.node_dir);
+	SAFECOPY(ctrl_dir,cfg.ctrl_dir);
+	SAFECOPY(data_dir,cfg.data_dir);
+	SAFECOPY(exec_dir,cfg.exec_dir);
+	SAFECOPY(text_dir,cfg.text_dir);
+	SAFECOPY(temp_dir,cfg.temp_dir);
+
+#ifdef _WIN32
+
+	if(!(misc&XTRN_NATIVE)) {
+		/* Put Micros~1 shortened paths in drop files when running 16-bit DOS programs */
+		GetShortPathName(cfg.node_dir,node_dir,sizeof(node_dir));
+		GetShortPathName(cfg.ctrl_dir,node_dir,sizeof(ctrl_dir));
+		GetShortPathName(cfg.data_dir,data_dir,sizeof(data_dir));
+		GetShortPathName(cfg.exec_dir,exec_dir,sizeof(exec_dir));
+		GetShortPathName(cfg.text_dir,text_dir,sizeof(text_dir));
+		GetShortPathName(cfg.temp_dir,temp_dir,sizeof(temp_dir));
+	}
+
+#endif
+
 	if(type==XTRN_SBBS) {	/* SBBS XTRN.DAT file */
 		strcpy(tmp,"XTRN.DAT");
 		if(misc&XTRN_LWRCASE)
@@ -325,8 +353,8 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
 		write(file,str,strlen(str));
 
 		sprintf(str,"%s\n%s\n%u\n%u\n%lu\n%s\n%lu\n%lu\n"
-			,cfg.ctrl_dir						/* Ctrl dir */
-			,cfg.data_dir						/* Data dir */
+			,ctrl_dir							/* Ctrl dir */
+			,data_dir							/* Data dir */
 			,cfg.sys_nodes						/* Total system nodes */
 			,cfg.node_num						/* Current node */
 			,tleft								/* User Timeleft in seconds */
@@ -406,9 +434,9 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
 			,0									/* Time-slice type */
 			,useron.name						/* Real name/company */
 			,cur_rate							/* DCE rate */
-			,cfg.exec_dir
-			,cfg.text_dir
-			,cfg.temp_dir
+			,exec_dir
+			,text_dir
+			,temp_dir
 			,cfg.sys_id
 			,cfg.node_misc
 			,misc&IO_INTS ? INVALID_SOCKET : client_socket_dup
@@ -459,8 +487,8 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
 		sprintf(str,"%lu\n%s\n%s\n%s\n%lu\n%d\n%s\n%s\n"
 			"%u\n%u\n%lu\n%u\n%lu\n%u\n%s\n"
 			,tleft								/* Time left in seconds */
-			,cfg.node_dir						/* Gfiles dir (log dir) */
-			,cfg.data_dir						/* Data dir */
+			,node_dir							/* Gfiles dir (log dir) */
+			,data_dir							/* Data dir */
 			,"node.log"                         /* Name of log file */
 			,dte_rate							/* DTE rate */
 			,cfg.com_port						/* COM port number */
@@ -571,8 +599,8 @@ void sbbs_t::xtrndat(char *name, char *dropdir, uchar type, ulong tleft
 			,0									/* 30: Kbytes downloaded today */
 			,(useron.cdt+useron.freecdt)/1024UL /* 31: Max Kbytes to download today */
 			,useron.birth						/* 32: User birthday */
-			,cfg.node_dir						/* 33: Path to MAIN directory */
-			,cfg.data_dir						/* 34: Path to GEN directory */
+			,node_dir							/* 33: Path to MAIN directory */
+			,data_dir							/* 34: Path to GEN directory */
 			,cfg.sys_op 						/* 35: Sysop name */
 			,nulstr 							/* 36: Alias name */
 			,0 // sys_eventtime/60				/* 37: Event time HH:MM */
-- 
GitLab