summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/scripts
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-11-24 21:47:23 +0000
committerKarl Berry <karl@freefriends.org>2019-11-24 21:47:23 +0000
commit8b960517e3a2603d01e124e2112d43ea86d6d782 (patch)
treec010b9bf1811835b5a78574a26ee883bd023d686 /Master/texmf-dist/scripts
parent7581721197204702cbebdb4c44f1e94406e512dd (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.lua377
-rwxr-xr-xMaster/texmf-dist/scripts/oberdiek/pdfatfi.pl219
-rw-r--r--Master/texmf-dist/scripts/oberdiek/pdftexcmds.lua377
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'.