]> git.saurik.com Git - apt.git/commitdiff
detect zlib correctly. We still don't allow to build without it to remain
authorDavid Kalnischkies <kalnischkies@gmail.com>
Thu, 5 Apr 2012 13:18:03 +0000 (15:18 +0200)
committerDavid Kalnischkies <kalnischkies@gmail.com>
Thu, 5 Apr 2012 13:18:03 +0000 (15:18 +0200)
compatible with users accessing it directly, but this prepares for a drop
of this strict requirement in the future

apt-pkg/contrib/fileutl.cc
buildlib/config.h.in
configure.in

index 1808489d7d276cc47c23afdde3589e0301c3fed8..691657cb41d8cc113aeb0d76b75aadafe5674804 100644 (file)
 #include <set>
 #include <algorithm>
 
-// FIXME: Compressor Fds have some speed disadvantages and are a bit buggy currently,
-// so while the current implementation satisfies the testcases it is not a real option
-// to disable it for now
-#define APT_USE_ZLIB 1
-#if APT_USE_ZLIB
-#include <zlib.h>
-#else
-#pragma message "Usage of zlib is DISABLED!"
+#ifdef HAVE_ZLIB
+       #include <zlib.h>
 #endif
 
 #ifdef WORDS_BIGENDIAN
@@ -65,7 +59,7 @@ using namespace std;
 
 class FileFdPrivate {
        public:
-#if APT_USE_ZLIB
+#ifdef HAVE_ZLIB
        gzFile gz;
 #else
        void* gz;
@@ -1016,7 +1010,7 @@ bool FileFd::OpenInternDescriptor(unsigned int const Mode, APT::Configuration::C
    d->compressor = compressor;
    if (compressor.Name == "." || compressor.Binary.empty() == true)
       return true;
-#if APT_USE_ZLIB
+#ifdef HAVE_ZLIB
    else if (compressor.Name == "gzip")
    {
       if ((Mode & ReadWrite) == ReadWrite)
@@ -1137,7 +1131,7 @@ bool FileFd::Read(void *To,unsigned long long Size,unsigned long long *Actual)
    *((char *)To) = '\0';
    do
    {
-#if APT_USE_ZLIB
+#ifdef HAVE_ZLIB
       if (d->gz != NULL)
          Res = gzread(d->gz,To,Size);
       else
@@ -1149,7 +1143,7 @@ bool FileFd::Read(void *To,unsigned long long Size,unsigned long long *Actual)
         if (errno == EINTR)
            continue;
         Flags |= Fail;
-#if APT_USE_ZLIB
+#ifdef HAVE_ZLIB
         if (d->gz != NULL)
         {
            int err;
@@ -1190,7 +1184,7 @@ bool FileFd::Read(void *To,unsigned long long Size,unsigned long long *Actual)
 char* FileFd::ReadLine(char *To, unsigned long long const Size)
 {
    *To = '\0';
-#if APT_USE_ZLIB
+#ifdef HAVE_ZLIB
    if (d->gz != NULL)
       return gzgets(d->gz, To, Size);
 #endif
@@ -1221,7 +1215,7 @@ bool FileFd::Write(const void *From,unsigned long long Size)
    errno = 0;
    do
    {
-#if APT_USE_ZLIB
+#ifdef HAVE_ZLIB
       if (d->gz != NULL)
          Res = gzwrite(d->gz,From,Size);
       else
@@ -1289,7 +1283,7 @@ bool FileFd::Seek(unsigned long long To)
       return true;
    }
    int res;
-#if APT_USE_ZLIB
+#ifdef HAVE_ZLIB
    if (d->gz)
       res = gzseek(d->gz,To,SEEK_SET);
    else
@@ -1325,7 +1319,7 @@ bool FileFd::Skip(unsigned long long Over)
    }
 
    int res;
-#if APT_USE_ZLIB
+#ifdef HAVE_ZLIB
    if (d->gz != NULL)
       res = gzseek(d->gz,Over,SEEK_CUR);
    else
@@ -1373,7 +1367,7 @@ unsigned long long FileFd::Tell()
       return d->seekpos;
 
    off_t Res;
-#if APT_USE_ZLIB
+#ifdef HAVE_ZLIB
    if (d->gz != NULL)
      Res = gztell(d->gz);
    else
@@ -1427,7 +1421,7 @@ unsigned long long FileFd::Size()
       size = Tell();
       Seek(oldSeek);
    }
-#if APT_USE_ZLIB
+#ifdef HAVE_ZLIB
    // only check gzsize if we are actually a gzip file, just checking for
    // "gz" is not sufficient as uncompressed files could be opened with
    // gzopen in "direct" mode as well
@@ -1500,7 +1494,7 @@ bool FileFd::Close()
    bool Res = true;
    if ((Flags & AutoClose) == AutoClose)
    {
-#if APT_USE_ZLIB
+#ifdef HAVE_ZLIB
       if (d != NULL && d->gz != NULL) {
         int const e = gzclose(d->gz);
         // gzdclose() on empty files always fails with "buffer error" here, ignore that
index 87918bbec27b41d063bda7ec46ca0206c64504fc..43d39d30403d2a1eaacb4656c9e8732775c38ce0 100644 (file)
@@ -19,6 +19,9 @@
 /* Define if we have the timegm() function */
 #undef HAVE_TIMEGM
 
+/* Define if we have the zlib library for gzip */
+#undef HAVE_ZLIB
+
 /* These two are used by the statvfs shim for glibc2.0 and bsd */
 /* Define if we have sys/vfs.h */
 #undef HAVE_VFS_H
index 78ad06b724bf5e41113c79fe3d9ef90ad9711861..ec98ba4ef57da4563233b707a6c064cea929ed98 100644 (file)
@@ -89,7 +89,7 @@ AC_CHECK_LIB(curl, curl_easy_init,
 AC_SUBST(BDBLIB)
 
 AC_CHECK_LIB(z, gzopen,
-       [AC_CHECK_HEADER(zlib.h, [], AC_MSG_ERROR([failed: zlib.h not found]))],
+       [AC_CHECK_HEADER(zlib.h, [AC_DEFINE(HAVE_ZLIB)], AC_MSG_ERROR([failed: zlib.h not found]))],
        AC_MSG_ERROR([failed: Need libz]))
 
 dnl Converts the ARCH to be something singular for this general CPU family