@@ -1504,60 +1504,10 @@ ctx-munge: context [
1504
1504
settings/error reform [source "is not a ZIP file" ]
1505
1505
]
1506
1506
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 ]
1561
1511
]
1562
1512
]
1563
1513
0 commit comments