From 5dbc655ca28ffa7a53d6d3d7520023eeed5e2c43 Mon Sep 17 00:00:00 2001 From: Tomas Bzatek Date: Sun, 15 Nov 2009 19:42:12 +0100 Subject: libarchive: enable lzma and xz compressions by default Also reflect libarchive configured ext. libs for our statically linked module. --- libarchive/libarchive.c | 60 +++++++++++++++++++++++++++++++++---------------- 1 file changed, 41 insertions(+), 19 deletions(-) (limited to 'libarchive/libarchive.c') diff --git a/libarchive/libarchive.c b/libarchive/libarchive.c index eadda05..86823cb 100644 --- a/libarchive/libarchive.c +++ b/libarchive/libarchive.c @@ -1,5 +1,5 @@ /* libarchive plugin for Tux Commander - * version 0.1.5, designed for libarchive 2.5.5 + * version 0.1.6, designed for libarchive 2.7.1 * Copyright (C) 2008 Tomas Bzatek * Check for updates on tuxcmd.sourceforge.net * @@ -45,10 +45,14 @@ #include #include +#ifndef MODULE_SHARED +# include +#endif -#define VERSION "0.1.5" -#define BUILD_DATE "2009-10-25" + +#define MODULE_VERSION "0.1.6" +#define MODULE_BUILD_DATE "2009-11-15" #define DEFAULT_BLOCK_SIZE 65536 @@ -138,10 +142,16 @@ struct TVFSInfo * VFSGetInfo() { struct TVFSInfo *module_info = g_malloc0 (sizeof (struct TVFSInfo)); +#ifdef MODULE_SHARED + const char *shared_module = ", dynamically linked"; +#else + const char *shared_module = ", statically linked"; +#endif module_info->ID = g_strdup ("libarchive_plugin"); module_info->Name = g_strdup ("libarchive plugin"); - module_info->About = g_strdup_printf ("version %s, build date: %s\nusing %s\n", VERSION, BUILD_DATE, ARCHIVE_LIBRARY_VERSION); + module_info->About = g_strdup_printf ("version %s, build date: %s\nusing %s%s\n", + MODULE_VERSION, MODULE_BUILD_DATE, ARCHIVE_LIBRARY_VERSION, shared_module); module_info->Copyright = g_strdup ("Plugin Copyright (C) 2008-2009 Tomáš Bžatek\nlibarchive sources Copyright (c) 2003-2007 Tim Kientzle"); return module_info; @@ -150,7 +160,33 @@ VFSGetInfo() char * VFSGetArchiveExts () { - return g_strdup ("tar;tar.gz;tar.bz2;tgz;tbz2;cpio;iso;a;deb"); +#ifndef MODULE_SHARED + #ifdef HAVE_BZLIB_H + #define FORMAT_BZLIB "tar.bz2;tbz2;" + #else + #define FORMAT_BZLIB + #endif + + #ifdef HAVE_ZLIB_H + #define FORMAT_ZLIB "tar.gz;tgz;deb;" + #else + #define FORMAT_ZLIB + #endif + + #if HAVE_LZMA_H && HAVE_LIBLZMA + #define FORMAT_LZMA "tar.lzma;tar.xz;" + #elif HAVE_LZMADEC_H && HAVE_LIBLZMADEC + #define FORMAT_LZMA "tar.lzma;" + #else + #define FORMAT_LZMA + #endif + + return g_strdup ("tar;cpio;iso;a;" FORMAT_ZLIB FORMAT_BZLIB FORMAT_LZMA); +#else + /* Dynamic linking; we're unable to determine supported formats, + let's suppose distribution vendors always compile full set */ + return g_strdup ("tar;tar.gz;tar.bz2;tgz;tbz2;cpio;iso;a;deb;tar.lzma;tar.xz"); +#endif } @@ -168,20 +204,6 @@ static TVFSResult libarchive_open(struct archive **a, const char *filename, size archive_read_support_compression_all(*a); archive_read_support_format_all(*a); -/* - archive_read_support_compression_bzip2(*a); - archive_read_support_compression_gzip(*a); - archive_read_support_compression_compress(*a); - archive_read_support_compression_none(*a); - archive_read_support_format_tar(*a); - archive_read_support_format_cpio(*a); - archive_read_support_format_ar(*a); - archive_read_support_format_empty(*a); - archive_read_support_format_gnutar(*a); - archive_read_support_format_iso9660(*a); - archive_read_support_format_cpio(*a); -*/ - r = archive_read_open_file(*a, filename, block_size); if (r) { fprintf(stderr, "(EE) libarchive_open: error occured when opening archive: %s\n", archive_error_string(*a)); -- cgit v1.2.3