11
22
3- local function bxor (a ,b ) return a ~ b end
4- local function band (a ,b ) return a & b end
5- local function bor (a ,b ) return a | b end
6- local function lshift (a ,b ) return a << b end
7- local function rshift (a ,b ) return a >> b end
8-
93local function newbitstream (data )
104 local pos , bitbuf , bitcnt = 1 , 0 , 0
115 local function needbits (n )
126 while bitcnt < n do
137 local b = data :byte (pos ) or 0
148 pos = pos + 1
15- bitbuf = bitbuf + lshift ( b , bitcnt )
9+ bitbuf = bitbuf + ( b << bitcnt )
1610 bitcnt = bitcnt + 8
1711 end
1812 end
1913 local function readbits (n )
2014 needbits (n )
21- local v = band ( bitbuf , (1 << n ) - 1 )
22- bitbuf = rshift (bitbuf , n )
15+ local v = bitbuf & ( (1 << n ) - 1 )
16+ bitbuf = (bitbuf >> n )
2317 bitcnt = bitcnt - n
2418 return v
2519 end
3125
3226local function revbits (x , bits )
3327 local y = 0
34- for i = 1 , bits do
28+ for _ = 1 , bits do
3529 y = (y << 1 ) | (x & 1 )
3630 x = x >> 1
3731 end
@@ -70,7 +64,7 @@ local function read_huff(bs, h)
7064 local code = 0
7165 for len = 1 , h .max do
7266 code = code | (bs .readbits (1 ) << (len - 1 ))
73- local masked = band ( code , (1 << len ) - 1 )
67+ local masked = code & ( (1 << len ) - 1 )
7468 local e = h .tab [masked ]
7569 if e and e .len == len then return e .sym end
7670 end
@@ -103,10 +97,9 @@ local function inflate(data)
10397 bs .align ()
10498 local p = bs .pos ()
10599 local function le16 (s , i )
106- local a ,b = s :byte (i ,i + 1 ); return a + b * 256
100+ local a ,b = s :byte (i ,i + 1 ) return a + b * 256
107101 end
108- local len = le16 (data , p )
109- local nlen = le16 (data , p + 2 )
102+ local len , _ = le16 (data , p ), le16 (data , p + 2 )
110103 bs .skip (4 ) -- consume LEN and NLEN
111104 local s = data :sub (bs .pos (), bs .pos () + len - 1 )
112105 append_str (s )
@@ -198,8 +191,7 @@ local function inflate(data)
198191 local base_index = outpos - distval
199192 for i = 1 , length do
200193 -- copy byte-by-byte (handles overlaps correctly)
201- local bytechar = out [base_index + i ]
202- append_byte (bytechar :byte ())
194+ append_byte (out [base_index + i ]:byte ())
203195 end
204196 end
205197 end
@@ -216,14 +208,12 @@ end
216208local function crc32 (s )
217209 local crc = 0xFFFFFFFF
218210 for i = 1 , # s do
219- local b = s :byte (i )
220- crc = bxor (crc , b )
211+ crc = crc ~ s :byte (i )
221212 for _ = 1 , 8 do
222- local mask = - (crc & 1 )
223- crc = bxor (rshift (crc ,1 ), band (0xEDB88320 , mask ))
213+ crc = (crc >> 1 ) ~ (0xEDB88320 & (- (crc & 1 )))
224214 end
225215 end
226- return bxor ( crc , 0xFFFFFFFF )
216+ return crc ~ 0xFFFFFFFF
227217end
228218
229219local function le16 (s , i ) local a ,b = s :byte (i ,i + 1 ); return a + b * 256 end
@@ -238,8 +228,8 @@ local function unzip(path)
238228 local pos = 1
239229 while true do
240230 if data :sub (pos , pos + 3 ) ~= " PK\3\4 " then break end
241- local version_needed = le16 (data , pos + 4 )
242- local flags = le16 (data , pos + 6 )
231+ local _ = le16 (data , pos + 4 )
232+ local _ = le16 (data , pos + 6 )
243233 local cm = le16 (data , pos + 8 )
244234 local crc_expected = le32 (data , pos + 14 )
245235 local comp_size = le32 (data , pos + 18 )
0 commit comments