]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Remove support for liblzmadec and use FindLibLZMA 806/head
authorMartin Matuska <martin@matuska.org>
Mon, 17 Oct 2016 11:02:21 +0000 (13:02 +0200)
committerMartin Matuska <martin@matuska.org>
Tue, 25 Oct 2016 22:39:46 +0000 (00:39 +0200)
Closes #806

CMakeLists.txt
build/cmake/FindLZMA.cmake [deleted file]
configure.ac
contrib/android/config/windows_host.h
libarchive/archive_read_support_filter_xz.c
libarchive/archive_read_support_format_xar.c

index a376fce5dc700e2581c8a381b5ecc44c9032efb7..fa651eb23381beda1597cc687202b25cf655cf37 100644 (file)
@@ -452,34 +452,28 @@ MARK_AS_ADVANCED(CLEAR BZIP2_LIBRARIES)
 # Find LZMA
 #
 IF(ENABLE_LZMA)
-  FIND_PACKAGE(LZMA)
+  FIND_PACKAGE(LibLZMA)
 ELSE()
-  SET(LZMA_FOUND FALSE) # Override cached value
-  SET(LZMADEC_FOUND FALSE) # Override cached value
+  SET(LIBZMA_FOUND FALSE) # Override cached value
 ENDIF()
 
-IF(LZMA_FOUND)
+IF(LIBLZMA_FOUND)
   SET(HAVE_LIBLZMA 1)
   SET(HAVE_LZMA_H 1)
-  INCLUDE_DIRECTORIES(${LZMA_INCLUDE_DIR})
-  LIST(APPEND ADDITIONAL_LIBS ${LZMA_LIBRARIES})
+  INCLUDE_DIRECTORIES(${LIBLZMA_INCLUDE_DIRS})
+  LIST(APPEND ADDITIONAL_LIBS ${LIBLZMA_LIBRARIES})
   # Test if a macro is needed for the library.
   TRY_MACRO_FOR_LIBRARY(
-    "${LZMA_INCLUDE_DIR}" "${LZMA_LIBRARIES}"
+    "${LIBLZMA_INCLUDE_DIRS}" "${LIBLZMA_LIBRARIES}"
     COMPILES
     "#include <lzma.h>\nint main() {return (int)lzma_version_number(); }"
     "WITHOUT_LZMA_API_STATIC;LZMA_API_STATIC")
   IF(NOT WITHOUT_LZMA_API_STATIC AND LZMA_API_STATIC)
     ADD_DEFINITIONS(-DLZMA_API_STATIC)
   ENDIF(NOT WITHOUT_LZMA_API_STATIC AND LZMA_API_STATIC)
-ELSEIF(LZMADEC_FOUND)
-  SET(HAVE_LIBLZMADEC 1)
-  SET(HAVE_LZMADEC_H 1)
-  INCLUDE_DIRECTORIES(${LZMADEC_INCLUDE_DIR})
-  LIST(APPEND ADDITIONAL_LIBS ${LZMADEC_LIBRARIES})
-ELSE(LZMA_FOUND)
+ELSE(LIBLZMA_FOUND)
 # LZMA not found and will not be used.
-ENDIF(LZMA_FOUND)
+ENDIF(LIBLZMA_FOUND)
 #
 # Find LZO2
 #
diff --git a/build/cmake/FindLZMA.cmake b/build/cmake/FindLZMA.cmake
deleted file mode 100644 (file)
index 0b46b2c..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-# - Find lzma and lzmadec
-# Find the native LZMA includes and library
-#
-#  LZMA_INCLUDE_DIR    - where to find lzma.h, etc.
-#  LZMA_LIBRARIES      - List of libraries when using liblzma.
-#  LZMA_FOUND          - True if liblzma found.
-#  LZMADEC_INCLUDE_DIR - where to find lzmadec.h, etc.
-#  LZMADEC_LIBRARIES   - List of libraries when using liblzmadec.
-#  LZMADEC_FOUND       - True if liblzmadec found.
-
-IF (LZMA_INCLUDE_DIR)
-  # Already in cache, be silent
-  SET(LZMA_FIND_QUIETLY TRUE)
-ENDIF (LZMA_INCLUDE_DIR)
-
-FIND_PATH(LZMA_INCLUDE_DIR lzma.h)
-FIND_LIBRARY(LZMA_LIBRARY NAMES lzma liblzma)
-
-# handle the QUIETLY and REQUIRED arguments and set LZMA_FOUND to TRUE if 
-# all listed variables are TRUE
-INCLUDE(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(LZMA DEFAULT_MSG LZMA_LIBRARY LZMA_INCLUDE_DIR)
-
-IF(LZMA_FOUND)
-  SET( LZMA_LIBRARIES ${LZMA_LIBRARY} )
-ELSE(LZMA_FOUND)
-  SET( LZMA_LIBRARIES )
-
-  IF (LZMADEC_INCLUDE_DIR)
-    # Already in cache, be silent
-    SET(LZMADEC_FIND_QUIETLY TRUE)
-  ENDIF (LZMADEC_INCLUDE_DIR)
-
-  FIND_PATH(LZMADEC_INCLUDE_DIR lzmadec.h)
-  FIND_LIBRARY(LZMADEC_LIBRARY NAMES lzmadec )
-
-  # handle the QUIETLY and REQUIRED arguments and set LZMADEC_FOUND to TRUE if 
-  # all listed variables are TRUE
-  INCLUDE(FindPackageHandleStandardArgs)
-  FIND_PACKAGE_HANDLE_STANDARD_ARGS(LZMADEC DEFAULT_MSG LZMADEC_LIBRARY
-    LZMADEC_INCLUDE_DIR)
-
-  IF(LZMADEC_FOUND)
-    SET( LZMADEC_LIBRARIES ${LZMADEC_LIBRARY} )
-  ELSE(LZMADEC_FOUND)
-    SET( LZMADEC_LIBRARIES )
-  ENDIF(LZMADEC_FOUND)
-ENDIF(LZMA_FOUND)
index 008b04de0b5c69621ea72d556b95b5074644caac..d4e5aac5bd81e31eccf54311971799344a0bb807 100644 (file)
@@ -326,14 +326,6 @@ if test "x$with_bz2lib" != "xno"; then
   esac
 fi
 
-AC_ARG_WITH([lzmadec],
-  AS_HELP_STRING([--without-lzmadec], [Don't build support for lzma through lzmadec]))
-
-if test "x$with_lzmadec" != "xno"; then
-  AC_CHECK_HEADERS([lzmadec.h])
-  AC_CHECK_LIB(lzmadec,lzmadec_decode)
-fi
-
 AC_ARG_WITH([iconv],
   AS_HELP_STRING([--without-iconv], [Don't try to link against iconv]))
 
index decc87f2a361e7e8b046da1b35f9ca9d586b6f41..2d899d1e75c64007ed1d08143b84c58fb8fca732 100644 (file)
 /* Define to 1 if you have the `lzma' library (-llzma). */
 /* #undef HAVE_LIBLZMA */
 
-/* Define to 1 if you have the `lzmadec' library (-llzmadec). */
-/* #undef HAVE_LIBLZMADEC */
-
 /* Define to 1 if you have the `lzo2' library (-llzo2). */
 /* #undef HAVE_LIBLZO2 */
 
index 4e0a95feeb0f0a313392f99c2794e71c670e41bd..023c349d81f0af258330c05f04742fb0d9431b94 100644 (file)
@@ -43,8 +43,6 @@ __FBSDID("$FreeBSD$");
 #endif
 #if HAVE_LZMA_H
 #include <lzma.h>
-#elif HAVE_LZMADEC_H
-#include <lzmadec.h>
 #endif
 
 #include "archive.h"
@@ -82,19 +80,6 @@ static ssize_t       xz_filter_read(struct archive_read_filter *, const void **);
 static int     xz_filter_close(struct archive_read_filter *);
 static int     xz_lzma_bidder_init(struct archive_read_filter *);
 
-#elif HAVE_LZMADEC_H && HAVE_LIBLZMADEC
-
-struct private_data {
-       lzmadec_stream   stream;
-       unsigned char   *out_block;
-       size_t           out_block_size;
-       int64_t          total_out;
-       char             eof; /* True = found end of compressed data. */
-};
-
-/* Lzma-only filter */
-static ssize_t lzma_filter_read(struct archive_read_filter *, const void **);
-static int     lzma_filter_close(struct archive_read_filter *);
 #endif
 
 /*
@@ -178,8 +163,6 @@ archive_read_support_filter_lzma(struct archive *_a)
        bidder->free = NULL;
 #if HAVE_LZMA_H && HAVE_LIBLZMA
        return (ARCHIVE_OK);
-#elif HAVE_LZMADEC_H && HAVE_LIBLZMADEC
-       return (ARCHIVE_OK);
 #else
        archive_set_error(_a, ARCHIVE_ERRNO_MISC,
            "Using external lzma program for lzma decompression");
@@ -763,175 +746,6 @@ xz_filter_close(struct archive_read_filter *self)
 
 #else
 
-#if HAVE_LZMADEC_H && HAVE_LIBLZMADEC
-
-/*
- * If we have the older liblzmadec library, then we can handle
- * LZMA streams but not XZ streams.
- */
-
-/*
- * Setup the callbacks.
- */
-static int
-lzma_bidder_init(struct archive_read_filter *self)
-{
-       static const size_t out_block_size = 64 * 1024;
-       void *out_block;
-       struct private_data *state;
-       ssize_t ret, avail_in;
-
-       self->code = ARCHIVE_FILTER_LZMA;
-       self->name = "lzma";
-
-       state = (struct private_data *)calloc(sizeof(*state), 1);
-       out_block = (unsigned char *)malloc(out_block_size);
-       if (state == NULL || out_block == NULL) {
-               archive_set_error(&self->archive->archive, ENOMEM,
-                   "Can't allocate data for lzma decompression");
-               free(out_block);
-               free(state);
-               return (ARCHIVE_FATAL);
-       }
-
-       self->data = state;
-       state->out_block_size = out_block_size;
-       state->out_block = out_block;
-       self->read = lzma_filter_read;
-       self->skip = NULL; /* not supported */
-       self->close = lzma_filter_close;
-
-       /* Prime the lzma library with 18 bytes of input. */
-       state->stream.next_in = (unsigned char *)(uintptr_t)
-           __archive_read_filter_ahead(self->upstream, 18, &avail_in);
-       if (state->stream.next_in == NULL)
-               return (ARCHIVE_FATAL);
-       state->stream.avail_in = avail_in;
-       state->stream.next_out = state->out_block;
-       state->stream.avail_out = state->out_block_size;
-
-       /* Initialize compression library. */
-       ret = lzmadec_init(&(state->stream));
-       __archive_read_filter_consume(self->upstream,
-           avail_in - state->stream.avail_in);
-       if (ret == LZMADEC_OK)
-               return (ARCHIVE_OK);
-
-       /* Library setup failed: Clean up. */
-       archive_set_error(&self->archive->archive, ARCHIVE_ERRNO_MISC,
-           "Internal error initializing lzma library");
-
-       /* Override the error message if we know what really went wrong. */
-       switch (ret) {
-       case LZMADEC_HEADER_ERROR:
-               archive_set_error(&self->archive->archive,
-                   ARCHIVE_ERRNO_MISC,
-                   "Internal error initializing compression library: "
-                   "invalid header");
-               break;
-       case LZMADEC_MEM_ERROR:
-               archive_set_error(&self->archive->archive, ENOMEM,
-                   "Internal error initializing compression library: "
-                   "out of memory");
-               break;
-       }
-
-       free(state->out_block);
-       free(state);
-       self->data = NULL;
-       return (ARCHIVE_FATAL);
-}
-
-/*
- * Return the next block of decompressed data.
- */
-static ssize_t
-lzma_filter_read(struct archive_read_filter *self, const void **p)
-{
-       struct private_data *state;
-       size_t decompressed;
-       ssize_t avail_in, ret;
-
-       state = (struct private_data *)self->data;
-
-       /* Empty our output buffer. */
-       state->stream.next_out = state->out_block;
-       state->stream.avail_out = state->out_block_size;
-
-       /* Try to fill the output buffer. */
-       while (state->stream.avail_out > 0 && !state->eof) {
-               state->stream.next_in = (unsigned char *)(uintptr_t)
-                   __archive_read_filter_ahead(self->upstream, 1, &avail_in);
-               if (state->stream.next_in == NULL && avail_in < 0) {
-                       archive_set_error(&self->archive->archive,
-                           ARCHIVE_ERRNO_MISC,
-                           "truncated lzma input");
-                       return (ARCHIVE_FATAL);
-               }
-               state->stream.avail_in = avail_in;
-
-               /* Decompress as much as we can in one pass. */
-               ret = lzmadec_decode(&(state->stream), avail_in == 0);
-               switch (ret) {
-               case LZMADEC_STREAM_END: /* Found end of stream. */
-                       state->eof = 1;
-                       /* FALL THROUGH */
-               case LZMADEC_OK: /* Decompressor made some progress. */
-                       __archive_read_filter_consume(self->upstream,
-                           avail_in - state->stream.avail_in);
-                       break;
-               case LZMADEC_BUF_ERROR: /* Insufficient input data? */
-                       archive_set_error(&self->archive->archive,
-                           ARCHIVE_ERRNO_MISC,
-                           "Insufficient compressed data");
-                       return (ARCHIVE_FATAL);
-               default:
-                       /* Return an error. */
-                       archive_set_error(&self->archive->archive,
-                           ARCHIVE_ERRNO_MISC,
-                           "Lzma decompression failed");
-                       return (ARCHIVE_FATAL);
-               }
-       }
-
-       decompressed = state->stream.next_out - state->out_block;
-       state->total_out += decompressed;
-       if (decompressed == 0)
-               *p = NULL;
-       else
-               *p = state->out_block;
-       return (decompressed);
-}
-
-/*
- * Clean up the decompressor.
- */
-static int
-lzma_filter_close(struct archive_read_filter *self)
-{
-       struct private_data *state;
-       int ret;
-
-       state = (struct private_data *)self->data;
-       ret = ARCHIVE_OK;
-       switch (lzmadec_end(&(state->stream))) {
-       case LZMADEC_OK:
-               break;
-       default:
-               archive_set_error(&(self->archive->archive),
-                   ARCHIVE_ERRNO_MISC,
-                   "Failed to clean up %s compressor",
-                   self->archive->archive.compression_name);
-               ret = ARCHIVE_FATAL;
-       }
-
-       free(state->out_block);
-       free(state);
-       return (ret);
-}
-
-#else
-
 /*
  *
  * If we have no suitable library on this system, we can't actually do
@@ -953,9 +767,6 @@ lzma_bidder_init(struct archive_read_filter *self)
        return (r);
 }
 
-#endif /* HAVE_LZMADEC_H */
-
-
 static int
 xz_bidder_init(struct archive_read_filter *self)
 {
@@ -984,5 +795,4 @@ lzip_bidder_init(struct archive_read_filter *self)
        return (r);
 }
 
-
 #endif /* HAVE_LZMA_H */
index ab887505ce17f365dcbfeb5e8a98199bf252556d..47ed064bc6273ce26883e6bf763c3e5c10af2a50 100644 (file)
@@ -43,8 +43,6 @@ __FBSDID("$FreeBSD$");
 #endif
 #if HAVE_LZMA_H
 #include <lzma.h>
-#elif HAVE_LZMADEC_H
-#include <lzmadec.h>
 #endif
 #ifdef HAVE_ZLIB_H
 #include <zlib.h>
@@ -334,9 +332,6 @@ struct xar {
 #if HAVE_LZMA_H && HAVE_LIBLZMA
        lzma_stream              lzstream;
        int                      lzstream_valid;
-#elif HAVE_LZMADEC_H && HAVE_LIBLZMADEC
-       lzmadec_stream           lzstream;
-       int                      lzstream_valid;
 #endif
        /*
         * For Checksum data.
@@ -1526,34 +1521,6 @@ decompression_init(struct archive_read *a, enum enctype encoding)
                xar->lzstream.total_in = 0;
                xar->lzstream.total_out = 0;
                break;
-#elif defined(HAVE_LZMADEC_H) && defined(HAVE_LIBLZMADEC)
-       case LZMA:
-               if (xar->lzstream_valid)
-                       lzmadec_end(&(xar->lzstream));
-               r = lzmadec_init(&(xar->lzstream));
-               if (r != LZMADEC_OK) {
-                       switch (r) {
-                       case LZMADEC_HEADER_ERROR:
-                               archive_set_error(&a->archive,
-                                   ARCHIVE_ERRNO_MISC,
-                                   "Internal error initializing "
-                                   "compression library: "
-                                   "invalid header");
-                               break;
-                       case LZMADEC_MEM_ERROR:
-                               archive_set_error(&a->archive,
-                                   ENOMEM,
-                                   "Internal error initializing "
-                                   "compression library: "
-                                   "out of memory");
-                               break;
-                       }
-                       return (ARCHIVE_FATAL);
-               }
-               xar->lzstream_valid = 1;
-               xar->lzstream.total_in = 0;
-               xar->lzstream.total_out = 0;
-               break;
 #endif
        /*
         * Unsupported compression.
@@ -1563,9 +1530,7 @@ decompression_init(struct archive_read *a, enum enctype encoding)
        case BZIP2:
 #endif
 #if !defined(HAVE_LZMA_H) || !defined(HAVE_LIBLZMA)
-#if !defined(HAVE_LZMADEC_H) || !defined(HAVE_LIBLZMADEC)
        case LZMA:
-#endif
        case XZ:
 #endif
                switch (xar->entry_encoding) {
@@ -1685,46 +1650,12 @@ decompress(struct archive_read *a, const void **buff, size_t *outbytes,
                *used = avail_in - xar->lzstream.avail_in;
                *outbytes = avail_out - xar->lzstream.avail_out;
                break;
-#elif defined(HAVE_LZMADEC_H) && defined(HAVE_LIBLZMADEC)
-       case LZMA:
-               xar->lzstream.next_in = (unsigned char *)(uintptr_t)b;
-               xar->lzstream.avail_in = avail_in;
-               xar->lzstream.next_out = (unsigned char *)outbuff;
-               xar->lzstream.avail_out = avail_out;
-               r = lzmadec_decode(&(xar->lzstream), 0);
-               switch (r) {
-               case LZMADEC_STREAM_END: /* Found end of stream. */
-                       switch (lzmadec_end(&(xar->lzstream))) {
-                       case LZMADEC_OK:
-                               break;
-                       default:
-                               archive_set_error(&(a->archive),
-                                   ARCHIVE_ERRNO_MISC,
-                                   "Failed to clean up lzmadec decompressor");
-                               return (ARCHIVE_FATAL);
-                       }
-                       xar->lzstream_valid = 0;
-                       /* FALLTHROUGH */
-               case LZMADEC_OK: /* Decompressor made some progress. */
-                       break;
-               default:
-                       archive_set_error(&(a->archive),
-                           ARCHIVE_ERRNO_MISC,
-                           "lzmadec decompression failed(%d)",
-                           r);
-                       return (ARCHIVE_FATAL);
-               }
-               *used = avail_in - xar->lzstream.avail_in;
-               *outbytes = avail_out - xar->lzstream.avail_out;
-               break;
 #endif
 #if !defined(HAVE_BZLIB_H) || !defined(BZ_CONFIG_ERROR)
        case BZIP2:
 #endif
 #if !defined(HAVE_LZMA_H) || !defined(HAVE_LIBLZMA)
-#if !defined(HAVE_LZMADEC_H) || !defined(HAVE_LIBLZMADEC)
        case LZMA:
-#endif
        case XZ:
 #endif
        case NONE: