diff options
| author | Tomas Bzatek <tbzatek@redhat.com> | 2010-02-05 12:21:50 +0100 |
|---|---|---|
| committer | Tomas Bzatek <tbzatek@redhat.com> | 2010-02-05 12:21:50 +0100 |
| commit | 48b5f70d6db469a171d8581791247508df74e0de (patch) | |
| tree | dd341e3cda5fdabd12c343a33915308c6d566806 | |
| parent | baea7d877d3cf69679a39e8512a120658a478073 (diff) | |
| download | tuxcmd-modules-48b5f70d6db469a171d8581791247508df74e0de.tar.xz | |
libarchive: enable rpm, uudecode and xar archives
Requires libarchive 2.8.0
| -rw-r--r-- | libarchive/libarchive.c | 62 |
1 files changed, 51 insertions, 11 deletions
diff --git a/libarchive/libarchive.c b/libarchive/libarchive.c index cadd6a0..dffcaf8 100644 --- a/libarchive/libarchive.c +++ b/libarchive/libarchive.c @@ -1,6 +1,6 @@ /* libarchive plugin for Tux Commander - * version 0.2.2, designed for libarchive v2.5.5 - v2.7.1 (recommended) - * Copyright (C) 2008-2009 Tomas Bzatek <tbzatek@users.sourceforge.net> + * version 0.2.3, designed for libarchive v2.5.5 - v2.8.0 (recommended) + * Copyright (C) 2008-2010 Tomas Bzatek <tbzatek@users.sourceforge.net> * Check for updates on tuxcmd.sourceforge.net * * Uses libarchive library @@ -42,7 +42,12 @@ #include <archive_entry.h> #ifndef MODULE_SHARED -# include <config.h> + #include <config.h> + #if ARCHIVE_VERSION_NUMBER >= 2008000 + #define __LIBARCHIVE_BUILD + #include <archive_hash.h> + #undef __LIBARCHIVE_BUILD + #endif #endif #if ARCHIVE_VERSION_NUMBER >= 3000000 @@ -53,8 +58,8 @@ #endif -#define MODULE_VERSION "0.2.2" -#define MODULE_BUILD_DATE "2009-12-12" +#define MODULE_VERSION "0.2.3" +#define MODULE_BUILD_DATE "2010-02-05" #define DEFAULT_BLOCK_SIZE 65536 @@ -161,7 +166,7 @@ VFSGetInfo() module_info->Name = g_strdup ("libarchive plugin"); 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"); + module_info->Copyright = g_strdup ("Plugin Copyright (C) 2008-2010 Tomáš Bžatek\nlibarchive sources Copyright (c) 2003-2007 Tim Kientzle"); return module_info; } @@ -179,10 +184,13 @@ VFSGetArchiveExts () { /* Make sure these end with a semicolon */ #define BASIC_FORMATS "tar;cpio;iso;a;shar;" -#define BZIP_FORMATS "tar.bz2;tbz2;" -#define ZLIB_FORMATS "tar.gz;tgz;tar.z;deb;" -#define XZ_FORMATS "tar.lzma;tar.xz;" -#define LZMA_FORMATS "tar.lzma;" +#define BZIP_FORMATS "tar.bz2;tbz2;tbz;" +#define ZLIB_FORMATS "tar.gz;tgz;tar.z;iso.z;cpio.gz;deb;" +#define XZ_FORMATS "tar.lzma;tlz;tar.xz;txz;" +#define LZMA_FORMATS "tar.lzma;tlz;" +#define RPM_FORMATS "rpm;" +#define UU_FORMATS "uu;" +#define XAR_FORMATS "xar;" char *formats; @@ -207,7 +215,22 @@ char *formats; #define FORMAT_LZMA #endif - formats = g_strdup (BASIC_FORMATS FORMAT_ZLIB FORMAT_BZLIB FORMAT_LZMA); + #if ARCHIVE_VERSION_NUMBER >= 2008000 + #define FORMAT_RPM RPM_FORMATS + #define FORMAT_UU UU_FORMATS + #else + #define FORMAT_RPM + #define FORMAT_UU + #endif + + #if (defined(HAVE_LIBXML_XMLREADER_H) || defined(HAVE_BSDXML_H) || defined(HAVE_EXPAT_H)) && \ + defined(HAVE_ZLIB_H) && defined(ARCHIVE_HAS_MD5) && defined(ARCHIVE_HAS_SHA1) + #define FORMAT_XAR XAR_FORMATS + #else + #define FORMAT_XAR + #endif + + formats = g_strdup (BASIC_FORMATS FORMAT_ZLIB FORMAT_BZLIB FORMAT_LZMA FORMAT_RPM FORMAT_UU FORMAT_XAR); #else struct archive *archive; @@ -241,6 +264,23 @@ char *formats; formats = s; } #endif +#if ARCHIVE_VERSION_NUMBER >= 2008000 + if (archive_read_support_compression_rpm (archive) == ARCHIVE_OK) { + s = g_strconcat (formats, RPM_FORMATS, NULL); + g_free (formats); + formats = s; + } + if (archive_read_support_compression_uu (archive) == ARCHIVE_OK) { + s = g_strconcat (formats, UU_FORMATS, NULL); + g_free (formats); + formats = s; + } + if (archive_read_support_format_xar (archive) == ARCHIVE_OK) { + s = g_strconcat (formats, XAR_FORMATS, NULL); + g_free (formats); + formats = s; + } +#endif archive_read_finish (archive); #endif |
