rubyzip 2.4.1 → 3.0.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Changelog.md +419 -0
- data/LICENSE.md +24 -0
- data/README.md +137 -37
- 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 +43 -4
- data/lib/zip/entry.rb +333 -242
- 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 +166 -264
- 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 +7 -5
- data/lib/zip/input_stream.rb +50 -50
- data/lib/zip/ioextras/abstract_input_stream.rb +16 -11
- 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 +55 -56
- 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 +18 -22
- 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 +87 -51
- data/TODO +0 -15
- data/lib/zip/extra_field/zip64_placeholder.rb +0 -15
data/lib/zip/dos_time.rb
CHANGED
@@ -1,5 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
|
1
5
|
module Zip
|
2
|
-
class DOSTime < Time
|
6
|
+
class DOSTime < Time # :nodoc:all
|
3
7
|
# MS-DOS File Date and Time format as used in Interrupt 21H Function 57H:
|
4
8
|
|
5
9
|
# Register CX, the Time:
|
@@ -12,6 +16,14 @@ module Zip
|
|
12
16
|
# bits 5-8 month (1-12)
|
13
17
|
# bits 9-15 year (four digit year minus 1980)
|
14
18
|
|
19
|
+
attr_writer :absolute_time # :nodoc:
|
20
|
+
|
21
|
+
def absolute_time?
|
22
|
+
# If absolute time is not set, we can assume it is an absolute time
|
23
|
+
# because times do have timezone information by default.
|
24
|
+
@absolute_time.nil? ? true : @absolute_time
|
25
|
+
end
|
26
|
+
|
15
27
|
def to_binary_dos_time
|
16
28
|
(sec / 2) +
|
17
29
|
(min << 5) +
|
@@ -25,8 +37,7 @@ module Zip
|
|
25
37
|
end
|
26
38
|
|
27
39
|
def dos_equals(other)
|
28
|
-
Zip
|
29
|
-
|
40
|
+
warn 'Zip::DOSTime#dos_equals is deprecated. Use `==` instead.'
|
30
41
|
self == other
|
31
42
|
end
|
32
43
|
|
@@ -50,7 +61,35 @@ module Zip
|
|
50
61
|
month = (0b111100000 & bin_dos_date) >> 5
|
51
62
|
year = ((0b1111111000000000 & bin_dos_date) >> 9) + 1980
|
52
63
|
|
53
|
-
local(year, month, day, hour, minute, second)
|
64
|
+
time = local(year, month, day, hour, minute, second)
|
65
|
+
time.absolute_time = false
|
66
|
+
time
|
67
|
+
end
|
68
|
+
|
69
|
+
if defined? JRUBY_VERSION && Gem::Version.new(JRUBY_VERSION) < '9.2.18.0'
|
70
|
+
module JRubyCMP # :nodoc:
|
71
|
+
def ==(other)
|
72
|
+
(self <=> other).zero?
|
73
|
+
end
|
74
|
+
|
75
|
+
def <(other)
|
76
|
+
(self <=> other).negative?
|
77
|
+
end
|
78
|
+
|
79
|
+
def <=(other)
|
80
|
+
(self <=> other) <= 0
|
81
|
+
end
|
82
|
+
|
83
|
+
def >(other)
|
84
|
+
(self <=> other).positive?
|
85
|
+
end
|
86
|
+
|
87
|
+
def >=(other)
|
88
|
+
(self <=> other) >= 0
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
include JRubyCMP
|
54
93
|
end
|
55
94
|
end
|
56
95
|
end
|