Giter VIP home page Giter VIP logo

unarr-deb's Introduction

(lib)unarr

(lib)unarr is a decompression library for RAR, TAR, ZIP and 7z* archives.

It was forked from unarr, which originated as a port of the RAR extraction features from The Unarchiver project required for extracting images from comic book archives. Zeniko wrote unarr as an alternative to libarchive which didn't have support for parsing filters or solid compression at the time.

While (lib)unarr was started with the intent of providing unarr with a proper cmake based build system suitable for packaging and cross-platform development, it's focus has now been extended to provide code maintenance and to continue the development of unarr, which no longer is maintained.

Getting started

Building from source

Dependencies

(lib)unarr can take advantage of the following libraries if they are present:

  • bzip2
  • xz / libLZMA
  • zlib

More information on what library is used for which purpose can be found in the description for embedded builds.

Cmake

mkdir build
cd build
cmake ..
make

... as a static library

cmake .. -DBUILD_SHARED_LIBS=OFF

Install

make install

Embedded build

Make sure your compiler is C99 compatible, grab the source code, copy it into your project and adjust your build system accordingly.

You can define the following symbols to take advantage of third party libraries:

Symbol Required header Required for (format/method)
HAVE_ZLIB zlib.h faster CRC-32 and Deflate
HAVE_BZIP2 bzlib.h ZIP / Bzip2
HAVE_LIBLZMA lzma.h ZIP / LZMA, XZ(LZMA2)
HAVE_7Z 7z.h 7Z* / LZMA, LZMA2, BCJ
_7ZIP_PPMD_SUPPORT 7Z* / PPMd

Make sure the required headers are present in the include path.

Usage

Examples

Check unarr.h and unarr-test to get a general feel for the api and usage.

Limitations

Unarr was written for comic book archives, so it currently doesn't support:

  • password protected archives
  • self extracting archives
  • split archives

7z support

7z support is currently broken. This is due to two problems:

  1. The version of the LZMA SDK used in the 7z extraction code is outdated and no longer compatible with the LZMA code used in the other formats
  2. The ANSI-C based 7z extraction code provided by the LZMA SDK has a known performance issue that limits it's usefullness for large files with solid compression (see zeniko/unarr#4).

Fixing these problems requires a partial rewrite of the code involved.

unarr-deb's People

Contributors

selmf avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.