Skip to content

Commit 73b7f38

Browse files
committed
FIX: Munge - replaced ZIP unarchive code with R3's ZIP codec
1 parent 13d7c9e commit 73b7f38

File tree

1 file changed

+4
-54
lines changed

1 file changed

+4
-54
lines changed

src/modules/munge3.reb

+4-54
Original file line numberDiff line numberDiff line change
@@ -1504,60 +1504,10 @@ ctx-munge: context [
15041504
settings/error reform [source "is not a ZIP file"]
15051505
]
15061506
true [
1507-
1508-
to-int: function [b][to integer! reverse copy b]
1509-
1510-
blk: make block! 32
1511-
1512-
extract: either zero? source/8 [[
1513-
; Local file header - CRC-32, Compressed & Uncompressed fields precede data
1514-
data: compressed-size skip
1515-
]][[
1516-
; Data descriptor - data precedes CRC-32, Compressed & Uncompressed fields
1517-
copy data to #{504B0708} 4 skip
1518-
copy crc 4 skip
1519-
copy compressed-size 4 skip (compressed-size: to-int compressed-size)
1520-
copy size 4 skip
1521-
]]
1522-
1523-
rule: [
1524-
some [
1525-
#{504B0304} 4 skip
1526-
copy method 2 skip
1527-
4 skip
1528-
copy crc 4 skip
1529-
copy compressed-size 4 skip (compressed-size: to-int compressed-size)
1530-
copy size 4 skip
1531-
copy name-length 2 skip (name-length: to-int name-length)
1532-
copy extrafield-length 2 skip (extrafield-length: to-int extrafield-length)
1533-
copy name name-length skip (name: to-rebol-file to file! name)
1534-
extrafield-length skip
1535-
extract
1536-
(
1537-
append blk case [
1538-
info [reduce [name to-int size]]
1539-
#"/" = last name [reduce [name none]]
1540-
#{00000000} = to binary! size [reduce [name make binary! 0]]
1541-
#{0000} = to binary! method [reduce [name to binary! copy/part data compressed-size]]
1542-
true [
1543-
reduce [
1544-
name
1545-
decompress/gzip rejoin [#{789C} copy/part data compressed-size reverse crc size]
1546-
]
1547-
]
1548-
]
1549-
if all [only name = file] [
1550-
all [settings/console settings/exited]
1551-
return last blk
1552-
]
1553-
)
1554-
]
1555-
to end
1556-
]
1557-
1558-
parse source rule
1559-
1560-
either only [none] [blk]
1507+
either only [
1508+
tmp: codecs/zip/decode/only source to block! file
1509+
tmp/2/3 ; retuns only decompressed data
1510+
][ codecs/zip/decode source ]
15611511
]
15621512
]
15631513

0 commit comments

Comments
 (0)