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
This commit is contained in:
Andreas Schneider 2009-03-28 21:43:53 +00:00
parent d3d7f08d6a
commit 33b948cab9
7 changed files with 52 additions and 24 deletions

View File

@ -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)

View File

@ -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)

View File

@ -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). */

View File

@ -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 "libssh/priv.h"
#ifdef HAVE_LIBZ
#undef NO_GZIP
#else
#define NO_GZIP
#endif
#ifndef NO_GZIP
#include "config.h"
#include "libssh/priv.h"
#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 */

View File

@ -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"

View File

@ -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;

View File

@ -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);