rubyzip 2.1.0 → 3.6.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.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +538 -0
  3. data/LICENSE.md +24 -0
  4. data/README.md +235 -48
  5. data/Rakefile +17 -12
  6. data/lib/rubyzip.rb +3 -0
  7. data/lib/zip/central_directory.rb +196 -123
  8. data/lib/zip/compressor.rb +3 -1
  9. data/lib/zip/constants.rb +81 -21
  10. data/lib/zip/crypto/aes_encryption.rb +123 -0
  11. data/lib/zip/crypto/decrypted_io.rb +52 -0
  12. data/lib/zip/crypto/encryption.rb +4 -2
  13. data/lib/zip/crypto/null_encryption.rb +5 -13
  14. data/lib/zip/crypto/traditional_encryption.rb +22 -16
  15. data/lib/zip/decompressor.rb +21 -2
  16. data/lib/zip/deflater.rb +12 -8
  17. data/lib/zip/dirtyable.rb +32 -0
  18. data/lib/zip/dos_time.rb +79 -14
  19. data/lib/zip/entry.rb +430 -249
  20. data/lib/zip/entry_set.rb +13 -9
  21. data/lib/zip/errors.rb +152 -15
  22. data/lib/zip/extra_field/aes.rb +50 -0
  23. data/lib/zip/extra_field/generic.rb +17 -17
  24. data/lib/zip/extra_field/ntfs.rb +10 -4
  25. data/lib/zip/extra_field/old_unix.rb +8 -4
  26. data/lib/zip/extra_field/universal_time.rb +6 -1
  27. data/lib/zip/extra_field/unix.rb +9 -5
  28. data/lib/zip/extra_field/unknown.rb +35 -0
  29. data/lib/zip/extra_field/zip64.rb +23 -7
  30. data/lib/zip/extra_field.rb +31 -27
  31. data/lib/zip/file.rb +211 -241
  32. data/lib/zip/file_split.rb +91 -0
  33. data/lib/zip/filesystem/dir.rb +86 -0
  34. data/lib/zip/filesystem/directory_iterator.rb +48 -0
  35. data/lib/zip/filesystem/file.rb +263 -0
  36. data/lib/zip/filesystem/file_stat.rb +110 -0
  37. data/lib/zip/filesystem/zip_file_name_mapper.rb +81 -0
  38. data/lib/zip/filesystem.rb +32 -585
  39. data/lib/zip/inflater.rb +28 -37
  40. data/lib/zip/input_stream.rb +113 -54
  41. data/lib/zip/ioextras/abstract_input_stream.rb +154 -55
  42. data/lib/zip/ioextras/abstract_output_stream.rb +13 -3
  43. data/lib/zip/ioextras.rb +12 -9
  44. data/lib/zip/null_compressor.rb +3 -1
  45. data/lib/zip/null_decompressor.rb +7 -12
  46. data/lib/zip/null_input_stream.rb +3 -1
  47. data/lib/zip/output_stream.rb +76 -51
  48. data/lib/zip/pass_thru_compressor.rb +5 -3
  49. data/lib/zip/pass_thru_decompressor.rb +17 -23
  50. data/lib/zip/streamable_directory.rb +6 -4
  51. data/lib/zip/streamable_stream.rb +9 -5
  52. data/lib/zip/version.rb +4 -1
  53. data/lib/zip.rb +31 -5
  54. data/rubyzip.gemspec +39 -0
  55. data/samples/example.rb +9 -4
  56. data/samples/example_filesystem.rb +4 -3
  57. data/samples/example_recursive.rb +3 -1
  58. data/samples/gtk_ruby_zip.rb +23 -21
  59. data/samples/qtzip.rb +13 -12
  60. data/samples/write_simple.rb +3 -4
  61. data/samples/zipfind.rb +24 -22
  62. metadata +84 -28
  63. data/TODO +0 -15
  64. data/lib/zip/extra_field/zip64_placeholder.rb +0 -15
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
- $: << '../lib'
4
+ $LOAD_PATH << '../lib'
4
5
 
5
6
  $VERBOSE = true
6
7
 
@@ -9,7 +10,7 @@ require 'zip'
9
10
 
10
11
  class MainApp < Gtk::Window
11
12
  def initialize
12
- super()
13
+ super
13
14
  set_usize(400, 256)
14
15
  set_title('rubyzip')
15
16
  signal_connect(Gtk::Window::SIGNAL_DESTROY) { Gtk.main_quit }
@@ -18,14 +19,14 @@ class MainApp < Gtk::Window
18
19
  add(box)
19
20
 
20
21
  @zipfile = nil
21
- @buttonPanel = ButtonPanel.new
22
- @buttonPanel.openButton.signal_connect(Gtk::Button::SIGNAL_CLICKED) do
22
+ @button_panel = ButtonPanel.new
23
+ @button_panel.open_button.signal_connect(Gtk::Button::SIGNAL_CLICKED) do
23
24
  show_file_selector
24
25
  end
25
- @buttonPanel.extractButton.signal_connect(Gtk::Button::SIGNAL_CLICKED) do
26
+ @button_panel.extract_button.signal_connect(Gtk::Button::SIGNAL_CLICKED) do
26
27
  puts 'Not implemented!'
27
28
  end
28
- box.pack_start(@buttonPanel, false, false, 0)
29
+ box.pack_start(@button_panel, false, false, 0)
29
30
 
30
31
  sw = Gtk::ScrolledWindow.new
31
32
  sw.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC)
@@ -42,27 +43,28 @@ class MainApp < Gtk::Window
42
43
  end
43
44
 
44
45
  class ButtonPanel < Gtk::HButtonBox
45
- attr_reader :openButton, :extractButton
46
+ attr_reader :extract_button, :open_button
47
+
46
48
  def initialize
47
49
  super
48
50
  set_layout(Gtk::BUTTONBOX_START)
49
51
  set_spacing(0)
50
- @openButton = Gtk::Button.new('Open archive')
51
- @extractButton = Gtk::Button.new('Extract entry')
52
- pack_start(@openButton)
53
- pack_start(@extractButton)
52
+ @open_button = Gtk::Button.new('Open archive')
53
+ @extract_button = Gtk::Button.new('Extract entry')
54
+ pack_start(@open_button)
55
+ pack_start(@extract_button)
54
56
  end
55
57
  end
56
58
 
57
59
  def show_file_selector
58
- @fileSelector = Gtk::FileSelection.new('Open zip file')
59
- @fileSelector.show
60
- @fileSelector.ok_button.signal_connect(Gtk::Button::SIGNAL_CLICKED) do
61
- open_zip(@fileSelector.filename)
62
- @fileSelector.destroy
60
+ @file_selector = Gtk::FileSelection.new('Open zip file')
61
+ @file_selector.show
62
+ @file_selector.ok_button.signal_connect(Gtk::Button::SIGNAL_CLICKED) do
63
+ open_zip(@file_selector.filename)
64
+ @file_selector.destroy
63
65
  end
64
- @fileSelector.cancel_button.signal_connect(Gtk::Button::SIGNAL_CLICKED) do
65
- @fileSelector.destroy
66
+ @file_selector.cancel_button.signal_connect(Gtk::Button::SIGNAL_CLICKED) do
67
+ @file_selector.destroy
66
68
  end
67
69
  end
68
70
 
@@ -72,13 +74,13 @@ class MainApp < Gtk::Window
72
74
  @zipfile.each do |entry|
73
75
  @clist.append([entry.name,
74
76
  entry.size.to_s,
75
- (100.0 * entry.compressedSize / entry.size).to_s + '%'])
77
+ "#{100.0 * entry.compressedSize / entry.size}%"])
76
78
  end
77
79
  end
78
80
  end
79
81
 
80
- mainApp = MainApp.new
82
+ main_app = MainApp.new
81
83
 
82
- mainApp.show_all
84
+ main_app.show_all
83
85
 
84
86
  Gtk.main
data/samples/qtzip.rb CHANGED
@@ -1,31 +1,32 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  $VERBOSE = true
4
5
 
5
- $: << '../lib'
6
+ $LOAD_PATH << '../lib'
6
7
 
7
8
  require 'Qt'
8
9
  system('rbuic -o zipdialogui.rb zipdialogui.ui')
9
- require 'zipdialogui.rb'
10
+ require 'zipdialogui'
10
11
  require 'zip'
11
12
 
12
13
  a = Qt::Application.new(ARGV)
13
14
 
14
15
  class ZipDialog < ZipDialogUI
15
16
  def initialize
16
- super()
17
+ super
17
18
  connect(child('add_button'), SIGNAL('clicked()'),
18
19
  self, SLOT('add_files()'))
19
20
  connect(child('extract_button'), SIGNAL('clicked()'),
20
21
  self, SLOT('extract_files()'))
21
22
  end
22
23
 
23
- def zipfile(&proc)
24
- Zip::File.open(@zip_filename, &proc)
24
+ def zipfile(&a_proc)
25
+ Zip::File.open(@zip_filename, &a_proc)
25
26
  end
26
27
 
27
- def each(&proc)
28
- Zip::File.foreach(@zip_filename, &proc)
28
+ def each(&a_proc)
29
+ Zip::File.foreach(@zip_filename, &a_proc)
29
30
  end
30
31
 
31
32
  def refresh
@@ -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 = !selected_items.empty? ? selected_items : unselected_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 !d
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
 
@@ -80,7 +81,7 @@ class ZipDialog < ZipDialogUI
80
81
  end
81
82
 
82
83
  unless ARGV[0]
83
- puts "usage: #{$0} zipname"
84
+ puts "usage: #{$PROGRAM_NAME} zipname"
84
85
  exit
85
86
  end
86
87
 
@@ -1,12 +1,11 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
- $: << '../lib'
4
+ $LOAD_PATH << '../lib'
4
5
 
5
6
  require 'zip'
6
7
 
7
- include Zip
8
-
9
- OutputStream.open('simple.zip') do |zos|
8
+ Zip::OutputStream.open('simple.zip') do |zos|
10
9
  zos.put_next_entry 'entry.txt'
11
10
  zos.puts 'Hello world'
12
11
  end
data/samples/zipfind.rb CHANGED
@@ -1,37 +1,39 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  $VERBOSE = true
4
5
 
5
- $: << '../lib'
6
+ $LOAD_PATH << '../lib'
6
7
 
7
8
  require 'zip'
8
9
  require 'find'
9
10
 
10
11
  module Zip
11
12
  module ZipFind
12
- def self.find(path, zipFilePattern = /\.zip$/i)
13
- Find.find(path) do |fileName|
14
- yield(fileName)
15
- next unless zipFilePattern.match(fileName) && File.file?(fileName)
13
+ def self.find(path, zip_file_pattern = /\.zip$/i)
14
+ Find.find(path) do |filename|
15
+ yield(filename)
16
+ next unless zip_file_pattern.match(filename) && File.file?(filename)
17
+
16
18
  begin
17
- Zip::File.foreach(fileName) do |zipEntry|
18
- yield(fileName + File::SEPARATOR + zipEntry.to_s)
19
+ Zip::File.foreach(filename) do |entry|
20
+ yield(filename + File::SEPARATOR + entry.to_s)
19
21
  end
20
- rescue Errno::EACCES => ex
21
- puts ex
22
+ rescue Errno::EACCES => e
23
+ puts e
22
24
  end
23
25
  end
24
26
  end
25
27
 
26
- def self.find_file(path, fileNamePattern, zipFilePattern = /\.zip$/i)
27
- find(path, zipFilePattern) do |fileName|
28
- yield(fileName) if fileNamePattern.match(fileName)
28
+ def self.find_file(path, filename_pattern, zip_file_pattern = /\.zip$/i)
29
+ find(path, zip_file_pattern) do |filename|
30
+ yield(filename) if filename_pattern.match(filename)
29
31
  end
30
32
  end
31
33
  end
32
34
  end
33
35
 
34
- if $0 == __FILE__
36
+ if $PROGRAM_NAME == __FILE__
35
37
  module ZipFindConsoleRunner
36
38
  PATH_ARG_INDEX = 0
37
39
  FILENAME_PATTERN_ARG_INDEX = 1
@@ -41,24 +43,24 @@ if $0 == __FILE__
41
43
  check_args(args)
42
44
  Zip::ZipFind.find_file(args[PATH_ARG_INDEX],
43
45
  args[FILENAME_PATTERN_ARG_INDEX],
44
- args[ZIPFILE_PATTERN_ARG_INDEX]) do |fileName|
45
- report_entry_found fileName
46
+ args[ZIPFILE_PATTERN_ARG_INDEX]) do |filename|
47
+ report_entry_found filename
46
48
  end
47
49
  end
48
50
 
49
51
  def self.check_args(args)
50
- if args.size != 3
51
- usage
52
- exit
53
- end
52
+ return if args.size == 3
53
+
54
+ usage
55
+ exit
54
56
  end
55
57
 
56
58
  def self.usage
57
- puts "Usage: #{$0} PATH ZIPFILENAME_PATTERN FILNAME_PATTERN"
59
+ puts "Usage: #{$PROGRAM_NAME} PATH ZIPFILENAME_PATTERN FILNAME_PATTERN"
58
60
  end
59
61
 
60
- def self.report_entry_found(fileName)
61
- puts fileName
62
+ def self.report_entry_found(filename)
63
+ puts filename
62
64
  end
63
65
  end
64
66
 
metadata CHANGED
@@ -1,118 +1,174 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubyzip
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 3.6.0
5
5
  platform: ruby
6
6
  authors:
7
+ - Robert Haines
8
+ - John Lees-Miller
7
9
  - Alexander Simonov
8
- autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2020-01-25 00:00:00.000000000 Z
12
+ date: 1980-01-02 00:00:00.000000000 Z
12
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: minitest
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '5.25'
21
+ type: :development
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '5.25'
13
28
  - !ruby/object:Gem::Dependency
14
29
  name: rake
15
30
  requirement: !ruby/object:Gem::Requirement
16
31
  requirements:
17
32
  - - "~>"
18
33
  - !ruby/object:Gem::Version
19
- version: '10.3'
34
+ version: '13.2'
20
35
  type: :development
21
36
  prerelease: false
22
37
  version_requirements: !ruby/object:Gem::Requirement
23
38
  requirements:
24
39
  - - "~>"
25
40
  - !ruby/object:Gem::Version
26
- version: '10.3'
41
+ version: '13.2'
27
42
  - !ruby/object:Gem::Dependency
28
- name: pry
43
+ name: rdoc
29
44
  requirement: !ruby/object:Gem::Requirement
30
45
  requirements:
31
46
  - - "~>"
32
47
  - !ruby/object:Gem::Version
33
- version: '0.10'
48
+ version: '6.11'
34
49
  type: :development
35
50
  prerelease: false
36
51
  version_requirements: !ruby/object:Gem::Requirement
37
52
  requirements:
38
53
  - - "~>"
39
54
  - !ruby/object:Gem::Version
40
- version: '0.10'
55
+ version: '6.11'
41
56
  - !ruby/object:Gem::Dependency
42
- name: minitest
57
+ name: rubocop
43
58
  requirement: !ruby/object:Gem::Requirement
44
59
  requirements:
45
60
  - - "~>"
46
61
  - !ruby/object:Gem::Version
47
- version: '5.4'
62
+ version: 1.80.2
48
63
  type: :development
49
64
  prerelease: false
50
65
  version_requirements: !ruby/object:Gem::Requirement
51
66
  requirements:
52
67
  - - "~>"
53
68
  - !ruby/object:Gem::Version
54
- version: '5.4'
69
+ version: 1.80.2
55
70
  - !ruby/object:Gem::Dependency
56
- name: coveralls
71
+ name: rubocop-performance
57
72
  requirement: !ruby/object:Gem::Requirement
58
73
  requirements:
59
74
  - - "~>"
60
75
  - !ruby/object:Gem::Version
61
- version: '0.7'
76
+ version: 1.26.0
62
77
  type: :development
63
78
  prerelease: false
64
79
  version_requirements: !ruby/object:Gem::Requirement
65
80
  requirements:
66
81
  - - "~>"
67
82
  - !ruby/object:Gem::Version
68
- version: '0.7'
83
+ version: 1.26.0
69
84
  - !ruby/object:Gem::Dependency
70
- name: rubocop
85
+ name: rubocop-rake
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: 0.7.1
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: 0.7.1
98
+ - !ruby/object:Gem::Dependency
99
+ name: simplecov
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - "~>"
103
+ - !ruby/object:Gem::Version
104
+ version: 0.22.0
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: 0.22.0
112
+ - !ruby/object:Gem::Dependency
113
+ name: simplecov-lcov
71
114
  requirement: !ruby/object:Gem::Requirement
72
115
  requirements:
73
116
  - - "~>"
74
117
  - !ruby/object:Gem::Version
75
- version: 0.49.1
118
+ version: '0.8'
76
119
  type: :development
77
120
  prerelease: false
78
121
  version_requirements: !ruby/object:Gem::Requirement
79
122
  requirements:
80
123
  - - "~>"
81
124
  - !ruby/object:Gem::Version
82
- version: 0.49.1
83
- description:
125
+ version: '0.8'
84
126
  email:
127
+ - hainesr@gmail.com
128
+ - jdleesmiller@gmail.com
85
129
  - alex@simonov.me
86
130
  executables: []
87
131
  extensions: []
88
132
  extra_rdoc_files: []
89
133
  files:
134
+ - Changelog.md
135
+ - LICENSE.md
90
136
  - README.md
91
137
  - Rakefile
92
- - TODO
138
+ - lib/rubyzip.rb
93
139
  - lib/zip.rb
94
140
  - lib/zip/central_directory.rb
95
141
  - lib/zip/compressor.rb
96
142
  - lib/zip/constants.rb
143
+ - lib/zip/crypto/aes_encryption.rb
144
+ - lib/zip/crypto/decrypted_io.rb
97
145
  - lib/zip/crypto/encryption.rb
98
146
  - lib/zip/crypto/null_encryption.rb
99
147
  - lib/zip/crypto/traditional_encryption.rb
100
148
  - lib/zip/decompressor.rb
101
149
  - lib/zip/deflater.rb
150
+ - lib/zip/dirtyable.rb
102
151
  - lib/zip/dos_time.rb
103
152
  - lib/zip/entry.rb
104
153
  - lib/zip/entry_set.rb
105
154
  - lib/zip/errors.rb
106
155
  - lib/zip/extra_field.rb
156
+ - lib/zip/extra_field/aes.rb
107
157
  - lib/zip/extra_field/generic.rb
108
158
  - lib/zip/extra_field/ntfs.rb
109
159
  - lib/zip/extra_field/old_unix.rb
110
160
  - lib/zip/extra_field/universal_time.rb
111
161
  - lib/zip/extra_field/unix.rb
162
+ - lib/zip/extra_field/unknown.rb
112
163
  - lib/zip/extra_field/zip64.rb
113
- - lib/zip/extra_field/zip64_placeholder.rb
114
164
  - lib/zip/file.rb
165
+ - lib/zip/file_split.rb
115
166
  - lib/zip/filesystem.rb
167
+ - lib/zip/filesystem/dir.rb
168
+ - lib/zip/filesystem/directory_iterator.rb
169
+ - lib/zip/filesystem/file.rb
170
+ - lib/zip/filesystem/file_stat.rb
171
+ - lib/zip/filesystem/zip_file_name_mapper.rb
116
172
  - lib/zip/inflater.rb
117
173
  - lib/zip/input_stream.rb
118
174
  - lib/zip/ioextras.rb
@@ -127,6 +183,7 @@ files:
127
183
  - lib/zip/streamable_directory.rb
128
184
  - lib/zip/streamable_stream.rb
129
185
  - lib/zip/version.rb
186
+ - rubyzip.gemspec
130
187
  - samples/example.rb
131
188
  - samples/example_filesystem.rb
132
189
  - samples/example_recursive.rb
@@ -136,14 +193,14 @@ files:
136
193
  - samples/zipfind.rb
137
194
  homepage: http://github.com/rubyzip/rubyzip
138
195
  licenses:
139
- - BSD 2-Clause
196
+ - BSD-2-Clause
140
197
  metadata:
141
198
  bug_tracker_uri: https://github.com/rubyzip/rubyzip/issues
142
- changelog_uri: https://github.com/rubyzip/rubyzip/blob/v2.1.0/Changelog.md
143
- documentation_uri: https://www.rubydoc.info/gems/rubyzip/2.1.0
144
- source_code_uri: https://github.com/rubyzip/rubyzip/tree/v2.1.0
199
+ changelog_uri: https://github.com/rubyzip/rubyzip/blob/v3.6.0/Changelog.md
200
+ documentation_uri: https://www.rubydoc.info/gems/rubyzip/3.6.0
201
+ source_code_uri: https://github.com/rubyzip/rubyzip/tree/v3.6.0
145
202
  wiki_uri: https://github.com/rubyzip/rubyzip/wiki
146
- post_install_message:
203
+ rubygems_mfa_required: 'true'
147
204
  rdoc_options: []
148
205
  require_paths:
149
206
  - lib
@@ -151,15 +208,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
151
208
  requirements:
152
209
  - - ">="
153
210
  - !ruby/object:Gem::Version
154
- version: '2.4'
211
+ version: '3.0'
155
212
  required_rubygems_version: !ruby/object:Gem::Requirement
156
213
  requirements:
157
214
  - - ">="
158
215
  - !ruby/object:Gem::Version
159
216
  version: '0'
160
217
  requirements: []
161
- rubygems_version: 3.0.3
162
- signing_key:
218
+ rubygems_version: 4.0.17
163
219
  specification_version: 4
164
220
  summary: rubyzip is a ruby module for reading and writing zip files
165
221
  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