diff options
Diffstat (limited to 'libarchive/archive_virtual.c')
-rw-r--r-- | libarchive/archive_virtual.c | 59 |
1 files changed, 56 insertions, 3 deletions
diff --git a/libarchive/archive_virtual.c b/libarchive/archive_virtual.c index 8368862..83089f2 100644 --- a/libarchive/archive_virtual.c +++ b/libarchive/archive_virtual.c @@ -31,6 +31,30 @@ __FBSDID("$FreeBSD: head/lib/libarchive/archive_virtual.c 201098 2009-12-28 02:5 #include "archive_private.h" int +archive_filter_code(struct archive *a, int n) +{ + return ((a->vtable->archive_filter_code)(a, n)); +} + +int +archive_filter_count(struct archive *a) +{ + return ((a->vtable->archive_filter_count)(a)); +} + +const char * +archive_filter_name(struct archive *a, int n) +{ + return ((a->vtable->archive_filter_name)(a, n)); +} + +int64_t +archive_filter_bytes(struct archive *a, int n) +{ + return ((a->vtable->archive_filter_bytes)(a, n)); +} + +int archive_write_close(struct archive *a) { return ((a->vtable->archive_close)(a)); @@ -45,6 +69,8 @@ archive_read_close(struct archive *a) int archive_write_free(struct archive *a) { + if (a == NULL) + return (ARCHIVE_OK); return ((a->vtable->archive_free)(a)); } @@ -53,13 +79,15 @@ archive_write_free(struct archive *a) int archive_write_finish(struct archive *a) { - return ((a->vtable->archive_free)(a)); + return archive_write_free(a); } #endif int archive_read_free(struct archive *a) { + if (a == NULL) + return (ARCHIVE_OK); return ((a->vtable->archive_free)(a)); } @@ -68,7 +96,7 @@ archive_read_free(struct archive *a) int archive_read_finish(struct archive *a) { - return ((a->vtable->archive_free)(a)); + return archive_read_free(a); } #endif @@ -92,7 +120,32 @@ archive_write_data(struct archive *a, const void *buff, size_t s) } ssize_t -archive_write_data_block(struct archive *a, const void *buff, size_t s, off_t o) +archive_write_data_block(struct archive *a, const void *buff, size_t s, int64_t o) { + if (a->vtable->archive_write_data_block == NULL) { + archive_set_error(a, ARCHIVE_ERRNO_MISC, + "archive_write_data_block not supported"); + a->state = ARCHIVE_STATE_FATAL; + return (ARCHIVE_FATAL); + } return ((a->vtable->archive_write_data_block)(a, buff, s, o)); } + +int +archive_read_next_header(struct archive *a, struct archive_entry **entry) +{ + return ((a->vtable->archive_read_next_header)(a, entry)); +} + +int +archive_read_next_header2(struct archive *a, struct archive_entry *entry) +{ + return ((a->vtable->archive_read_next_header2)(a, entry)); +} + +int +archive_read_data_block(struct archive *a, + const void **buff, size_t *s, int64_t *o) +{ + return ((a->vtable->archive_read_data_block)(a, buff, s, o)); +} |