aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Schneider <mail@cynapses.org>2009-03-28 21:43:53 +0000
committerAndreas Schneider <mail@cynapses.org>2009-03-28 21:43:53 +0000
commit33b948cab991cb9ef4834ea02b19cf38623bcc3f (patch)
treeabd6df3b0b1df55c6b96da3adf32161b4c26fa5e
parentd3d7f08d6a7c9738856b6b3d55c8f255fe881463 (diff)
downloadlibssh-33b948cab991cb9ef4834ea02b19cf38623bcc3f.tar.gz
libssh-33b948cab991cb9ef4834ea02b19cf38623bcc3f.tar.xz
libssh-33b948cab991cb9ef4834ea02b19cf38623bcc3f.zip
Add an option WITH_LIBZ to compile with zlib support.
git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@289 7dcaeef0-15fb-0310-b436-a5af3365683c
-rw-r--r--ConfigureChecks.cmake5
-rw-r--r--DefineOptions.cmake1
-rw-r--r--config.h.cmake5
-rw-r--r--libssh/gzip.c18
-rw-r--r--libssh/kex.c4
-rw-r--r--libssh/misc.c29
-rw-r--r--libssh/packet.c12
7 files changed, 51 insertions, 23 deletions
diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake
index 70924d2b..1899ebd3 100644
--- a/ConfigureChecks.cmake
+++ b/ConfigureChecks.cmake
@@ -49,6 +49,11 @@ if (Z_LIBRARY)
set(HAVE_LIBZ 1)
endif (Z_LIBRARY)
+# OPTIONS
+if (WITH_LIBZ)
+ set(WITH_LIBZ 1)
+endif (WITH_LIBZ)
+
if (WITH_SSH1)
set(HAVE_SSH1 1)
endif (WITH_SSH1)
diff --git a/DefineOptions.cmake b/DefineOptions.cmake
index 3b5eb1b5..20301fc8 100644
--- a/DefineOptions.cmake
+++ b/DefineOptions.cmake
@@ -1,2 +1,3 @@
+option(WITH_LIBZ "Build with ZLIB support" ON)
option(WITH_SSH1 "Build with SSH1 support" OFF)
option(WITH_STATIC_LIB "Build with a static library" OFF)
diff --git a/config.h.cmake b/config.h.cmake
index f8058259..5d6f00a1 100644
--- a/config.h.cmake
+++ b/config.h.cmake
@@ -59,8 +59,11 @@
/**************************** OPTIONS ****************************/
+/* Define to 1 if you want to enable ZLIB */
+#cmakedefine WITH_LIBZ 1
+
/* Define to 1 if you want to enable SSH1 */
-#cmakedefine HAVE_SSH1
+#cmakedefine HAVE_SSH1 1
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
significant byte first (like Motorola and SPARC, unlike Intel). */
diff --git a/libssh/gzip.c b/libssh/gzip.c
index 0af45f1f..74de6f8a 100644
--- a/libssh/gzip.c
+++ b/libssh/gzip.c
@@ -19,17 +19,16 @@ You should have received a copy of the GNU Lesser General Public License
along with the SSH Library; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA. */
+
+#include "config.h"
#include "libssh/priv.h"
-#ifdef HAVE_LIBZ
-#undef NO_GZIP
-#else
-#define NO_GZIP
-#endif
-#ifndef NO_GZIP
+#if defined(HAVE_LIBZ) && defined(WITH_LIBZ)
+
#include <zlib.h>
#include <string.h>
#include <stdlib.h>
+
#define BLOCKSIZE 4092
static z_stream *initcompress(SSH_SESSION *session,int level){
@@ -42,7 +41,7 @@ static z_stream *initcompress(SSH_SESSION *session,int level){
return stream;
}
-BUFFER *gzip_compress(SSH_SESSION *session,BUFFER *source,int level){
+static BUFFER *gzip_compress(SSH_SESSION *session,BUFFER *source,int level){
BUFFER *dest;
static unsigned char out_buf[BLOCKSIZE];
void *in_ptr=buffer_get(source);
@@ -96,7 +95,7 @@ static z_stream *initdecompress(SSH_SESSION *session){
return stream;
}
-BUFFER *gzip_decompress(SSH_SESSION *session,BUFFER *source){
+static BUFFER *gzip_decompress(SSH_SESSION *session,BUFFER *source){
BUFFER *dest;
static unsigned char out_buf[BLOCKSIZE];
void *in_ptr=buffer_get_rest(source);
@@ -138,4 +137,5 @@ int decompress_buffer(SSH_SESSION *session,BUFFER *buf){
return 0;
}
-#endif /* NO_GZIP */
+#endif /* HAVE_LIBZ && WITH_LIBZ */
+
diff --git a/libssh/kex.c b/libssh/kex.c
index a2d93403..3e448673 100644
--- a/libssh/kex.c
+++ b/libssh/kex.c
@@ -22,6 +22,8 @@ MA 02111-1307, USA. */
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
+
+#include "config.h"
#include "libssh/priv.h"
#include "libssh/ssh2.h"
#include "libssh/ssh1.h"
@@ -44,7 +46,7 @@ MA 02111-1307, USA. */
#define DES "3des-cbc"
#endif
-#ifdef HAVE_LIBZ
+#if defined(HAVE_LIBZ) && defined(WITH_LIBZ)
#define ZLIB "none,zlib"
#else
#define ZLIB "none"
diff --git a/libssh/misc.c b/libssh/misc.c
index a6d85413..f58fbf47 100644
--- a/libssh/misc.c
+++ b/libssh/misc.c
@@ -29,6 +29,8 @@ MA 02111-1307, USA. */
#include <stdlib.h>
#include <sys/types.h>
+#include "config.h"
+
#ifdef _WIN32
#define _WIN32_IE 0x0400 //SHGetSpecialFolderPath
#include <shlobj.h>
@@ -39,6 +41,24 @@ MA 02111-1307, USA. */
#include "libssh/priv.h"
+#ifdef HAVE_LIBGCRYPT
+#define GCRYPT_STRING "/gnutls"
+#else
+#define GCRYPT_STRING ""
+#endif
+
+#ifdef HAVE_LIBCRYPTO
+#define CRYPTO_STRING "/openssl"
+#else
+#define CRYPTO_STRING ""
+#endif
+
+#if defined(HAVE_LIBZ) && defined(WITH_LIBZ)
+#define LIBZ_STRING "/zlib"
+#else
+#define LIBZ_STRING ""
+#endif
+
/** \defgroup ssh_misc SSH Misc
* \brief Misc functions
*/
@@ -116,13 +136,8 @@ u64 ntohll(u64 a){
*/
const char *ssh_version(int req_version) {
if (req_version <= LIBSSH_VERSION_INT) {
-#ifdef HAVE_LIBGCRYPT
- return SSH_STRINGIFY(LIBSSH_VERSION) "/gnutls/zlib";
-#elif defined HAVE_LIBCRYPTO
- return SSH_STRINGIFY(LIBSSH_VERSION) "/openssl/zlib";
-#else
- return SSH_STRINGIFY(LIBSSH_VERSION);
-#endif
+ return SSH_STRINGIFY(LIBSSH_VERSION) GCRYPT_STRING CRYPTO_STRING
+ LIBZ_STRING;
}
return NULL;
diff --git a/libssh/packet.c b/libssh/packet.c
index aca1255d..6c96a56f 100644
--- a/libssh/packet.c
+++ b/libssh/packet.c
@@ -24,10 +24,12 @@ MA 02111-1307, USA. */
#include <stdio.h>
#include <unistd.h>
#include <string.h>
+#include <errno.h>
+
+#include "config.h"
#include "libssh/priv.h"
#include "libssh/ssh2.h"
#include "libssh/ssh1.h"
-#include <errno.h>
#include "libssh/crypto.h"
/* XXX include selected mac size */
@@ -139,7 +141,7 @@ static int packet_read2(SSH_SESSION *session){
ssh_log(session, SSH_LOG_RARE,
"After padding, %d bytes left in buffer",
buffer_get_rest_len(session->in_buffer));
-#ifdef HAVE_LIBZ
+#if defined(HAVE_LIBZ) && defined(WITH_LIBZ)
if(session->current_crypto && session->current_crypto->do_compress_in){
ssh_log(session, SSH_LOG_RARE, "Decompressing in_buffer ...");
decompress_buffer(session,session->in_buffer);
@@ -247,7 +249,7 @@ static int packet_read1(SSH_SESSION *session){
buffer_pass_bytes(session->in_buffer,padding); /*pass the padding*/
ssh_log(session,SSH_LOG_PACKET,"the packet is valid");
/* will do that later
-#ifdef HAVE_LIBZ
+#if defined(HAVE_LIBZ) && defined(WITH_LIBZ)
if(session->current_crypto && session->current_crypto->do_compress_in){
decompress_buffer(session,session->in_buffer);
}
@@ -326,7 +328,7 @@ static int packet_send2(SSH_SESSION *session){
enter_function();
ssh_log(session, SSH_LOG_RARE,
"Writing on the wire a packet having %u bytes before", currentlen);
-#ifdef HAVE_LIBZ
+#if defined(HAVE_LIBZ) && defined(WITH_LIBZ)
if(session->current_crypto && session->current_crypto->do_compress_out){
ssh_log(session, SSH_LOG_RARE, "Compressing in_buffer ...");
compress_buffer(session,session->out_buffer);
@@ -369,7 +371,7 @@ static int packet_send1(SSH_SESSION *session){
enter_function();
ssh_log(session,SSH_LOG_PACKET,"Sending a %d bytes long packet",currentlen);
/*
-#ifdef HAVE_LIBZ
+#if defined(HAVE_LIBZ) && defined(WITH_LIBZ)
if(session->current_crypto && session->current_crypto->do_compress_out){
compress_buffer(session,session->out_buffer);
currentlen=buffer_get_len(session->out_buffer);