static int archive_read_format_zip_read_data(struct archive_read *,
const void **, size_t *, int64_t *);
static int archive_read_format_zip_read_data_skip(struct archive_read *a);
+static int archive_read_format_zip_read_data_skip_seekable(struct archive_read *a);
static int archive_read_format_zip_seekable_read_header(
struct archive_read *, struct archive_entry *);
static int archive_read_format_zip_streamable_read_header(
archive_read_format_zip_options,
archive_read_format_zip_seekable_read_header,
archive_read_format_zip_read_data,
- archive_read_format_zip_read_data_skip,
+ archive_read_format_zip_read_data_skip_seekable,
NULL,
archive_read_format_zip_cleanup,
archive_read_support_format_zip_capabilities_seekable,
}
#endif
+/*
+ * We're going to seek for the next header anyway, so we don't
+ * need to bother doing anything here.
+ */
+static int
+archive_read_format_zip_read_data_skip_seekable(struct archive_read *a)
+{
+ struct zip *zip;
+ zip = (struct zip *)(a->format->data);
+
+ zip->unconsumed = 0;
+ return (ARCHIVE_OK);
+}
+
+
static int
archive_read_format_zip_read_data_skip(struct archive_read *a)
{