From 6339e51588b3e9162d1a12206a96ae5dde5364ab Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 28 Jun 2020 21:34:37 +0000 Subject: oops, pdftexcmds.lua in runtime git-svn-id: svn://tug.org/texlive/trunk@55693 c570f23f-e606-0410-a88d-b1316a301751 --- .../doc/generic/pdftexcmds/pdftexcmds.lua | 375 --------------------- .../tex/generic/pdftexcmds/pdftexcmds.lua | 375 +++++++++++++++++++++ 2 files changed, 375 insertions(+), 375 deletions(-) delete mode 100644 Master/texmf-dist/doc/generic/pdftexcmds/pdftexcmds.lua create mode 100644 Master/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.lua (limited to 'Master/texmf-dist') diff --git a/Master/texmf-dist/doc/generic/pdftexcmds/pdftexcmds.lua b/Master/texmf-dist/doc/generic/pdftexcmds/pdftexcmds.lua deleted file mode 100644 index 593ddced020..00000000000 --- a/Master/texmf-dist/doc/generic/pdftexcmds/pdftexcmds.lua +++ /dev/null @@ -1,375 +0,0 @@ --- --- This is file `pdftexcmds.lua', --- generated with the docstrip utility. --- --- The original source files were: --- --- pdftexcmds.dtx (with options: `lua') --- --- This is a generated file. --- --- Project: pdftexcmds --- Version: 2020-06-27 v0.33 --- --- Copyright (C) --- 2007, 2009-2011 Heiko Oberdiek --- 2016-2019 Oberdiek Package Support Group --- --- This work may be distributed and/or modified under the --- conditions of the LaTeX Project Public License, either --- version 1.3c of this license or (at your option) any later --- version. This version of this license is in --- https://www.latex-project.org/lppl/lppl-1-3c.txt --- and the latest version of this license is in --- https://www.latex-project.org/lppl.txt --- and version 1.3 or later is part of all distributions of --- LaTeX version 2005/12/01 or later. --- --- This work has the LPPL maintenance status "maintained". --- --- The Current Maintainers of this work are --- Heiko Oberdiek and the Oberdiek Package Support Group --- https://github.com/ho-tex/pdftexcmds/issues --- --- The Base Interpreter refers to any `TeX-Format', --- because some files are installed in TDS:tex/generic//. --- --- This work consists of the main source file pdftexcmds.dtx --- and the derived files --- pdftexcmds.sty, pdftexcmds.pdf, pdftexcmds.ins, pdftexcmds.drv, --- pdftexcmds.lua. --- -oberdiek = oberdiek or {} -local pdftexcmds = oberdiek.pdftexcmds or {} -oberdiek.pdftexcmds = pdftexcmds -local systemexitstatus -function pdftexcmds.getversion() - tex.write("2020-06-27 v0.33") -end -function pdftexcmds.strcmp(A, B) - if A == B then - tex.write("0") - elseif A < B then - tex.write("-1") - else - tex.write("1") - end -end -local function utf8_to_byte(str) - local i = 0 - local n = string.len(str) - local t = {} - while i < n do - i = i + 1 - local a = string.byte(str, i) - if a < 128 then - table.insert(t, string.char(a)) - else - if a >= 192 and i < n then - i = i + 1 - local b = string.byte(str, i) - if b < 128 or b >= 192 then - i = i - 1 - elseif a == 194 then - table.insert(t, string.char(b)) - elseif a == 195 then - table.insert(t, string.char(b + 64)) - end - end - end - end - return table.concat(t) -end -function pdftexcmds.escapehex(str, mode) - if mode == "byte" then - str = utf8_to_byte(str) - end - tex.write((string.gsub(str, ".", - function (ch) - return string.format("%02X", string.byte(ch)) - end - ))) -end -function pdftexcmds.unescapehex(str, mode, patch) - local a = 0 - local first = true - local result = {} - for i = 1, string.len(str), 1 do - local ch = string.byte(str, i) - if ch >= 48 and ch <= 57 then - ch = ch - 48 - elseif ch >= 65 and ch <= 70 then - ch = ch - 55 - elseif ch >= 97 and ch <= 102 then - ch = ch - 87 - else - ch = nil - end - if ch then - if first then - a = ch * 16 - first = false - else - table.insert(result, a + ch) - first = true - end - end - end - if not first then - table.insert(result, a) - end - if patch == 1 then - local temp = {} - for i, a in ipairs(result) do - if a == 0 then - table.insert(temp, 1) - table.insert(temp, 1) - else - if a == 1 then - table.insert(temp, 1) - table.insert(temp, 2) - else - table.insert(temp, a) - end - end - end - result = temp - end - if mode == "byte" then - local utf8 = {} - for i, a in ipairs(result) do - if a < 128 then - table.insert(utf8, a) - else - if a < 192 then - table.insert(utf8, 194) - a = a - 128 - else - table.insert(utf8, 195) - a = a - 192 - end - table.insert(utf8, a + 128) - end - end - result = utf8 - end - local unpack = _G["unpack"] or table.unpack - tex.settoks(pdftexcmds.toks, string.char(unpack(result))) -end -function pdftexcmds.escapestring(str, mode) - if mode == "byte" then - str = utf8_to_byte(str) - end - tex.write((string.gsub(str, ".", - function (ch) - local b = string.byte(ch) - if b < 33 or b > 126 then - return string.format("\\%.3o", b) - end - if b == 40 or b == 41 or b == 92 then - return "\\" .. ch - end - return nil - end - ))) -end -function pdftexcmds.escapename(str, mode) - if mode == "byte" then - str = utf8_to_byte(str) - end - tex.write((string.gsub(str, ".", - function (ch) - local b = string.byte(ch) - if b == 0 then - return "" - end - if b <= 32 or b >= 127 - or b == 35 or b == 37 or b == 40 or b == 41 - or b == 47 or b == 60 or b == 62 or b == 91 - or b == 93 or b == 123 or b == 125 then - return string.format("#%.2X", b) - else - return nil - end - end - ))) -end -function pdftexcmds.filesize(filename) - local foundfile = kpse.find_file(filename, "tex", true) - if foundfile then - local size = lfs.attributes(foundfile, "size") - if size then - tex.write(size) - end - end -end -function pdftexcmds.filemoddate(filename) - local foundfile = kpse.find_file(filename, "tex", true) - if foundfile then - local date = lfs.attributes(foundfile, "modification") - if date then - local d = os.date("*t", date) - if d.sec >= 60 then - d.sec = 59 - end - local u = os.date("!*t", date) - local off = 60 * (d.hour - u.hour) + d.min - u.min - if d.year ~= u.year then - if d.year > u.year then - off = off + 1440 - else - off = off - 1440 - end - elseif d.yday ~= u.yday then - if d.yday > u.yday then - off = off + 1440 - else - off = off - 1440 - end - end - local timezone - if off == 0 then - timezone = "Z" - else - local hours = math.floor(off / 60) - local mins = math.abs(off - hours * 60) - timezone = string.format("%+03d'%02d'", hours, mins) - end - tex.write(string.format("D:%04d%02d%02d%02d%02d%02d%s", - d.year, d.month, d.day, d.hour, d.min, d.sec, timezone)) - end - end -end -function pdftexcmds.filedump(offset, length, filename) - length = tonumber(length) - if length and length > 0 then - local foundfile = kpse.find_file(filename, "tex", true) - if foundfile then - offset = tonumber(offset) - if not offset then - offset = 0 - end - local filehandle = io.open(foundfile, "rb") - if filehandle then - if offset > 0 then - filehandle:seek("set", offset) - end - local dump = filehandle:read(length) - pdftexcmds.escapehex(dump) - filehandle:close() - end - end - end -end -function pdftexcmds.mdfivesum(str, mode) - if mode == "byte" then - str = utf8_to_byte(str) - end - pdftexcmds.escapehex(md5.sum(str)) -end -function pdftexcmds.filemdfivesum(filename) - local foundfile = kpse.find_file(filename, "tex", true) - if foundfile then - local filehandle = io.open(foundfile, "rb") - if filehandle then - local contents = filehandle:read("*a") - pdftexcmds.escapehex(md5.sum(contents)) - filehandle:close() - end - end -end -local basetime = 0 -function pdftexcmds.resettimer() - basetime = os.clock() -end -function pdftexcmds.elapsedtime() - local val = (os.clock() - basetime) * 65536 + .5 - if val > 2147483647 then - val = 2147483647 - end - tex.write(string.format("%d", math.floor(val))) -end -function pdftexcmds.shellescape() - if os.execute then - if status - and status.luatex_version - and status.luatex_version >= 68 then - tex.write(os.execute()) - else - local result = os.execute() - if result == 0 then - tex.write("0") - else - if result == nil then - tex.write("0") - else - tex.write("1") - end - end - end - else - tex.write("0") - end -end -function pdftexcmds.system(cmdline) - systemexitstatus = nil - texio.write_nl("log", "system(" .. cmdline .. ") ") - if os.execute then - texio.write("log", "executed.") - systemexitstatus = os.execute(cmdline) - else - texio.write("log", "disabled.") - end -end -function pdftexcmds.lastsystemstatus() - local result = tonumber(systemexitstatus) - if result then - local x = math.floor(result / 256) - tex.write(result - 256 * math.floor(result / 256)) - end -end -function pdftexcmds.lastsystemexit() - local result = tonumber(systemexitstatus) - if result then - tex.write(math.floor(result / 256)) - end -end -function pdftexcmds.pipe(cmdline, patch) - local result - systemexitstatus = nil - texio.write_nl("log", "pipe(" .. cmdline ..") ") - if io.popen then - texio.write("log", "executed.") - local handle = io.popen(cmdline, "r") - if handle then - result = handle:read("*a") - handle:close() - end - else - texio.write("log", "disabled.") - end - if result then - if patch == 1 then - local temp = {} - for i, a in ipairs(result) do - if a == 0 then - table.insert(temp, 1) - table.insert(temp, 1) - else - if a == 1 then - table.insert(temp, 1) - table.insert(temp, 2) - else - table.insert(temp, a) - end - end - end - result = temp - end - tex.settoks(pdftexcmds.toks, result) - else - tex.settoks(pdftexcmds.toks, "") - end -end --- --- End of File `pdftexcmds.lua'. diff --git a/Master/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.lua b/Master/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.lua new file mode 100644 index 00000000000..593ddced020 --- /dev/null +++ b/Master/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.lua @@ -0,0 +1,375 @@ +-- +-- This is file `pdftexcmds.lua', +-- generated with the docstrip utility. +-- +-- The original source files were: +-- +-- pdftexcmds.dtx (with options: `lua') +-- +-- This is a generated file. +-- +-- Project: pdftexcmds +-- Version: 2020-06-27 v0.33 +-- +-- Copyright (C) +-- 2007, 2009-2011 Heiko Oberdiek +-- 2016-2019 Oberdiek Package Support Group +-- +-- This work may be distributed and/or modified under the +-- conditions of the LaTeX Project Public License, either +-- version 1.3c of this license or (at your option) any later +-- version. This version of this license is in +-- https://www.latex-project.org/lppl/lppl-1-3c.txt +-- and the latest version of this license is in +-- https://www.latex-project.org/lppl.txt +-- and version 1.3 or later is part of all distributions of +-- LaTeX version 2005/12/01 or later. +-- +-- This work has the LPPL maintenance status "maintained". +-- +-- The Current Maintainers of this work are +-- Heiko Oberdiek and the Oberdiek Package Support Group +-- https://github.com/ho-tex/pdftexcmds/issues +-- +-- The Base Interpreter refers to any `TeX-Format', +-- because some files are installed in TDS:tex/generic//. +-- +-- This work consists of the main source file pdftexcmds.dtx +-- and the derived files +-- pdftexcmds.sty, pdftexcmds.pdf, pdftexcmds.ins, pdftexcmds.drv, +-- pdftexcmds.lua. +-- +oberdiek = oberdiek or {} +local pdftexcmds = oberdiek.pdftexcmds or {} +oberdiek.pdftexcmds = pdftexcmds +local systemexitstatus +function pdftexcmds.getversion() + tex.write("2020-06-27 v0.33") +end +function pdftexcmds.strcmp(A, B) + if A == B then + tex.write("0") + elseif A < B then + tex.write("-1") + else + tex.write("1") + end +end +local function utf8_to_byte(str) + local i = 0 + local n = string.len(str) + local t = {} + while i < n do + i = i + 1 + local a = string.byte(str, i) + if a < 128 then + table.insert(t, string.char(a)) + else + if a >= 192 and i < n then + i = i + 1 + local b = string.byte(str, i) + if b < 128 or b >= 192 then + i = i - 1 + elseif a == 194 then + table.insert(t, string.char(b)) + elseif a == 195 then + table.insert(t, string.char(b + 64)) + end + end + end + end + return table.concat(t) +end +function pdftexcmds.escapehex(str, mode) + if mode == "byte" then + str = utf8_to_byte(str) + end + tex.write((string.gsub(str, ".", + function (ch) + return string.format("%02X", string.byte(ch)) + end + ))) +end +function pdftexcmds.unescapehex(str, mode, patch) + local a = 0 + local first = true + local result = {} + for i = 1, string.len(str), 1 do + local ch = string.byte(str, i) + if ch >= 48 and ch <= 57 then + ch = ch - 48 + elseif ch >= 65 and ch <= 70 then + ch = ch - 55 + elseif ch >= 97 and ch <= 102 then + ch = ch - 87 + else + ch = nil + end + if ch then + if first then + a = ch * 16 + first = false + else + table.insert(result, a + ch) + first = true + end + end + end + if not first then + table.insert(result, a) + end + if patch == 1 then + local temp = {} + for i, a in ipairs(result) do + if a == 0 then + table.insert(temp, 1) + table.insert(temp, 1) + else + if a == 1 then + table.insert(temp, 1) + table.insert(temp, 2) + else + table.insert(temp, a) + end + end + end + result = temp + end + if mode == "byte" then + local utf8 = {} + for i, a in ipairs(result) do + if a < 128 then + table.insert(utf8, a) + else + if a < 192 then + table.insert(utf8, 194) + a = a - 128 + else + table.insert(utf8, 195) + a = a - 192 + end + table.insert(utf8, a + 128) + end + end + result = utf8 + end + local unpack = _G["unpack"] or table.unpack + tex.settoks(pdftexcmds.toks, string.char(unpack(result))) +end +function pdftexcmds.escapestring(str, mode) + if mode == "byte" then + str = utf8_to_byte(str) + end + tex.write((string.gsub(str, ".", + function (ch) + local b = string.byte(ch) + if b < 33 or b > 126 then + return string.format("\\%.3o", b) + end + if b == 40 or b == 41 or b == 92 then + return "\\" .. ch + end + return nil + end + ))) +end +function pdftexcmds.escapename(str, mode) + if mode == "byte" then + str = utf8_to_byte(str) + end + tex.write((string.gsub(str, ".", + function (ch) + local b = string.byte(ch) + if b == 0 then + return "" + end + if b <= 32 or b >= 127 + or b == 35 or b == 37 or b == 40 or b == 41 + or b == 47 or b == 60 or b == 62 or b == 91 + or b == 93 or b == 123 or b == 125 then + return string.format("#%.2X", b) + else + return nil + end + end + ))) +end +function pdftexcmds.filesize(filename) + local foundfile = kpse.find_file(filename, "tex", true) + if foundfile then + local size = lfs.attributes(foundfile, "size") + if size then + tex.write(size) + end + end +end +function pdftexcmds.filemoddate(filename) + local foundfile = kpse.find_file(filename, "tex", true) + if foundfile then + local date = lfs.attributes(foundfile, "modification") + if date then + local d = os.date("*t", date) + if d.sec >= 60 then + d.sec = 59 + end + local u = os.date("!*t", date) + local off = 60 * (d.hour - u.hour) + d.min - u.min + if d.year ~= u.year then + if d.year > u.year then + off = off + 1440 + else + off = off - 1440 + end + elseif d.yday ~= u.yday then + if d.yday > u.yday then + off = off + 1440 + else + off = off - 1440 + end + end + local timezone + if off == 0 then + timezone = "Z" + else + local hours = math.floor(off / 60) + local mins = math.abs(off - hours * 60) + timezone = string.format("%+03d'%02d'", hours, mins) + end + tex.write(string.format("D:%04d%02d%02d%02d%02d%02d%s", + d.year, d.month, d.day, d.hour, d.min, d.sec, timezone)) + end + end +end +function pdftexcmds.filedump(offset, length, filename) + length = tonumber(length) + if length and length > 0 then + local foundfile = kpse.find_file(filename, "tex", true) + if foundfile then + offset = tonumber(offset) + if not offset then + offset = 0 + end + local filehandle = io.open(foundfile, "rb") + if filehandle then + if offset > 0 then + filehandle:seek("set", offset) + end + local dump = filehandle:read(length) + pdftexcmds.escapehex(dump) + filehandle:close() + end + end + end +end +function pdftexcmds.mdfivesum(str, mode) + if mode == "byte" then + str = utf8_to_byte(str) + end + pdftexcmds.escapehex(md5.sum(str)) +end +function pdftexcmds.filemdfivesum(filename) + local foundfile = kpse.find_file(filename, "tex", true) + if foundfile then + local filehandle = io.open(foundfile, "rb") + if filehandle then + local contents = filehandle:read("*a") + pdftexcmds.escapehex(md5.sum(contents)) + filehandle:close() + end + end +end +local basetime = 0 +function pdftexcmds.resettimer() + basetime = os.clock() +end +function pdftexcmds.elapsedtime() + local val = (os.clock() - basetime) * 65536 + .5 + if val > 2147483647 then + val = 2147483647 + end + tex.write(string.format("%d", math.floor(val))) +end +function pdftexcmds.shellescape() + if os.execute then + if status + and status.luatex_version + and status.luatex_version >= 68 then + tex.write(os.execute()) + else + local result = os.execute() + if result == 0 then + tex.write("0") + else + if result == nil then + tex.write("0") + else + tex.write("1") + end + end + end + else + tex.write("0") + end +end +function pdftexcmds.system(cmdline) + systemexitstatus = nil + texio.write_nl("log", "system(" .. cmdline .. ") ") + if os.execute then + texio.write("log", "executed.") + systemexitstatus = os.execute(cmdline) + else + texio.write("log", "disabled.") + end +end +function pdftexcmds.lastsystemstatus() + local result = tonumber(systemexitstatus) + if result then + local x = math.floor(result / 256) + tex.write(result - 256 * math.floor(result / 256)) + end +end +function pdftexcmds.lastsystemexit() + local result = tonumber(systemexitstatus) + if result then + tex.write(math.floor(result / 256)) + end +end +function pdftexcmds.pipe(cmdline, patch) + local result + systemexitstatus = nil + texio.write_nl("log", "pipe(" .. cmdline ..") ") + if io.popen then + texio.write("log", "executed.") + local handle = io.popen(cmdline, "r") + if handle then + result = handle:read("*a") + handle:close() + end + else + texio.write("log", "disabled.") + end + if result then + if patch == 1 then + local temp = {} + for i, a in ipairs(result) do + if a == 0 then + table.insert(temp, 1) + table.insert(temp, 1) + else + if a == 1 then + table.insert(temp, 1) + table.insert(temp, 2) + else + table.insert(temp, a) + end + end + end + result = temp + end + tex.settoks(pdftexcmds.toks, result) + else + tex.settoks(pdftexcmds.toks, "") + end +end +-- +-- End of File `pdftexcmds.lua'. -- cgit v1.2.3