Skip to content

Commit 8430c11

Browse files
authored
Add zip_version_made_by function (#103)
1 parent 0630e21 commit 8430c11

File tree

4 files changed

+23
-1
lines changed

4 files changed

+23
-1
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "ZipArchives"
22
uuid = "49080126-0e18-4c2a-b176-c102e4b3760c"
33
authors = ["nhz2 <[email protected]>"]
4-
version = "2.5.1"
4+
version = "2.6.0-dev"
55

66
[deps]
77
ArgCheck = "dce04be8-c92d-5529-be00-80e4d2c0e197"

src/ZipArchives.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ export zip_findlast_entry
7979
export zip_comment
8080
export zip_compression_method
8181
export zip_general_purpose_bit_flag
82+
export zip_version_made_by
8283
export zip_entry_data_offset
8384

8485
export zip_test_entry

src/reader.jl

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,19 @@ for a description of the bits.
161161
"""
162162
zip_general_purpose_bit_flag(x::HasEntries, i::Integer)::UInt16 = x.entries[i].bit_flags
163163

164+
"""
165+
zip_version_made_by(x::HasEntries, i::Integer)::UInt16
166+
167+
Return the "version made by" field for entry `i`.
168+
169+
See https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT
170+
for a description of this field.
171+
"""
172+
function zip_version_made_by(x::HasEntries, i::Integer)::UInt16
173+
e = x.entries[i]
174+
UInt16(e.version_made) | UInt16(e.os)<<8
175+
end
176+
164177
"""
165178
zip_iscompressed(x::HasEntries, i::Integer)::Bool
166179

test/test_reader.jl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,14 @@ end
170170
@test zip_compressed_size(r, 1) === UInt64(compressed_size)
171171
end
172172

173+
@testset "version made by" begin
174+
testdata = joinpath(@__DIR__,"examples from go/testdata/")
175+
r = ZipReader(read(joinpath(testdata, "utf8-osx.zip")))
176+
@test zip_version_made_by(r, 1) === 0x0315
177+
r = ZipReader(read(joinpath(testdata, "utf8-7zip.zip")))
178+
@test zip_version_made_by(r, 1) === 0x003f
179+
end
180+
173181
@testset "reading file with zip64 disk number" begin
174182
invalid_data1 = b"PK\x03\x04-\0\0\b\0\0\0\0\0\0\x13\xec\x8d_\xff\xff\xff\xff\xff\xff\xff\xff\x04\0\x14\0test\x01\0\x10\0\t\0\0\0\0\0\0\0\t\0\0\0\0\0\0\0file dataPK\x01\x02?\x03-\0\0\b\0\0\0\0\0\0\x13\xec\x8d_\xff\xff\xff\xff\xff\xff\xff\xff\x04\0 \0\0\0\xff\xff\0\0\0\0\xa4\x81\xff\xff\xff\xfftest\x01\0\x18\0\t\0\0\0\0\0\0\0\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0PK\x06\x06,\0\0\0\0\0\0\0?\x03-\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0R\0\0\0\0\0\0\0?\0\0\0\0\0\0\0PK\x06\a\0\0\0\0\x91\0\0\0\0\0\0\0\x01\0\0\0PK\x05\x06\0\0\0\0\x01\0\x01\0R\0\0\0?\0\0\0\0\0"
175183
invalid_data2 = b"PK\x03\x04-\0\0\b\0\0\0\0\0\0\x13\xec\x8d_\xff\xff\xff\xff\xff\xff\xff\xff\x04\0\x14\0test\x01\0\x10\0\t\0\0\0\0\0\0\0\t\0\0\0\0\0\0\0file dataPK\x01\x02?\x03-\0\0\b\0\0\0\0\0\0\x13\xec\x8d_\xff\xff\xff\xff\xff\xff\xff\xff\x04\0 \0\0\0\xff\xff\0\0\0\0\xa4\x81\xff\xff\xff\xfftest\x01\0\x18\0\t\0\0\0\0\0\0\0\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0PK\x06\x06,\0\0\0\0\0\0\0?\x03-\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0R\0\0\0\0\0\0\0?\0\0\0\0\0\0\0PK\x06\a\0\0\0\0\x91\0\0\0\0\0\0\0\x01\0\0\0PK\x05\x06\0\0\0\0\x01\0\x01\0R\0\0\0?\0\0\0\0\0"

0 commit comments

Comments
 (0)