diff options
Diffstat (limited to 'lib/libalpm/libarchive-compat.h')
-rw-r--r-- | lib/libalpm/libarchive-compat.h | 60 |
1 files changed, 50 insertions, 10 deletions
diff --git a/lib/libalpm/libarchive-compat.h b/lib/libalpm/libarchive-compat.h index a1b379e2..1e2e1e82 100644 --- a/lib/libalpm/libarchive-compat.h +++ b/lib/libalpm/libarchive-compat.h @@ -1,3 +1,6 @@ +#ifndef _LIBARCHIVE_COMPAT_H +#define _LIBARCHIVE_COMPAT_H + /* * libarchive-compat.h * @@ -16,18 +19,55 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#ifndef _LIBARCHIVE_H -#define _LIBARCHIVE_H -#include <archive.h> +#include <stdint.h> + +static inline int _alpm_archive_read_free(struct archive *archive) +{ +#if ARCHIVE_VERSION_NUMBER >= 3000000 + return archive_read_free(archive); +#else + return archive_read_finish(archive); +#endif +} + +static inline int64_t _alpm_archive_compressed_ftell(struct archive *archive) +{ +#if ARCHIVE_VERSION_NUMBER >= 3000000 + return archive_filter_bytes(archive, -1); +#else + return archive_position_compressed(archive); +#endif +} + +static inline int _alpm_archive_read_open_file(struct archive *archive, + const char *filename, size_t block_size) +{ +#if ARCHIVE_VERSION_NUMBER >= 3000000 + return archive_read_open_filename(archive, filename, block_size); +#else + return archive_read_open_file(archive, filename, block_size); +#endif +} + +static inline int _alpm_archive_filter_code(struct archive *archive) +{ +#if ARCHIVE_VERSION_NUMBER >= 3000000 + return archive_filter_code(archive, 0); +#else + return archive_compression(archive); +#endif +} -int _alpm_archive_read_free(struct archive *archive); -int64_t _alpm_archive_compressed_ftell(struct archive *archive); -int _alpm_archive_read_open_file(struct archive *archive, - const char *filename, size_t block_size); -int _alpm_archive_filter_code(struct archive *archive); -int _alpm_archive_read_support_filter_all(struct archive *archive); +static inline int _alpm_archive_read_support_filter_all(struct archive *archive) +{ +#if ARCHIVE_VERSION_NUMBER >= 3000000 + return archive_read_support_filter_all(archive); +#else + return archive_read_support_compression_all(archive); +#endif +} -#endif /* _LIBARCHIVE_H */ +#endif /* _LIBARCHIVE_COMPAT_H */ /* vim: set ts=2 sw=2 noet: */ |