From a487913cb30fcc039b0d2a8037eb28d1381e6002 Mon Sep 17 00:00:00 2001
From: deuce <>
Date: Tue, 5 Jun 2007 19:39:28 +0000
Subject: [PATCH] Add a HACK_HACK_HACK macro which will hopefully fix SSH in
 Win32 regardless of the compiler.

---
 src/syncterm/st_crypt.h | 33 +++++++++++++++++++++------------
 1 file changed, 21 insertions(+), 12 deletions(-)

diff --git a/src/syncterm/st_crypt.h b/src/syncterm/st_crypt.h
index 06296cc30f..a303bdc841 100644
--- a/src/syncterm/st_crypt.h
+++ b/src/syncterm/st_crypt.h
@@ -8,33 +8,42 @@
 	#define C_RET int
 #endif
 
+#ifdef _WIN32
+	#define HACK_HACK_HACK __stdcall
+#else
+	#define HACK_HACK_HACK
+#endif
+
 struct crypt_funcs {
-	C_RET (*PopData)( C_IN CRYPT_HANDLE envelope, C_OUT void C_PTR buffer,
+	C_RET (HACK_HACK_HACK *PopData)( C_IN CRYPT_HANDLE envelope, C_OUT void C_PTR buffer,
 		C_IN int length, C_OUT int C_PTR bytesCopied );
-	C_RET (*PushData)( C_IN CRYPT_HANDLE envelope, C_IN void C_PTR buffer,
+	C_RET (HACK_HACK_HACK *PushData)( C_IN CRYPT_HANDLE envelope, C_IN void C_PTR buffer,
 		C_IN int length, C_OUT int C_PTR bytesCopied );
-	C_RET (*FlushData)( C_IN CRYPT_HANDLE envelope );
-	C_RET (*Init)( void );
-	C_RET (*End)( void );
-	C_RET (*CreateSession)( C_OUT CRYPT_SESSION C_PTR session,
+	C_RET (HACK_HACK_HACK *FlushData)( C_IN CRYPT_HANDLE envelope );
+	C_RET (HACK_HACK_HACK *Init)( void );
+	C_RET (HACK_HACK_HACK *End)( void );
+	C_RET (HACK_HACK_HACK *CreateSession)( C_OUT CRYPT_SESSION C_PTR session,
 		C_IN CRYPT_USER cryptUser,
 		C_IN CRYPT_SESSION_TYPE formatType );
-	C_RET (*GetAttribute)( C_IN CRYPT_HANDLE cryptHandle,
+	C_RET (HACK_HACK_HACK *GetAttribute)( C_IN CRYPT_HANDLE cryptHandle,
 		C_IN CRYPT_ATTRIBUTE_TYPE attributeType,
 		C_OUT int C_PTR value );
-	C_RET (*GetAttributeString)( C_IN CRYPT_HANDLE cryptHandle,
+	C_RET (HACK_HACK_HACK *GetAttributeString)( C_IN CRYPT_HANDLE cryptHandle,
 		C_IN CRYPT_ATTRIBUTE_TYPE attributeType,
 		C_OUT void C_PTR value,
 		C_OUT int C_PTR valueLength );
-	C_RET (*SetAttribute)( C_IN CRYPT_HANDLE cryptHandle,
+	C_RET (HACK_HACK_HACK *SetAttribute)( C_IN CRYPT_HANDLE cryptHandle,
 		C_IN CRYPT_ATTRIBUTE_TYPE attributeType,
 		C_IN int value );
-	C_RET (*SetAttributeString)( C_IN CRYPT_HANDLE cryptHandle,
+	C_RET (HACK_HACK_HACK *SetAttributeString)( C_IN CRYPT_HANDLE cryptHandle,
 		C_IN CRYPT_ATTRIBUTE_TYPE attributeType,
 		C_IN void C_PTR value, C_IN int valueLength );
-	C_RET (*DestroySession)( C_IN CRYPT_SESSION session );
-	C_RET (*AddRandom)( C_IN void C_PTR randomData, C_IN int randomDataLength );
+	C_RET (HACK_HACK_HACK *DestroySession)( C_IN CRYPT_SESSION session );
+	C_RET (HACK_HACK_HACK *AddRandom)( C_IN void C_PTR randomData, C_IN int randomDataLength );
 };
+
+#undef HACK_HACK_HACK
+
 extern struct crypt_funcs cl;
 extern int crypt_loaded;
 
-- 
GitLab