diff options
-rw-r--r-- | src/archive/zip_plugin.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/archive/zip_plugin.c b/src/archive/zip_plugin.c index 1aa311065..d318adc06 100644 --- a/src/archive/zip_plugin.c +++ b/src/archive/zip_plugin.c @@ -111,8 +111,8 @@ zip_setup_stream(struct archive_file *file, struct input_stream *is) is->plugin = &zip_inputplugin; //insert back reference is->archive = context; - //we are not seekable - is->seekable = false; + //we are seekable (but its not recommendent to do so) + is->seekable = true; } @@ -163,6 +163,12 @@ static bool zip_is_seek(G_GNUC_UNUSED struct input_stream *is, G_GNUC_UNUSED off_t offset, G_GNUC_UNUSED int whence) { + zip_context *context = (zip_context *) is->archive; + zzip_off_t ofs = zzip_seek(context->file, offset, whence); + if (ofs != -1) { + is->offset = ofs; + return true; + } return false; } |