Removed the dependency on gzgetc and gzgets by implementing internal
versions of these commands in file_wrappers.c. This allows us to compile successfully even on platforms where X has an older zlib built in. Removed this restriction from acinclude.m4 svn path=/trunk/; revision=3948
This commit is contained in:
parent
d1ec951825
commit
29c8fa03b3
33
acinclude.m4
33
acinclude.m4
|
@ -2,7 +2,7 @@ dnl Macros that test for specific features.
|
|||
dnl This file is part of the Autoconf packaging for Ethereal.
|
||||
dnl Copyright (C) 1998-2000 by Gerald Combs.
|
||||
dnl
|
||||
dnl $Id: acinclude.m4,v 1.33 2001/09/17 23:35:22 guy Exp $
|
||||
dnl $Id: acinclude.m4,v 1.34 2001/09/20 16:36:44 ashokn Exp $
|
||||
dnl
|
||||
dnl This program is free software; you can redistribute it and/or modify
|
||||
dnl it under the terms of the GNU General Public License as published by
|
||||
|
@ -373,37 +373,6 @@ AC_DEFUN(AC_ETHEREAL_ZLIB_CHECK,
|
|||
AC_CHECK_LIB(z, gzgets,,enable_zlib=no)
|
||||
fi
|
||||
|
||||
if test x$enable_zlib != xno
|
||||
then
|
||||
#
|
||||
# Well, we at least have the zlib header file and a zlib
|
||||
# with "gzgets()".
|
||||
#
|
||||
# Now check for "gzgets()" in zlib when linking with the
|
||||
# linker flags for GTK+ applications; people often grab
|
||||
# XFree86 source and build and install it on their systems,
|
||||
# and they appear sometimes to misconfigure XFree86 so that,
|
||||
# even on systems with zlib, it assumes there is no zlib,
|
||||
# so the XFree86 build process builds and installs its
|
||||
# own zlib in the X11 library directory.
|
||||
#
|
||||
# The XFree86 zlib is an older version that lacks
|
||||
# "gzgets()", and that's the zlib with which Ethereal
|
||||
# gets linked, so the build of Ethereal fails.
|
||||
#
|
||||
ac_save_CFLAGS="$CFLAGS"
|
||||
ac_save_LIBS="$LIBS"
|
||||
CFLAGS="$CFLAGS $GTK_CFLAGS"
|
||||
LIBS="$GTK_LIBS -lz $LIBS"
|
||||
AC_MSG_CHECKING([for gzgets missing when linking with X11])
|
||||
AC_TRY_LINK_FUNC(gzgets, AC_MSG_RESULT(no),
|
||||
[
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_MSG_ERROR(old XFree86 zlib found - rebuild XFree86 using system zlib or configure Ethereal without compressed file support.)
|
||||
])
|
||||
CFLAGS="$ac_save_CFLAGS"
|
||||
LIBS="$ac_save_LIBS"
|
||||
fi
|
||||
])
|
||||
|
||||
#
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* file_wrappers.c
|
||||
*
|
||||
* $Id: file_wrappers.c,v 1.7 2000/05/19 23:06:50 gram Exp $
|
||||
* $Id: file_wrappers.c,v 1.8 2001/09/20 16:36:45 ashokn Exp $
|
||||
*
|
||||
* Wiretap Library
|
||||
* Copyright (c) 1998 by Gilbert Ramirez <gram@xiexie.org>
|
||||
|
@ -153,3 +153,27 @@ file_error(FILE *fh)
|
|||
return 0;
|
||||
}
|
||||
#endif /* HAVE_LIBZ */
|
||||
|
||||
#ifdef HAVE_LIBZ
|
||||
/*
|
||||
* On some platforms, an older version of zlib is compiled into X. This causes
|
||||
* gzgets() to be unavailable. So here is an implementation of gzgets()
|
||||
*/
|
||||
|
||||
char *
|
||||
internal_gzgets(gzFile file, char *buf, int len)
|
||||
{
|
||||
char *b = buf;
|
||||
if (buf == NULL || len <= 0)
|
||||
return NULL;
|
||||
while (--len > 0 && gzread(file, buf, 1) == 1 && *buf++ != '\n') ;
|
||||
*buf = '\0';
|
||||
return b == buf && len > 0 ? NULL : b;
|
||||
}
|
||||
|
||||
int internal_gzgetc(gzFile file)
|
||||
{
|
||||
unsigned char c;
|
||||
return gzread(file, &c, 1) == 1 ? c : -1;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* file_wrappers.h
|
||||
*
|
||||
* $Id: file_wrappers.h,v 1.4 2000/01/26 19:22:04 guy Exp $
|
||||
* $Id: file_wrappers.h,v 1.5 2001/09/20 16:36:45 ashokn Exp $
|
||||
*
|
||||
* Wiretap Library
|
||||
* Copyright (c) 1998 by Gilbert Ramirez <gram@xiexie.org>
|
||||
|
@ -32,8 +32,10 @@ extern long file_seek(void *stream, long offset, int whence);
|
|||
#define file_write(buf, bsize, count, file) gzwrite((file),(buf),((count)*(bsize)))
|
||||
#define file_close gzclose
|
||||
extern long file_tell(void *stream);
|
||||
#define file_getc gzgetc
|
||||
#define file_gets(buf, len, file) gzgets((file), (buf), (len))
|
||||
char * internal_gzgets(gzFile file, char *buf, int len);
|
||||
int internal_gzgetc(gzFile file);
|
||||
#define file_getc internal_gzgetc
|
||||
#define file_gets(buf, len, file) internal_gzgets((file), (buf), (len))
|
||||
extern int file_error(void *fh);
|
||||
|
||||
#else /* No zLib */
|
||||
|
|
Loading…
Reference in New Issue