From b7135a318aee5ae41e7f17ab2b8e23e60be4be2e Mon Sep 17 00:00:00 2001
From: deuce <>
Date: Sat, 5 Apr 2008 07:46:47 +0000
Subject: [PATCH] Make requirement for Cryptlib optional. Does not disable SSH
 options in menus, just makes the binary NEVER work with Cryptlib.

---
 src/syncterm/GNUmakefile |  6 ++++++
 src/syncterm/conn.c      |  9 +++++++++
 src/syncterm/objects.mk  |  1 -
 src/syncterm/st_crypt.c  | 18 +++++++++++++++++-
 src/syncterm/st_crypt.h  |  2 ++
 5 files changed, 34 insertions(+), 2 deletions(-)

diff --git a/src/syncterm/GNUmakefile b/src/syncterm/GNUmakefile
index e3bf791de2..8cfa01b3a5 100644
--- a/src/syncterm/GNUmakefile
+++ b/src/syncterm/GNUmakefile
@@ -50,6 +50,12 @@ ifeq ($(os),sunos)    # Solaris
  CFLAGS	+=	-DNEED_CFMAKERAW
 endif
 
+ifdef WITHOUT_CRYPTLIB
+ CFLAGS += -DWITHOUT_CRYPTLIB
+else
+ OBJS += $(MTOBJODIR)$(DIRSEP)ssh$(OFILE)
+endif
+
 ifdef STATIC_CRYPTLIB
  CFLAGS += -DSTATIC_CRYPTLIB
  LDFLAGS += -lz
diff --git a/src/syncterm/conn.c b/src/syncterm/conn.c
index 3f14b195f0..7bdd2fcede 100644
--- a/src/syncterm/conn.c
+++ b/src/syncterm/conn.c
@@ -300,9 +300,18 @@ int conn_connect(struct bbslist *bbs)
 			conn_api.close=raw_close;
 			break;
 		case CONN_TYPE_SSH:
+#ifdef WITHOUT_CRYPTLIB
+			init_uifc(TRUE, TRUE);
+			uifcmsg("SSH inoperative",	"`Compiled without cryptlib`\n\n"
+					"This binary was compiled without Cryptlib,\n"
+					"which is required for SSH support."
+					);
+			return(-1);
+#else
 			conn_api.connect=ssh_connect;
 			conn_api.close=ssh_close;
 			break;
+#endif
 		case CONN_TYPE_SERIAL:
 			conn_api.connect=modem_connect;
 			conn_api.close=serial_close;
diff --git a/src/syncterm/objects.mk b/src/syncterm/objects.mk
index e0324c267e..57e24d106a 100644
--- a/src/syncterm/objects.mk
+++ b/src/syncterm/objects.mk
@@ -4,7 +4,6 @@ OBJS = \
                         $(MTOBJODIR)$(DIRSEP)filepick$(OFILE) \
                         $(MTOBJODIR)$(DIRSEP)fonts$(OFILE) \
                         $(MTOBJODIR)$(DIRSEP)rlogin$(OFILE) \
-                        $(MTOBJODIR)$(DIRSEP)ssh$(OFILE) \
                         $(MTOBJODIR)$(DIRSEP)telnet_io$(OFILE) \
                         $(MTOBJODIR)$(DIRSEP)modem$(OFILE) \
                         $(MTOBJODIR)$(DIRSEP)conn_telnet$(OFILE) \
diff --git a/src/syncterm/st_crypt.c b/src/syncterm/st_crypt.c
index a81c107faf..105935b773 100644
--- a/src/syncterm/st_crypt.c
+++ b/src/syncterm/st_crypt.c
@@ -7,9 +7,23 @@
 
 #include "st_crypt.h"
 
-struct crypt_funcs cl;
 int crypt_loaded=0;
 
+#ifdef WITHOUT_CRYPTLIB
+
+int init_crypt()
+{
+	return(-1);
+}
+
+void exit_crypt()
+{
+}
+
+#else
+
+struct crypt_funcs cl;
+
 int init_crypt(void)
 {
 #ifdef STATIC_CRYPTLIB
@@ -159,3 +173,5 @@ void exit_crypt(void)
 	if(crypt_loaded)
 		cl.End();
 }
+
+#endif
diff --git a/src/syncterm/st_crypt.h b/src/syncterm/st_crypt.h
index 70b856c9bb..23c6eca65b 100644
--- a/src/syncterm/st_crypt.h
+++ b/src/syncterm/st_crypt.h
@@ -3,6 +3,7 @@
 #ifndef _ST_CRYPT_H_
 #define _ST_CRYPT_H_
 
+#ifndef WITHOUT_CRYPTLIB
 #include"cryptlib.h"
 
 #if defined(_MSC_VER)
@@ -45,6 +46,7 @@ struct crypt_funcs {
 };
 
 #undef HACK_HACK_HACK
+#endif
 
 extern struct crypt_funcs cl;
 extern int crypt_loaded;
-- 
GitLab