summaryrefslogtreecommitdiff
path: root/scripts/context/lua/mtxrun.lua
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/context/lua/mtxrun.lua')
-rw-r--r--scripts/context/lua/mtxrun.lua256
1 files changed, 151 insertions, 105 deletions
diff --git a/scripts/context/lua/mtxrun.lua b/scripts/context/lua/mtxrun.lua
index c32050c3f..90674eacc 100644
--- a/scripts/context/lua/mtxrun.lua
+++ b/scripts/context/lua/mtxrun.lua
@@ -1201,7 +1201,7 @@ do -- create closure to overcome 200 locals limit
package.loaded["l-lpeg"] = package.loaded["l-lpeg"] or true
--- original size: 38735, stripped down to: 19489
+-- original size: 38747, stripped down to: 19489
if not modules then modules={} end modules ['l-lpeg']={
version=1.001,
@@ -3837,7 +3837,7 @@ do -- create closure to overcome 200 locals limit
package.loaded["l-os"] = package.loaded["l-os"] or true
--- original size: 19410, stripped down to: 10420
+-- original size: 19423, stripped down to: 10421
if not modules then modules={} end modules ['l-os']={
version=1.001,
@@ -3969,7 +3969,7 @@ end
local execute=os.execute
local iopopen=io.popen
local function resultof(command)
- local handle=iopopen(command,"r")
+ local handle=iopopen(command,"rb")
if handle then
local result=handle:read("*all") or ""
handle:close()
@@ -4714,7 +4714,7 @@ do -- create closure to overcome 200 locals limit
package.loaded["l-gzip"] = package.loaded["l-gzip"] or true
--- original size: 5115, stripped down to: 1699
+-- original size: 268, stripped down to: 216
if not modules then modules={} end modules ['l-gzip']={
version=1.001,
@@ -4722,76 +4722,6 @@ if not modules then modules={} end modules ['l-gzip']={
copyright="PRAGMA ADE / ConTeXt Development Team",
license="see context related readme files"
}
-gzip=gzip or {}
-if not zlib then
- zlib=xzip
-elseif not xzip then
- xzip=zlib
-end
-if zlib then
- local suffix=file.suffix
- local suffixes=file.suffixes
- local find=string.find
- local openfile=io.open
- local gzipwindow=15+16
- local gziplevel=3
- local identifier="^\x1F\x8B\x08"
- local compress=zlib.compress
- local decompress=zlib.decompress
- function gzip.load(filename)
- local f=openfile(filename,"rb")
- if not f then
- else
- local data=f:read("*all")
- f:close()
- if data and data~="" then
- if suffix(filename)=="gz" then
- data=decompress(data,gzipwindow)
- end
- return data
- end
- end
- end
- function gzip.save(filename,data,level)
- if suffix(filename)~="gz" then
- filename=filename..".gz"
- end
- local f=openfile(filename,"wb")
- if f then
- data=compress(data or "",level or gziplevel,nil,gzipwindow)
- f:write(data)
- f:close()
- return #data
- end
- end
- function gzip.suffix(filename)
- local suffix,extra=suffixes(filename)
- local gzipped=extra=="gz"
- return suffix,gzipped
- end
- function gzip.compressed(s)
- return s and find(s,identifier)
- end
- function gzip.compress(s,level)
- if s and not find(s,identifier) then
- if not level then
- level=gziplevel
- elseif level<=0 then
- return s
- elseif level>9 then
- level=9
- end
- return compress(s,level or gziplevel,nil,gzipwindow) or s
- end
- end
- function gzip.decompress(s)
- if s and find(s,identifier) then
- return decompress(s,gzipwindow)
- else
- return s
- end
- end
-end
end -- of closure
@@ -8285,7 +8215,7 @@ do -- create closure to overcome 200 locals limit
package.loaded["util-fil"] = package.loaded["util-fil"] or true
--- original size: 11552, stripped down to: 9023
+-- original size: 11474, stripped down to: 8973
if not modules then modules={} end modules ['util-fil']={
version=1.001,
@@ -8452,20 +8382,20 @@ function files.readinteger4le(f)
end
end
function files.readfixed2(f)
- local a,b=byte(f:read(2),1,2)
- if a>=0x80 then
- tonumber((a-0x100).."."..b)
- else
- tonumber((a ).."."..b)
+ local n1,n2=byte(f:read(2),1,2)
+ if n1>=0x80 then
+ n1=n1-0x100
end
+ return n1+n2/0xFF
end
function files.readfixed4(f)
local a,b,c,d=byte(f:read(4),1,4)
- if a>=0x80 then
- tonumber((0x100*a+b-0x10000).."."..(0x100*c+d))
- else
- tonumber((0x100*a+b ).."."..(0x100*c+d))
+ local n1=0x100*a+b
+ local n2=0x100*c+d
+ if n1>=0x8000 then
+ n1=n1-0x10000
end
+ return n1+n2/0xFFFF
end
if bit32 then
local extract=bit32.extract
@@ -8654,7 +8584,7 @@ do -- create closure to overcome 200 locals limit
package.loaded["util-sac"] = package.loaded["util-sac"] or true
--- original size: 12970, stripped down to: 9525
+-- original size: 12905, stripped down to: 9439
if not modules then modules={} end modules ['util-sac']={
version=1.001,
@@ -8881,23 +8811,23 @@ function streams.readfixed2(f)
local i=f[2]
local j=i+1
f[2]=j+1
- local a,b=byte(f[1],i,j)
- if a>=0x80 then
- return tonumber((a-0x100).."."..b) or 0
- else
- return tonumber((a ).."."..b) or 0
+ local n1,n2=byte(f[1],i,j)
+ if n1>=0x80 then
+ n1=n1-0x100
end
+ return n1+n2/0xFF
end
function streams.readfixed4(f)
local i=f[2]
local j=i+3
f[2]=j+1
local a,b,c,d=byte(f[1],i,j)
- if a>=0x80 then
- return tonumber((0x100*a+b-0x10000).."."..(0x100*c+d)) or 0
- else
- return tonumber((0x100*a+b ).."."..(0x100*c+d)) or 0
+ local n1=0x100*a+b
+ local n2=0x100*c+d
+ if n1>=0x8000 then
+ n1=n1-0x10000
end
+ return n1+n2/0xFFFF
end
if bit32 then
local extract=bit32.extract
@@ -9095,10 +9025,10 @@ do
function io.newreader(str,method)
local f,m
if method=="string" then
- f=openstring(str)
+ f=openstring(str,true)
m=streams
elseif method=="stream" then
- f=openstream(str)
+ f=openstream(str,true)
m=streams
else
f=openfile(str,"rb")
@@ -15774,7 +15704,7 @@ do -- create closure to overcome 200 locals limit
package.loaded["util-zip"] = package.loaded["util-zip"] or true
--- original size: 19324, stripped down to: 10821
+-- original size: 23162, stripped down to: 13844
if not modules then modules={} end modules ['util-zip']={
version=1.001,
@@ -15789,6 +15719,12 @@ local osdate,ostime,osclock=os.date,os.time,os.clock
local ioopen=io.open
local loaddata,savedata=io.loaddata,io.savedata
local filejoin,isdir,dirname,mkdirs=file.join,lfs.isdir,file.dirname,dir.mkdirs
+gzip=gzip or {}
+if not zlib then
+ zlib=xzip
+elseif not xzip then
+ xzip=zlib
+end
local files=utilities.files
local openfile=files.open
local closefile=files.close
@@ -16195,6 +16131,116 @@ if xzip then
zipfiles.zipdir=zipdir
zipfiles.unzipdir=unzipdir
end
+if not gzip.compress then
+ local suffix=file.suffix
+ local suffixes=file.suffixes
+ local find=string.find
+ local concat=table.concat
+ local openfile=io.open
+ local gzipwindow=-15
+ local gziplevel=3
+ local identifier="\x1F\x8B"
+ local pattern="^\x1F\x8B\x08"
+ local compress=zlib.compress
+ local decompress=zlib.decompress
+ local crc32=zlib.crc32
+ local streams=utilities.streams
+ local openstream=streams.openstring
+ local closestream=streams.close
+ local getposition=streams.getposition
+ local readbyte=streams.readbyte
+ local readcardinal4=streams.readcardinal4le
+ local readcardinal2=streams.readcardinal2le
+ local readstring=streams.readstring
+ local readcstring=streams.readcstring
+ local skipbytes=streams.skip
+ local tocardinal1=streams.tocardinal1
+ local tocardinal4=streams.tocardinal4le
+ local function getdecompressed(str)
+ local s=openstream(str)
+ local identifier=readstring(s,2)
+ local method=readbyte(s,1)
+ local flags=readbyte(s,1)
+ local timestamp=readcardinal4(s)
+ local compression=readbyte(s,1)
+ local operating=readbyte(s,1)
+ local isjusttext=(flags & 0x01~=0) and true or false
+ local extrasize=(flags & 0x04~=0) and readcardinal2(s) or 0
+ local filename=(flags & 0x08~=0) and readcstring(s) or ""
+ local comment=(flags & 0x10~=0) and readcstring(s) or ""
+ local checksum=(flags & 0x02~=0) and readcardinal2(s) or 0
+ local compressed=readstring(s,#str)
+ local data=decompress(compressed,gzipwindow)
+ return data
+ end
+ local function putcompressed(str,level,originalname)
+ return concat {
+ identifier,
+ tocardinal1(0x08),
+ tocardinal1(0x08),
+ tocardinal4(os.time()),
+ tocardinal1(0x02),
+ tocardinal1(0xFF),
+ (originalname or "unknownname").."\0",
+ compress(str,level,nil,gzipwindow),
+ tocardinal4(crc32(str)),
+ tocardinal4(#str),
+ }
+ end
+ function gzip.load(filename)
+ local f=openfile(filename,"rb")
+ if not f then
+ else
+ local data=f:read("*all")
+ f:close()
+ if data and data~="" then
+ if suffix(filename)=="gz" then
+ data=getdecompressed(data)
+ end
+ return data
+ end
+ end
+ end
+ function gzip.save(filename,data,level,originalname)
+ if suffix(filename)~="gz" then
+ filename=filename..".gz"
+ end
+ local f=openfile(filename,"wb")
+ if f then
+ data=putcompressed(data or "",level or gziplevel,originalname)
+ f:write(data)
+ f:close()
+ return #data
+ end
+ end
+ function gzip.suffix(filename)
+ local suffix,extra=suffixes(filename)
+ local gzipped=extra=="gz"
+ return suffix,gzipped
+ end
+ function gzip.compressed(s)
+ return s and find(s,identifier)
+ end
+ function gzip.compress(s,level)
+ if s and not find(s,identifier) then
+ if not level then
+ level=gziplevel
+ elseif level<=0 then
+ return s
+ elseif level>9 then
+ level=9
+ end
+ return putcompressed(s,level or gziplevel) or s
+ end
+ end
+ function gzip.decompress(s)
+ if s and find(s,identifier) then
+ return getdecompressed(s)
+ else
+ return s
+ end
+ end
+end
zipfiles.gunzipfile=gzip.load
@@ -24134,7 +24180,7 @@ do -- create closure to overcome 200 locals limit
package.loaded["data-use"] = package.loaded["data-use"] or true
--- original size: 5785, stripped down to: 2905
+-- original size: 5806, stripped down to: 2925
if not modules then modules={} end modules ['data-use']={
version=1.001,
@@ -24164,14 +24210,14 @@ function statistics.savefmtstatus(texname,formatbanner,sourcefile,banner)
functionality=LUATEXFUNCTIONALITY,
}
io.savedata(luvname,table.serialize(luvdata,true))
- lua.registerfinalizer(function()
+ lua.registerinitexfinalizer(function()
if jit then
logs.report("format banner","%s lua: %s jit",banner,LUAVERSION)
else
logs.report("format banner","%s lua: %s",banner,LUAVERSION)
end
logs.newline()
- end)
+ end,"show banner")
end
end
function statistics.checkfmtstatus(texname)
@@ -24222,7 +24268,7 @@ do -- create closure to overcome 200 locals limit
package.loaded["data-zip"] = package.loaded["data-zip"] or true
--- original size: 10725, stripped down to: 7949
+-- original size: 10805, stripped down to: 7951
if not modules then modules={} end modules ['data-zip']={
version=1.001,
@@ -24265,10 +24311,10 @@ if zipfiles then
local openstream=streams.open
local readstring=streams.readstring
local streamsize=streams.size
- local metatable={
+ local metatable={
close=streams.close,
read=function(stream,n)
- readstring(stream,n=="*a" and streamsize(stream) or n)
+ readstring(stream,n=="*a" and streamsize(stream) or n)
end
}
filehandle=function(zfile,queryname)
@@ -25850,8 +25896,8 @@ end -- of closure
-- used libraries : l-bit32.lua l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-sha.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua util-soc-imp-reset.lua util-soc-imp-socket.lua util-soc-imp-copas.lua util-soc-imp-ltn12.lua util-soc-imp-mime.lua util-soc-imp-url.lua util-soc-imp-headers.lua util-soc-imp-tp.lua util-soc-imp-http.lua util-soc-imp-ftp.lua util-soc-imp-smtp.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua util-zip.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua libs-ini.lua luat-sta.lua luat-fmt.lua
-- skipped libraries : -
--- original bytes : 1025323
--- stripped bytes : 404592
+-- original bytes : 1024297
+-- stripped bytes : 402139
-- end library merge