diff options
author | Karl Berry <karl@freefriends.org> | 2019-11-24 21:47:23 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2019-11-24 21:47:23 +0000 |
commit | 8b960517e3a2603d01e124e2112d43ea86d6d782 (patch) | |
tree | c010b9bf1811835b5a78574a26ee883bd023d686 /Master/texmf-dist/scripts | |
parent | 7581721197204702cbebdb4c44f1e94406e512dd (diff) |
oberdiek (24nov19)
git-svn-id: svn://tug.org/texlive/trunk@52915 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/scripts')
-rw-r--r-- | Master/texmf-dist/scripts/oberdiek/oberdiek.pdftexcmds.lua | 377 | ||||
-rwxr-xr-x | Master/texmf-dist/scripts/oberdiek/pdfatfi.pl | 219 | ||||
-rw-r--r-- | Master/texmf-dist/scripts/oberdiek/pdftexcmds.lua | 377 |
3 files changed, 0 insertions, 973 deletions
diff --git a/Master/texmf-dist/scripts/oberdiek/oberdiek.pdftexcmds.lua b/Master/texmf-dist/scripts/oberdiek/oberdiek.pdftexcmds.lua deleted file mode 100644 index a2915d42fab..00000000000 --- a/Master/texmf-dist/scripts/oberdiek/oberdiek.pdftexcmds.lua +++ /dev/null @@ -1,377 +0,0 @@ --- --- This is file `oberdiek.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: 2019/07/25 v0.30 --- --- Copyright (C) 2007, 2009-2011 by --- Heiko Oberdiek <heiko.oberdiek at googlemail.com> --- --- 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/oberdiek/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.bib, pdftexcmds-test1.tex, pdftexcmds-test2.tex, --- pdftexcmds-test-shell.tex, pdftexcmds-test-escape.tex, --- oberdiek.pdftexcmds.lua, pdftexcmds.lua. --- -oberdiek = oberdiek or {} -local pdftexcmds = oberdiek.pdftexcmds or {} -oberdiek.pdftexcmds = pdftexcmds -local systemexitstatus -function pdftexcmds.getversion() - tex.write("2019/07/25 v0.30") -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", 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 `oberdiek.pdftexcmds.lua'. diff --git a/Master/texmf-dist/scripts/oberdiek/pdfatfi.pl b/Master/texmf-dist/scripts/oberdiek/pdfatfi.pl deleted file mode 100755 index 50e9f856042..00000000000 --- a/Master/texmf-dist/scripts/oberdiek/pdfatfi.pl +++ /dev/null @@ -1,219 +0,0 @@ -#!/usr/bin/env perl -use strict; -$^W=1; # turn warning on -# -# pdfatfi.pl -# -# Copyright (C) 2005-2010, 2012 Heiko Oberdiek. -# -# 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/oberdiek/issues - -# -# See file "attachfile2.pdf" for a list of files that belong to -# this project. -# -# This file "pdfatfi.pl" may be renamed to "pdfatfi" -# for installation purposes. -# -my $prj = 'pdfatfi'; -my $file = "$prj.pl"; -my $program = uc($&) if $file =~ /^\w+/; -my $version = "2.9"; -my $date = "2019/07/24"; -my $author = "Heiko Oberdiek"; -my $copyright = "Copyright (c) 2005-2010, 2012 by $author."; -# -# History: -# 2005/05/21 v1.0: First release. -# 2006/08/16 v2.2: Included in DTX file of attachfile2.dtx. -# 2010/09/27 v2.6: Keys ModDateTZ and CreationDateTZ added. -# 2016/05/16 v2.8: Option --version added. -# 2019/07/24 v2.9: adapted version to attachfile2 version. -# - -use POSIX qw(strftime); # %z is used (GNU) -use Digest::MD5; - -### program identification -my $title = "$program $version, $date - $copyright\n"; - -### error strings -my $Error = "!!! Error:"; # error prefix - -### variables -my $atfifile; - -### option variables -my @bool = ("false", "true"); -$::opt_help = 0; -$::opt_quiet = 0; -$::opt_debug = 0; -$::opt_verbose = 0; -$::opt_version = 0; - -my $usage = <<"END_OF_USAGE"; -${title}Syntax: \L$program\E [options] <file[.atfi]> -Function: Help program for LaTeX package "attachfile2". -Options: (defaults:) - --help print usage - --version print version number - --(no)quiet suppress messages ($bool[$::opt_quiet]) - --(no)verbose verbose printing ($bool[$::opt_verbose]) - --(no)debug debug informations ($bool[$::opt_debug]) -END_OF_USAGE - -### process options -my @OrgArgv = @ARGV; -use Getopt::Long; -GetOptions( - "help!", - "version!", - "quiet!", - "debug!", - "verbose!", -) or die $usage; -!$::opt_help or die $usage; -if ($::opt_version) { - print "$prj $date v$version\n"; - exit(0); -} -@ARGV == 1 or die "$usage$Error Missing jobname!\n"; - -$::opt_quiet = 0 if $::opt_verbose; - -print $title unless $::opt_quiet; - -### get jobname -$atfifile = $ARGV[0]; -if (!-f $atfifile && -f "$atfifile.atfi") { - $atfifile .= ".atfi"; -} --f $atfifile or die "$Error File `$atfifile' not found!\n"; - -print "* job file = $atfifile\n" if $::opt_verbose; - -if ($::opt_debug) { - print <<"END_DEB"; -* OSNAME: $^O -* PERL_VERSION: $] -* ARGV: @OrgArgv -END_DEB -} - -my $tmpfile = $atfifile . ".tmp"; - -my $timezone = strftime "%z", localtime; - -sub gettz ($) { - my $time = shift; - my $tz = strftime "%z", localtime($time); - return '' unless $tz; - return 'Z' if $tz eq '+0000'; - $tz =~ s/^([+\-]\d\d)(\d\d)$/$1'$2'/; - return $tz; -} - -open(IN, $atfifile) or die "$Error Cannot open `$atfifile'!\n"; -open(OUT, ">$tmpfile") or die "$Error Cannot write `$tmpfile'!\n"; - -while(<IN>) { - # timezone - if (s/^(\\attachfile\@timezone\{).*(\})$/$1$timezone$2/) { - print "* timezone = $timezone\n" if $::opt_verbose; - } - - # file entry - if (/^\\attachfile\@file\[[^\]]*\]\{(.*)\}$/) { - my $hexfile = $1; - my $file = pack('H*', $hexfile); - my @s = stat($file); - if (@s == 0) { - print "!!! Warning: File `$file' not found!\n"; - } - else { - my $size = @s[7]; - my $mtime = @s[9]; - my $ctime = @s[10]; # inode change time - - my ($sec, $min, $hour, $mday, $mon, $year) = - localtime($mtime); - my $moddate = sprintf("%04d%02d%02d%02d%02d%02d", - $year + 1900, $mon + 1, $mday, - $hour, $min, $sec); - my $moddatetz = 'D:' . $moddate . gettz($mtime); - - # Manual page "perlport" says that "ctime" is creation - # time instead of inode change time for "Win32" and - # "Mac OS", but it is unsupported for "Mac OS X". - my $creationdate = ""; - my $creationdatetz = ""; - if ($^O eq 'MSWin32') { # cygwin? - ($sec, $min, $hour, $mday, $mon, $year) = - localtime($ctime); - $creationdate = sprintf("%04d%02d%02d%02d%02d%02d", - $year + 1900, $mon + 1, $mday, - $hour, $min, $sec); - $creationdatetz = - 'D:' . $creationdate . gettz($ctime); - } - - # md5 checksum - my $checksum = ""; - my $ctx = Digest::MD5->new; - if (open(FILE, $file)) { - $ctx->addfile(*FILE); - $checksum = $ctx->hexdigest; - close(FILE); - } - else { - print "!!! Warning: File `$file' cannot be read," - . " dropping checksum!\n"; - } - - $_ = "\\attachfile\@file[" - . "ModDateTZ=$moddatetz" - . ",Size=$size" - . ($checksum ? ",CheckSum=$checksum" : "") - . ($creationdatetz ? - ",CreationDateTZ=$creationdatetz" : - ($creationdate ? - ",CreationDate=$creationdate" : "")) - . "]{$hexfile}\n"; - if ($::opt_verbose) { - print "* file entry = $file\n"; - print " size = $size\n"; - print " moddate = $moddate\n"; - print " creationdate = $creationdate\n" - if $creationdate; - print " checksum = $checksum\n" if $checksum; - } - } - } - - print OUT $_; -} - -close(IN); -close(OUT); - -unlink($atfifile) or die "$Error Cannot delete old `$atfifile'!\n"; -rename $tmpfile, $atfifile - or die "$Error Cannot move `$tmpfile' to `$atfifile'!\n"; - -print "*** ready. ***\n" unless $::opt_quiet; - -__END__ diff --git a/Master/texmf-dist/scripts/oberdiek/pdftexcmds.lua b/Master/texmf-dist/scripts/oberdiek/pdftexcmds.lua deleted file mode 100644 index 1788bcd4bcc..00000000000 --- a/Master/texmf-dist/scripts/oberdiek/pdftexcmds.lua +++ /dev/null @@ -1,377 +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: 2019/07/25 v0.30 --- --- Copyright (C) 2007, 2009-2011 by --- Heiko Oberdiek <heiko.oberdiek at googlemail.com> --- --- 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/oberdiek/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.bib, pdftexcmds-test1.tex, pdftexcmds-test2.tex, --- pdftexcmds-test-shell.tex, pdftexcmds-test-escape.tex, --- oberdiek.pdftexcmds.lua, pdftexcmds.lua. --- -oberdiek = oberdiek or {} -local pdftexcmds = oberdiek.pdftexcmds or {} -oberdiek.pdftexcmds = pdftexcmds -local systemexitstatus -function pdftexcmds.getversion() - tex.write("2019/07/25 v0.30") -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", 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'. |