1228753Smm/*- 2231200Smm * Copyright (c) 2003-2011 Tim Kientzle 3228753Smm * All rights reserved. 4228753Smm * 5228753Smm * Redistribution and use in source and binary forms, with or without 6228753Smm * modification, are permitted provided that the following conditions 7228753Smm * are met: 8228753Smm * 1. Redistributions of source code must retain the above copyright 9228753Smm * notice, this list of conditions and the following disclaimer. 10228753Smm * 2. Redistributions in binary form must reproduce the above copyright 11228753Smm * notice, this list of conditions and the following disclaimer in the 12228753Smm * documentation and/or other materials provided with the distribution. 13228753Smm * 14228753Smm * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR 15228753Smm * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 16228753Smm * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 17228753Smm * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, 18228753Smm * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 19228753Smm * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 20228753Smm * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 21228753Smm * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22228753Smm * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 23228753Smm * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24228753Smm */ 25228753Smm 26228753Smm#include "archive_platform.h" 27231200Smm__FBSDID("$FreeBSD$"); 28228753Smm 29228753Smm#include "archive.h" 30231200Smm#include "archive_private.h" 31228753Smm 32231200Smm#if ARCHIVE_VERSION_NUMBER < 4000000 33231200Smm/* Deprecated; remove in libarchive 4.0 */ 34228753Smmint 35228753Smmarchive_read_support_compression_all(struct archive *a) 36228753Smm{ 37231200Smm return archive_read_support_filter_all(a); 38231200Smm} 39231200Smm#endif 40231200Smm 41231200Smmint 42231200Smmarchive_read_support_filter_all(struct archive *a) 43231200Smm{ 44231200Smm archive_check_magic(a, ARCHIVE_READ_MAGIC, 45231200Smm ARCHIVE_STATE_NEW, "archive_read_support_filter_all"); 46231200Smm 47228753Smm /* Bzip falls back to "bunzip2" command-line */ 48231200Smm archive_read_support_filter_bzip2(a); 49228753Smm /* The decompress code doesn't use an outside library. */ 50231200Smm archive_read_support_filter_compress(a); 51248616Smm /* Gzip decompress falls back to "gzip -d" command-line. */ 52231200Smm archive_read_support_filter_gzip(a); 53231200Smm /* Lzip falls back to "unlzip" command-line program. */ 54231200Smm archive_read_support_filter_lzip(a); 55228753Smm /* The LZMA file format has a very weak signature, so it 56228753Smm * may not be feasible to keep this here, but we'll try. 57228753Smm * This will come back out if there are problems. */ 58228753Smm /* Lzma falls back to "unlzma" command-line program. */ 59231200Smm archive_read_support_filter_lzma(a); 60228753Smm /* Xz falls back to "unxz" command-line program. */ 61231200Smm archive_read_support_filter_xz(a); 62228753Smm /* The decode code doesn't use an outside library. */ 63231200Smm archive_read_support_filter_uu(a); 64228753Smm /* The decode code doesn't use an outside library. */ 65231200Smm archive_read_support_filter_rpm(a); 66248616Smm /* The decode code always uses "lrzip -q -d" command-line. */ 67248616Smm archive_read_support_filter_lrzip(a); 68248616Smm /* Lzop decompress falls back to "lzop -d" command-line. */ 69248616Smm archive_read_support_filter_lzop(a); 70248616Smm /* The decode code always uses "grzip -d" command-line. */ 71248616Smm archive_read_support_filter_grzip(a); 72299529Smm /* Lz4 falls back to "lz4 -d" command-line program. */ 73299529Smm archive_read_support_filter_lz4(a); 74324417Smm /* Zstd falls back to "zstd -d" command-line program. */ 75324417Smm archive_read_support_filter_zstd(a); 76228753Smm 77228753Smm /* Note: We always return ARCHIVE_OK here, even if some of the 78228753Smm * above return ARCHIVE_WARN. The intent here is to enable 79228753Smm * "as much as possible." Clients who need specific 80228753Smm * compression should enable those individually so they can 81228753Smm * verify the level of support. */ 82228753Smm /* Clear any warning messages set by the above functions. */ 83228753Smm archive_clear_error(a); 84228753Smm return (ARCHIVE_OK); 85228753Smm} 86