1368207Smm/*-
2368207Smm * Copyright (c) 2020 Martin Matuska
3368207Smm * All rights reserved.
4368207Smm *
5368207Smm * Redistribution and use in source and binary forms, with or without
6368207Smm * modification, are permitted provided that the following conditions
7368207Smm * are met:
8368207Smm * 1. Redistributions of source code must retain the above copyright
9368207Smm *    notice, this list of conditions and the following disclaimer.
10368207Smm * 2. Redistributions in binary form must reproduce the above copyright
11368207Smm *    notice, this list of conditions and the following disclaimer in the
12368207Smm *    documentation and/or other materials provided with the distribution.
13368207Smm *
14368207Smm * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
15368207Smm * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
16368207Smm * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
17368207Smm * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
18368207Smm * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
19368207Smm * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
20368207Smm * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
21368207Smm * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22368207Smm * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23368207Smm * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24368207Smm */
25368207Smm
26368207Smm#include "archive_platform.h"
27368207Smm__FBSDID("$FreeBSD: stable/10/contrib/libarchive/libarchive/archive_read_support_filter_by_code.c 368708 2020-12-16 22:25:40Z mm $");
28368207Smm
29368207Smm#include "archive.h"
30368207Smm#include "archive_private.h"
31368207Smm
32368207Smmint
33368207Smmarchive_read_support_filter_by_code(struct archive *a, int filter_code)
34368207Smm{
35368207Smm	archive_check_magic(a, ARCHIVE_READ_MAGIC,
36368207Smm	    ARCHIVE_STATE_NEW, "archive_read_support_filter_by_code");
37368207Smm
38368207Smm	switch (filter_code) {
39368207Smm	case ARCHIVE_FILTER_NONE:
40368207Smm		return archive_read_support_filter_none(a);
41368207Smm		break;
42368207Smm	case ARCHIVE_FILTER_GZIP:
43368207Smm		return archive_read_support_filter_gzip(a);
44368207Smm		break;
45368207Smm	case ARCHIVE_FILTER_BZIP2:
46368207Smm		return archive_read_support_filter_bzip2(a);
47368207Smm		break;
48368207Smm	case ARCHIVE_FILTER_COMPRESS:
49368207Smm		return archive_read_support_filter_compress(a);
50368207Smm		break;
51368207Smm	case ARCHIVE_FILTER_LZMA:
52368207Smm		return archive_read_support_filter_lzma(a);
53368207Smm		break;
54368207Smm	case ARCHIVE_FILTER_XZ:
55368207Smm		return archive_read_support_filter_xz(a);
56368207Smm		break;
57368207Smm	case ARCHIVE_FILTER_UU:
58368207Smm		return archive_read_support_filter_uu(a);
59368207Smm		break;
60368207Smm	case ARCHIVE_FILTER_RPM:
61368207Smm		return archive_read_support_filter_rpm(a);
62368207Smm		break;
63368207Smm	case ARCHIVE_FILTER_LZIP:
64368207Smm		return archive_read_support_filter_lzip(a);
65368207Smm		break;
66368207Smm	case ARCHIVE_FILTER_LRZIP:
67368207Smm		return archive_read_support_filter_lrzip(a);
68368207Smm		break;
69368207Smm	case ARCHIVE_FILTER_LZOP:
70368207Smm		return archive_read_support_filter_lzop(a);
71368207Smm		break;
72368207Smm	case ARCHIVE_FILTER_GRZIP:
73368207Smm		return archive_read_support_filter_grzip(a);
74368207Smm		break;
75368207Smm	case ARCHIVE_FILTER_LZ4:
76368207Smm		return archive_read_support_filter_lz4(a);
77368207Smm		break;
78368207Smm	case ARCHIVE_FILTER_ZSTD:
79368207Smm		return archive_read_support_filter_zstd(a);
80368207Smm		break;
81368207Smm	}
82368207Smm	return (ARCHIVE_FATAL);
83368207Smm}
84