From c8c59285e3b21949c6d20e1e7fa68c3ed92b5949 Mon Sep 17 00:00:00 2001
From: Rob Swindell <rob@synchro.net>
Date: Mon, 16 Nov 2020 19:09:57 -0800
Subject: [PATCH] Changes necessary to build with MSVC2019.

---
 src/syncterm/SyncTERM.vcxproj |  1 +
 src/syncterm/amigafont.h      | 22 ++++++++++++++++++++--
 src/syncterm/ripper.c         |  7 ++++++-
 src/syncterm/term.c           |  2 +-
 4 files changed, 28 insertions(+), 4 deletions(-)

diff --git a/src/syncterm/SyncTERM.vcxproj b/src/syncterm/SyncTERM.vcxproj
index 1eda4c0680..9306dd03cc 100644
--- a/src/syncterm/SyncTERM.vcxproj
+++ b/src/syncterm/SyncTERM.vcxproj
@@ -123,6 +123,7 @@
     <ClCompile Include="ooii_cmenus.c" />
     <ClCompile Include="ooii_logons.c" />
     <ClCompile Include="ooii_sounds.c" />
+    <ClCompile Include="ripper.c" />
     <ClCompile Include="rlogin.c" />
     <ClCompile Include="syncterm.c" />
     <ClCompile Include="telnet_io.c" />
diff --git a/src/syncterm/amigafont.h b/src/syncterm/amigafont.h
index 3452148e05..3d523f1cc3 100644
--- a/src/syncterm/amigafont.h
+++ b/src/syncterm/amigafont.h
@@ -36,7 +36,21 @@ struct FontList {
 	} entry[];
 };
 
-struct FontHeader {
+#if defined(_WIN32) || defined(__BORLANDC__)
+	#define PRAGMA_PACK
+#endif
+
+#if defined(PRAGMA_PACK) || defined(__WATCOMC__)
+	#define _PACK
+#else
+	#define _PACK __attribute__ ((packed))
+#endif
+
+#if defined(PRAGMA_PACK)
+	#pragma pack(push,1)			/* Disk image structures must be packed */
+#endif
+
+struct _PACK FontHeader {
 	uint8_t		ignore[0x6E];
 	uint16_t	height;
 	uint8_t		style;
@@ -52,6 +66,10 @@ struct FontHeader {
 	uint32_t	charlocOffset;
 	uint32_t	fontSpaceOffset;
 	uint32_t	kernOffset;
-} __attribute__((packed));	// TODO: Deal with Microsoft.
+};
+
+#if defined(PRAGMA_PACK)
+#pragma pack(pop)		/* original packing */
+#endif
 
 #endif
diff --git a/src/syncterm/ripper.c b/src/syncterm/ripper.c
index a289c3e293..e03f1f243e 100644
--- a/src/syncterm/ripper.c
+++ b/src/syncterm/ripper.c
@@ -3,6 +3,9 @@
  */
 #include <sys/stat.h>
 
+#if defined(_MSC_VER)
+	#define _USE_MATH_DEFINES // for C
+#endif
 #include <math.h>
 #include <string.h>
 #include <stdbool.h>
@@ -17,7 +20,9 @@
 #include <genwrap.h>
 #include <sockwrap.h>
 #include <strwrap.h>
-#include <unistd.h>
+#if defined(__unix__)
+	#include <unistd.h>
+#endif
 #include <vidmodes.h>
 #include <xpbeep.h>
 
diff --git a/src/syncterm/term.c b/src/syncterm/term.c
index 79f00751de..8eb87d6e9f 100644
--- a/src/syncterm/term.c
+++ b/src/syncterm/term.c
@@ -2479,7 +2479,7 @@ BOOL doterm(struct bbslist *bbs)
 #endif
 	int ooii_mode=0;
 	recv_byte_buffer_len=recv_byte_buffer_pos=0;
-	struct mouse_state ms = {};
+	struct mouse_state ms = {0};
 	int speedwatch = 0;
 
 	gettextinfo(&txtinfo);
-- 
GitLab