Call ZIP_SOURCE_SUPPORTS when creating a source, only call supported commands.
diff --git a/lib/zip_source_window.c b/lib/zip_source_window.c
index a8801c7..69a0c91 100644
--- a/lib/zip_source_window.c
+++ b/lib/zip_source_window.c
@@ -44,7 +44,7 @@
zip_stat_t stat;
zip_error_t error;
zip_int64_t supports;
- int needs_seek;
+ bool needs_seek;
};
static zip_int64_t window_read(zip_source_t *, void *, void *, zip_uint64_t, zip_source_cmd_t);
@@ -76,8 +76,8 @@
ctx->end = start + length;
zip_stat_init(&ctx->stat);
zip_error_init(&ctx->error);
- ctx->supports = (zip_source_supports(src) & zip_source_make_command_bitmap(ZIP_SOURCE_OPEN, ZIP_SOURCE_READ, ZIP_SOURCE_CLOSE, ZIP_SOURCE_STAT, ZIP_SOURCE_ERROR, ZIP_SOURCE_FREE, ZIP_SOURCE_SEEK, ZIP_SOURCE_TELL, -1)) | (zip_source_make_command_bitmap(ZIP_SOURCE_TELL, -1));
- ctx->needs_seek = (ctx->supports & zip_source_make_command_bitmap(ZIP_SOURCE_SEEK, -1)) ? 1 : 0;
+ ctx->supports = (zip_source_supports(src) & ZIP_SOURCE_SUPPORTS_SEEKABLE) | (zip_source_make_command_bitmap(ZIP_SOURCE_SUPPORTS, ZIP_SOURCE_TELL, -1));
+ ctx->needs_seek = (ctx->supports & ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_SEEK)) ? true : false;
if (st) {
if (_zip_stat_merge(&ctx->stat, st, error) < 0) {