rubyzip 2.3.1 → 3.0.0
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/Changelog.md +422 -0
- data/LICENSE.md +24 -0
- data/README.md +138 -41
- data/Rakefile +11 -7
- data/lib/zip/central_directory.rb +169 -123
- data/lib/zip/compressor.rb +3 -1
- data/lib/zip/constants.rb +29 -21
- data/lib/zip/crypto/decrypted_io.rb +4 -2
- data/lib/zip/crypto/encryption.rb +4 -2
- data/lib/zip/crypto/null_encryption.rb +6 -4
- data/lib/zip/crypto/traditional_encryption.rb +8 -6
- data/lib/zip/decompressor.rb +4 -3
- data/lib/zip/deflater.rb +10 -8
- data/lib/zip/dirtyable.rb +32 -0
- data/lib/zip/dos_time.rb +51 -5
- data/lib/zip/entry.rb +363 -222
- data/lib/zip/entry_set.rb +11 -9
- data/lib/zip/errors.rb +136 -16
- data/lib/zip/extra_field/generic.rb +6 -13
- data/lib/zip/extra_field/ntfs.rb +6 -4
- data/lib/zip/extra_field/old_unix.rb +3 -1
- data/lib/zip/extra_field/universal_time.rb +3 -1
- data/lib/zip/extra_field/unix.rb +5 -3
- data/lib/zip/extra_field/unknown.rb +33 -0
- data/lib/zip/extra_field/zip64.rb +12 -5
- data/lib/zip/extra_field.rb +16 -22
- data/lib/zip/file.rb +177 -223
- data/lib/zip/file_split.rb +91 -0
- data/lib/zip/filesystem/dir.rb +86 -0
- data/lib/zip/filesystem/directory_iterator.rb +48 -0
- data/lib/zip/filesystem/file.rb +262 -0
- data/lib/zip/filesystem/file_stat.rb +110 -0
- data/lib/zip/filesystem/zip_file_name_mapper.rb +81 -0
- data/lib/zip/filesystem.rb +27 -596
- data/lib/zip/inflater.rb +6 -4
- data/lib/zip/input_stream.rb +50 -37
- data/lib/zip/ioextras/abstract_input_stream.rb +15 -10
- data/lib/zip/ioextras/abstract_output_stream.rb +5 -3
- data/lib/zip/ioextras.rb +7 -7
- data/lib/zip/null_compressor.rb +3 -1
- data/lib/zip/null_decompressor.rb +3 -1
- data/lib/zip/null_input_stream.rb +3 -1
- data/lib/zip/output_stream.rb +53 -47
- data/lib/zip/pass_thru_compressor.rb +3 -1
- data/lib/zip/pass_thru_decompressor.rb +4 -2
- data/lib/zip/streamable_directory.rb +3 -1
- data/lib/zip/streamable_stream.rb +3 -0
- data/lib/zip/version.rb +3 -1
- data/lib/zip.rb +17 -23
- data/rubyzip.gemspec +39 -0
- data/samples/example.rb +8 -3
- data/samples/example_filesystem.rb +3 -2
- data/samples/example_recursive.rb +3 -1
- data/samples/gtk_ruby_zip.rb +4 -2
- data/samples/qtzip.rb +6 -5
- data/samples/write_simple.rb +2 -1
- data/samples/zipfind.rb +1 -0
- metadata +83 -33
- data/TODO +0 -15
- data/lib/zip/extra_field/zip64_placeholder.rb +0 -15
data/rubyzip.gemspec
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'lib/zip/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = 'rubyzip'
|
7
|
+
s.version = Zip::VERSION
|
8
|
+
s.authors = ['Robert Haines', 'John Lees-Miller', 'Alexander Simonov']
|
9
|
+
s.email = [
|
10
|
+
'hainesr@gmail.com', 'jdleesmiller@gmail.com', 'alex@simonov.me'
|
11
|
+
]
|
12
|
+
s.homepage = 'http://github.com/rubyzip/rubyzip'
|
13
|
+
s.platform = Gem::Platform::RUBY
|
14
|
+
s.summary = 'rubyzip is a ruby module for reading and writing zip files'
|
15
|
+
s.files = Dir.glob('{samples,lib}/**/*.rb') +
|
16
|
+
%w[LICENSE.md README.md Changelog.md Rakefile rubyzip.gemspec]
|
17
|
+
s.require_paths = ['lib']
|
18
|
+
s.license = 'BSD-2-Clause'
|
19
|
+
|
20
|
+
s.metadata = {
|
21
|
+
'bug_tracker_uri' => 'https://github.com/rubyzip/rubyzip/issues',
|
22
|
+
'changelog_uri' => "https://github.com/rubyzip/rubyzip/blob/v#{s.version}/Changelog.md",
|
23
|
+
'documentation_uri' => "https://www.rubydoc.info/gems/rubyzip/#{s.version}",
|
24
|
+
'source_code_uri' => "https://github.com/rubyzip/rubyzip/tree/v#{s.version}",
|
25
|
+
'wiki_uri' => 'https://github.com/rubyzip/rubyzip/wiki',
|
26
|
+
'rubygems_mfa_required' => 'true'
|
27
|
+
}
|
28
|
+
|
29
|
+
s.required_ruby_version = '>= 3.0'
|
30
|
+
|
31
|
+
s.add_development_dependency 'minitest', '~> 5.25'
|
32
|
+
s.add_development_dependency 'rake', '~> 13.2'
|
33
|
+
s.add_development_dependency 'rdoc', '~> 6.11'
|
34
|
+
s.add_development_dependency 'rubocop', '~> 1.61.0'
|
35
|
+
s.add_development_dependency 'rubocop-performance', '~> 1.20.0'
|
36
|
+
s.add_development_dependency 'rubocop-rake', '~> 0.6.0'
|
37
|
+
s.add_development_dependency 'simplecov', '~> 0.22.0'
|
38
|
+
s.add_development_dependency 'simplecov-lcov', '~> 0.8'
|
39
|
+
end
|
data/samples/example.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
4
|
$LOAD_PATH << '../lib'
|
4
5
|
system('zip example.zip example.rb gtk_ruby_zip.rb')
|
@@ -20,7 +21,8 @@ end
|
|
20
21
|
|
21
22
|
zf = Zip::File.new('example.zip')
|
22
23
|
zf.each_with_index do |entry, index|
|
23
|
-
puts "entry #{index} is #{entry.name}, size = #{entry.size},
|
24
|
+
puts "entry #{index} is #{entry.name}, size = #{entry.size}, " \
|
25
|
+
"compressed size = #{entry.compressed_size}"
|
24
26
|
# use zf.get_input_stream(entry) to get a ZipInputStream for the entry
|
25
27
|
# entry can be the ZipEntry object or any object which has a to_s method that
|
26
28
|
# returns the name of the entry.
|
@@ -70,8 +72,11 @@ part_zips_count = Zip::File.split('large_zip_file.zip', 2_097_152, false)
|
|
70
72
|
puts "Zip file splitted in #{part_zips_count} parts"
|
71
73
|
|
72
74
|
# Track splitting an archive
|
73
|
-
Zip::File.split(
|
74
|
-
|
75
|
+
Zip::File.split(
|
76
|
+
'large_zip_file.zip', 1_048_576, true, 'part_zip_file'
|
77
|
+
) do |part_count, part_index, chunk_bytes, segment_bytes|
|
78
|
+
puts "#{part_index} of #{part_count} part splitting: " \
|
79
|
+
"#{(chunk_bytes.to_f / segment_bytes * 100).to_i}%"
|
75
80
|
end
|
76
81
|
|
77
82
|
# For other examples, look at zip.rb and ziptest.rb
|
@@ -1,4 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
4
|
$LOAD_PATH << '../lib'
|
4
5
|
|
@@ -6,9 +7,9 @@ require 'zip/filesystem'
|
|
6
7
|
|
7
8
|
EXAMPLE_ZIP = 'filesystem.zip'
|
8
9
|
|
9
|
-
|
10
|
+
FileUtils.rm_f(EXAMPLE_ZIP)
|
10
11
|
|
11
|
-
Zip::File.open(EXAMPLE_ZIP,
|
12
|
+
Zip::File.open(EXAMPLE_ZIP, create: true) do |zf|
|
12
13
|
zf.file.open('file1.txt', 'w') { |os| os.write 'first file1.txt' }
|
13
14
|
zf.dir.mkdir('dir1')
|
14
15
|
zf.dir.chdir('dir1')
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'zip'
|
2
4
|
|
3
5
|
# This is a simple example which uses rubyzip to
|
@@ -21,7 +23,7 @@ class ZipFileGenerator
|
|
21
23
|
def write
|
22
24
|
entries = Dir.entries(@input_dir) - %w[. ..]
|
23
25
|
|
24
|
-
::Zip::File.open(@output_file,
|
26
|
+
::Zip::File.open(@output_file, create: true) do |zipfile|
|
25
27
|
write_entries entries, '', zipfile
|
26
28
|
end
|
27
29
|
end
|
data/samples/gtk_ruby_zip.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
4
|
$LOAD_PATH << '../lib'
|
4
5
|
|
@@ -42,7 +43,8 @@ class MainApp < Gtk::Window
|
|
42
43
|
end
|
43
44
|
|
44
45
|
class ButtonPanel < Gtk::HButtonBox
|
45
|
-
attr_reader :
|
46
|
+
attr_reader :extract_button, :open_button
|
47
|
+
|
46
48
|
def initialize
|
47
49
|
super
|
48
50
|
set_layout(Gtk::BUTTONBOX_START)
|
@@ -72,7 +74,7 @@ class MainApp < Gtk::Window
|
|
72
74
|
@zipfile.each do |entry|
|
73
75
|
@clist.append([entry.name,
|
74
76
|
entry.size.to_s,
|
75
|
-
|
77
|
+
"#{100.0 * entry.compressedSize / entry.size}%"])
|
76
78
|
end
|
77
79
|
end
|
78
80
|
end
|
data/samples/qtzip.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
4
|
$VERBOSE = true
|
4
5
|
|
@@ -6,7 +7,7 @@ $LOAD_PATH << '../lib'
|
|
6
7
|
|
7
8
|
require 'Qt'
|
8
9
|
system('rbuic -o zipdialogui.rb zipdialogui.ui')
|
9
|
-
require 'zipdialogui
|
10
|
+
require 'zipdialogui'
|
10
11
|
require 'zip'
|
11
12
|
|
12
13
|
a = Qt::Application.new(ARGV)
|
@@ -65,14 +66,14 @@ class ZipDialog < ZipDialogUI
|
|
65
66
|
end
|
66
67
|
puts "selected_items.size = #{selected_items.size}"
|
67
68
|
puts "unselected_items.size = #{unselected_items.size}"
|
68
|
-
items =
|
69
|
+
items = selected_items.empty? ? unselected_items : selected_items
|
69
70
|
puts "items.size = #{items.size}"
|
70
71
|
|
71
72
|
d = Qt::FileDialog.get_existing_directory(nil, self)
|
72
|
-
if
|
73
|
-
puts 'No directory chosen'
|
74
|
-
else
|
73
|
+
if d
|
75
74
|
zipfile { |zf| items.each { |e| zf.extract(e, File.join(d, e)) } }
|
75
|
+
else
|
76
|
+
puts 'No directory chosen'
|
76
77
|
end
|
77
78
|
end
|
78
79
|
|
data/samples/write_simple.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
4
|
$LOAD_PATH << '../lib'
|
4
5
|
|
5
6
|
require 'zip'
|
6
7
|
|
7
|
-
|
8
|
+
Zip::OutputStream.open('simple.zip') do |zos|
|
8
9
|
zos.put_next_entry 'entry.txt'
|
9
10
|
zos.puts 'Hello world'
|
10
11
|
end
|
data/samples/zipfind.rb
CHANGED
metadata
CHANGED
@@ -1,101 +1,142 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubyzip
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
+
- Robert Haines
|
8
|
+
- John Lees-Miller
|
7
9
|
- Alexander Simonov
|
8
|
-
autorequire:
|
10
|
+
autorequire:
|
9
11
|
bindir: bin
|
10
12
|
cert_chain: []
|
11
|
-
date:
|
13
|
+
date: 2025-07-28 00:00:00.000000000 Z
|
12
14
|
dependencies:
|
13
15
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
16
|
+
name: minitest
|
15
17
|
requirement: !ruby/object:Gem::Requirement
|
16
18
|
requirements:
|
17
19
|
- - "~>"
|
18
20
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
21
|
+
version: '5.25'
|
20
22
|
type: :development
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
23
25
|
requirements:
|
24
26
|
- - "~>"
|
25
27
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
28
|
+
version: '5.25'
|
27
29
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
30
|
+
name: rake
|
29
31
|
requirement: !ruby/object:Gem::Requirement
|
30
32
|
requirements:
|
31
33
|
- - "~>"
|
32
34
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
35
|
+
version: '13.2'
|
34
36
|
type: :development
|
35
37
|
prerelease: false
|
36
38
|
version_requirements: !ruby/object:Gem::Requirement
|
37
39
|
requirements:
|
38
40
|
- - "~>"
|
39
41
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
42
|
+
version: '13.2'
|
41
43
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
44
|
+
name: rdoc
|
43
45
|
requirement: !ruby/object:Gem::Requirement
|
44
46
|
requirements:
|
45
47
|
- - "~>"
|
46
48
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
49
|
+
version: '6.11'
|
48
50
|
type: :development
|
49
51
|
prerelease: false
|
50
52
|
version_requirements: !ruby/object:Gem::Requirement
|
51
53
|
requirements:
|
52
54
|
- - "~>"
|
53
55
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
56
|
+
version: '6.11'
|
55
57
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
58
|
+
name: rubocop
|
57
59
|
requirement: !ruby/object:Gem::Requirement
|
58
60
|
requirements:
|
59
61
|
- - "~>"
|
60
62
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
62
|
-
|
63
|
+
version: 1.61.0
|
64
|
+
type: :development
|
65
|
+
prerelease: false
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - "~>"
|
63
69
|
- !ruby/object:Gem::Version
|
64
|
-
version:
|
70
|
+
version: 1.61.0
|
71
|
+
- !ruby/object:Gem::Dependency
|
72
|
+
name: rubocop-performance
|
73
|
+
requirement: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - "~>"
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 1.20.0
|
65
78
|
type: :development
|
66
79
|
prerelease: false
|
67
80
|
version_requirements: !ruby/object:Gem::Requirement
|
68
81
|
requirements:
|
69
82
|
- - "~>"
|
70
83
|
- !ruby/object:Gem::Version
|
71
|
-
version:
|
72
|
-
|
84
|
+
version: 1.20.0
|
85
|
+
- !ruby/object:Gem::Dependency
|
86
|
+
name: rubocop-rake
|
87
|
+
requirement: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - "~>"
|
73
90
|
- !ruby/object:Gem::Version
|
74
|
-
version:
|
91
|
+
version: 0.6.0
|
92
|
+
type: :development
|
93
|
+
prerelease: false
|
94
|
+
version_requirements: !ruby/object:Gem::Requirement
|
95
|
+
requirements:
|
96
|
+
- - "~>"
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: 0.6.0
|
75
99
|
- !ruby/object:Gem::Dependency
|
76
|
-
name:
|
100
|
+
name: simplecov
|
101
|
+
requirement: !ruby/object:Gem::Requirement
|
102
|
+
requirements:
|
103
|
+
- - "~>"
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: 0.22.0
|
106
|
+
type: :development
|
107
|
+
prerelease: false
|
108
|
+
version_requirements: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - "~>"
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: 0.22.0
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: simplecov-lcov
|
77
115
|
requirement: !ruby/object:Gem::Requirement
|
78
116
|
requirements:
|
79
117
|
- - "~>"
|
80
118
|
- !ruby/object:Gem::Version
|
81
|
-
version: '0.
|
119
|
+
version: '0.8'
|
82
120
|
type: :development
|
83
121
|
prerelease: false
|
84
122
|
version_requirements: !ruby/object:Gem::Requirement
|
85
123
|
requirements:
|
86
124
|
- - "~>"
|
87
125
|
- !ruby/object:Gem::Version
|
88
|
-
version: '0.
|
89
|
-
description:
|
126
|
+
version: '0.8'
|
127
|
+
description:
|
90
128
|
email:
|
129
|
+
- hainesr@gmail.com
|
130
|
+
- jdleesmiller@gmail.com
|
91
131
|
- alex@simonov.me
|
92
132
|
executables: []
|
93
133
|
extensions: []
|
94
134
|
extra_rdoc_files: []
|
95
135
|
files:
|
136
|
+
- Changelog.md
|
137
|
+
- LICENSE.md
|
96
138
|
- README.md
|
97
139
|
- Rakefile
|
98
|
-
- TODO
|
99
140
|
- lib/zip.rb
|
100
141
|
- lib/zip/central_directory.rb
|
101
142
|
- lib/zip/compressor.rb
|
@@ -106,6 +147,7 @@ files:
|
|
106
147
|
- lib/zip/crypto/traditional_encryption.rb
|
107
148
|
- lib/zip/decompressor.rb
|
108
149
|
- lib/zip/deflater.rb
|
150
|
+
- lib/zip/dirtyable.rb
|
109
151
|
- lib/zip/dos_time.rb
|
110
152
|
- lib/zip/entry.rb
|
111
153
|
- lib/zip/entry_set.rb
|
@@ -116,10 +158,16 @@ files:
|
|
116
158
|
- lib/zip/extra_field/old_unix.rb
|
117
159
|
- lib/zip/extra_field/universal_time.rb
|
118
160
|
- lib/zip/extra_field/unix.rb
|
161
|
+
- lib/zip/extra_field/unknown.rb
|
119
162
|
- lib/zip/extra_field/zip64.rb
|
120
|
-
- lib/zip/extra_field/zip64_placeholder.rb
|
121
163
|
- lib/zip/file.rb
|
164
|
+
- lib/zip/file_split.rb
|
122
165
|
- lib/zip/filesystem.rb
|
166
|
+
- lib/zip/filesystem/dir.rb
|
167
|
+
- lib/zip/filesystem/directory_iterator.rb
|
168
|
+
- lib/zip/filesystem/file.rb
|
169
|
+
- lib/zip/filesystem/file_stat.rb
|
170
|
+
- lib/zip/filesystem/zip_file_name_mapper.rb
|
123
171
|
- lib/zip/inflater.rb
|
124
172
|
- lib/zip/input_stream.rb
|
125
173
|
- lib/zip/ioextras.rb
|
@@ -134,6 +182,7 @@ files:
|
|
134
182
|
- lib/zip/streamable_directory.rb
|
135
183
|
- lib/zip/streamable_stream.rb
|
136
184
|
- lib/zip/version.rb
|
185
|
+
- rubyzip.gemspec
|
137
186
|
- samples/example.rb
|
138
187
|
- samples/example_filesystem.rb
|
139
188
|
- samples/example_recursive.rb
|
@@ -143,14 +192,15 @@ files:
|
|
143
192
|
- samples/zipfind.rb
|
144
193
|
homepage: http://github.com/rubyzip/rubyzip
|
145
194
|
licenses:
|
146
|
-
- BSD
|
195
|
+
- BSD-2-Clause
|
147
196
|
metadata:
|
148
197
|
bug_tracker_uri: https://github.com/rubyzip/rubyzip/issues
|
149
|
-
changelog_uri: https://github.com/rubyzip/rubyzip/blob/
|
150
|
-
documentation_uri: https://www.rubydoc.info/gems/rubyzip/
|
151
|
-
source_code_uri: https://github.com/rubyzip/rubyzip/tree/
|
198
|
+
changelog_uri: https://github.com/rubyzip/rubyzip/blob/v3.0.0/Changelog.md
|
199
|
+
documentation_uri: https://www.rubydoc.info/gems/rubyzip/3.0.0
|
200
|
+
source_code_uri: https://github.com/rubyzip/rubyzip/tree/v3.0.0
|
152
201
|
wiki_uri: https://github.com/rubyzip/rubyzip/wiki
|
153
|
-
|
202
|
+
rubygems_mfa_required: 'true'
|
203
|
+
post_install_message:
|
154
204
|
rdoc_options: []
|
155
205
|
require_paths:
|
156
206
|
- lib
|
@@ -158,15 +208,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
158
208
|
requirements:
|
159
209
|
- - ">="
|
160
210
|
- !ruby/object:Gem::Version
|
161
|
-
version: '
|
211
|
+
version: '3.0'
|
162
212
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
163
213
|
requirements:
|
164
214
|
- - ">="
|
165
215
|
- !ruby/object:Gem::Version
|
166
216
|
version: '0'
|
167
217
|
requirements: []
|
168
|
-
rubygems_version: 3.1
|
169
|
-
signing_key:
|
218
|
+
rubygems_version: 3.4.1
|
219
|
+
signing_key:
|
170
220
|
specification_version: 4
|
171
221
|
summary: rubyzip is a ruby module for reading and writing zip files
|
172
222
|
test_files: []
|
data/TODO
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
|
2
|
-
* ZipInputStream: Support zip-files with trailing data descriptors
|
3
|
-
* Adjust rdoc stylesheet to advertise inherited methods if possible
|
4
|
-
* Suggestion: Add ZipFile/ZipInputStream example that demonstrates extracting all entries.
|
5
|
-
* Suggestion: ZipFile#extract destination should default to "."
|
6
|
-
* Suggestion: ZipEntry should have extract(), get_input_stream() methods etc
|
7
|
-
* (is buffering used anywhere with write?)
|
8
|
-
* Inflater.sysread should pass the buffer to produce_input.
|
9
|
-
* Implement ZipFsDir.glob
|
10
|
-
* ZipFile.checkIntegrity method
|
11
|
-
* non-MSDOS permission attributes
|
12
|
-
** See mail from Ned Konz to ruby-talk subj. "Re: SV: [ANN] Archive 0.2"
|
13
|
-
* Packager version, required unpacker version in zip headers
|
14
|
-
** See mail from Ned Konz to ruby-talk subj. "Re: SV: [ANN] Archive 0.2"
|
15
|
-
* implement storing attributes and ownership information
|
@@ -1,15 +0,0 @@
|
|
1
|
-
module Zip
|
2
|
-
# placeholder to reserve space for a Zip64 extra information record, for the
|
3
|
-
# local file header only, that we won't know if we'll need until after
|
4
|
-
# we write the file data
|
5
|
-
class ExtraField::Zip64Placeholder < ExtraField::Generic
|
6
|
-
HEADER_ID = ['9999'].pack('H*') # this ID is used by other libraries such as .NET's Ionic.zip
|
7
|
-
register_map
|
8
|
-
|
9
|
-
def initialize(_binstr = nil); end
|
10
|
-
|
11
|
-
def pack_for_local
|
12
|
-
"\x00" * 16
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|