ffi_libarchive 1.1.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/ffi_libarchive/reader.rb +13 -6
- data/lib/ffi_libarchive/writer.rb +7 -2
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 21492e6683b6460c603231a3825914b51bfe4b8507b1bf4b952e40af0d3665c6
|
4
|
+
data.tar.gz: 53d12a414f22d5a8d9a55b57dbb1ba70c8996bfd7f63f8d5563a3eaf45d94675
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '08f3839842727213f59b4ff5e6a63f42e21311217304403ff93afa184ec0be04256e2f233727f7c411549fc1daf8fdcba2dabad11823b235c6aed2f39d87a948'
|
7
|
+
data.tar.gz: 9a8ad741321c67a313dfc5fa00ca09e9c5842638850219009cff0ed742771ee018168e4c44171f0c013be78df4f9d65e33f10be389ef3c37b9273372689dc9ed
|
@@ -168,6 +168,13 @@ module Archive
|
|
168
168
|
end
|
169
169
|
end
|
170
170
|
|
171
|
+
def close
|
172
|
+
super
|
173
|
+
@read_callback = nil
|
174
|
+
@skip_callback = nil
|
175
|
+
@seek_callback = nil
|
176
|
+
end
|
177
|
+
|
171
178
|
protected
|
172
179
|
|
173
180
|
def init_compression(command)
|
@@ -196,7 +203,7 @@ module Archive
|
|
196
203
|
end
|
197
204
|
|
198
205
|
def init_for_stream(reader)
|
199
|
-
read_callback = proc do |_ar, _client_data, buffer|
|
206
|
+
@read_callback = proc do |_ar, _client_data, buffer|
|
200
207
|
# @type [String]
|
201
208
|
data = reader.call
|
202
209
|
|
@@ -207,16 +214,16 @@ module Archive
|
|
207
214
|
0
|
208
215
|
end
|
209
216
|
end
|
210
|
-
raise Error, self if C.archive_read_set_read_callback(archive, read_callback) != C::OK
|
217
|
+
raise Error, self if C.archive_read_set_read_callback(archive, @read_callback) != C::OK
|
211
218
|
|
212
219
|
if reader.respond_to?(:skip)
|
213
|
-
skip_callback = proc { |_ar, _client_data, request| reader.skip(request) }
|
214
|
-
raise Error, self if C.archive_read_set_skip_callback(archive, skip_callback) != C::OK
|
220
|
+
@skip_callback = proc { |_ar, _client_data, request| reader.skip(request) }
|
221
|
+
raise Error, self if C.archive_read_set_skip_callback(archive, @skip_callback) != C::OK
|
215
222
|
end
|
216
223
|
|
217
224
|
if reader.respond_to?(:seek)
|
218
|
-
seek_callback = proc { |_ar, _client_data, offset, whence| reader.seek(offset, whence) }
|
219
|
-
raise Error, self if C.archive_read_set_seek_callback(archive, seek_callback) != C::OK
|
225
|
+
@seek_callback = proc { |_ar, _client_data, offset, whence| reader.seek(offset, whence) }
|
226
|
+
raise Error, self if C.archive_read_set_seek_callback(archive, @seek_callback) != C::OK
|
220
227
|
end
|
221
228
|
|
222
229
|
# Required or open1 will segfault, even though the callback data is not used.
|
@@ -139,6 +139,11 @@ module Archive
|
|
139
139
|
raise Error, self if C.archive_write_header(archive, entry.entry) != C::OK
|
140
140
|
end
|
141
141
|
|
142
|
+
def close
|
143
|
+
super
|
144
|
+
@write_callback = nil
|
145
|
+
end
|
146
|
+
|
142
147
|
protected
|
143
148
|
|
144
149
|
def init_compression(compression)
|
@@ -166,13 +171,13 @@ module Archive
|
|
166
171
|
def init_for_memory(memory)
|
167
172
|
C.archive_write_set_bytes_in_last_block(archive, 1) if C.archive_write_get_bytes_in_last_block(archive) < 0
|
168
173
|
|
169
|
-
write_callback = proc do |_ar, _client_data, buffer, length|
|
174
|
+
@write_callback = proc do |_ar, _client_data, buffer, length|
|
170
175
|
memory << buffer.get_bytes(0, length)
|
171
176
|
length
|
172
177
|
end
|
173
178
|
|
174
179
|
null_ptr = FFI::Pointer::NULL
|
175
|
-
raise Error, self if C.archive_write_open(archive, null_ptr, null_ptr, write_callback, null_ptr) != C::OK
|
180
|
+
raise Error, self if C.archive_write_open(archive, null_ptr, null_ptr, @write_callback, null_ptr) != C::OK
|
176
181
|
end
|
177
182
|
end
|
178
183
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ffi_libarchive
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Bellone
|
@@ -85,7 +85,9 @@ dependencies:
|
|
85
85
|
version: '0'
|
86
86
|
description: |-
|
87
87
|
This library provides Ruby FFI bindings to the well-known [libarchive library](https://www.libarchive.org/).
|
88
|
-
|
88
|
+
|
89
|
+
|
90
|
+
*NOTE* This gem is refactored / optimized version of [ffi-libarchive](https://rubygems.org/gems/ffi-libarchive) with more tests to cover almost use-cases.
|
89
91
|
email:
|
90
92
|
- jbellone@bloomberg.net
|
91
93
|
- jamie@vialstudios.com
|