aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/archive/zip_plugin.c10
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;
}