summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2007-01-07 21:58:51 +0000
committerKarl Berry <karl@freefriends.org>2007-01-07 21:58:51 +0000
commit7e3c0ddc199192fd1b98c37279e95af5e56ae4d1 (patch)
treee485d81eabf146eff216f23850b8ca4584af80e8 /Master
parent3982ba0e2dfb2d87bc6766eadcafd3cccb5cb312 (diff)
new sparc-solaris binaries from vvv
git-svn-id: svn://tug.org/texlive/trunk@3213 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rwxr-xr-xMaster/bin/sparc-solaris/afm2plbin88392 -> 147480 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/afm2tfmbin95940 -> 154828 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/alephbin560364 -> 704240 bytes
l---------Master/bin/sparc-solaris/amstex2
-rwxr-xr-xMaster/bin/sparc-solaris/bg5convbin4352 -> 5440 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/bg5latex17
-rwxr-xr-xMaster/bin/sparc-solaris/bg5pdflatex17
-rwxr-xr-xMaster/bin/sparc-solaris/bibtexbin170424 -> 256300 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/bibtex8bin202524 -> 289560 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/cef5convbin5476 -> 6528 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/cef5latex17
-rwxr-xr-xMaster/bin/sparc-solaris/cef5pdflatex17
-rwxr-xr-xMaster/bin/sparc-solaris/cefconvbin5380 -> 6528 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/ceflatex17
-rwxr-xr-xMaster/bin/sparc-solaris/cefpdflatex17
-rwxr-xr-xMaster/bin/sparc-solaris/cefsconvbin5492 -> 6544 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/cefslatex17
-rwxr-xr-xMaster/bin/sparc-solaris/cefspdflatex17
-rwxr-xr-xMaster/bin/sparc-solaris/cfftot1bin501788 -> 462236 bytes
l---------Master/bin/sparc-solaris/cslatex2
l---------Master/bin/sparc-solaris/csplain2
-rwxr-xr-xMaster/bin/sparc-solaris/ctanglebin101284 -> 167952 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/ctiebin73396 -> 131352 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/ctxtools2
-rwxr-xr-xMaster/bin/sparc-solaris/cweavebin139372 -> 208044 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/detexbin85968 -> 143544 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/devnagbin29228 -> 33908 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/disdvibin11536 -> 14412 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/dmpbin86288 -> 146644 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/dt2dvbin32936 -> 36016 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/dv2dtbin11552 -> 14240 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/dvi2ttybin23012 -> 27148 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/dvibookbin37504 -> 51112 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/dviconcatbin33660 -> 45984 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/dvicopybin131456 -> 208572 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/dvidvibin20568 -> 23152 bytes
l---------Master/bin/sparc-solaris/dvigif1
-rwxr-xr-xMaster/bin/sparc-solaris/dviljbin107284 -> 171008 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/dvilj2pbin107652 -> 171404 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/dvilj4bin114040 -> 179704 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/dvilj4lbin114048 -> 179700 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/dvipdfmbin425836 -> 590352 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/dvipdfmxbin778644 -> 1085828 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/dvipngbin593300 -> 1249328 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/dvipsbin256824 -> 375524 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/dviselectbin36276 -> 49328 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/dvitodvibin41728 -> 55468 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/dvitompbin102896 -> 174252 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/dvitypebin106032 -> 183668 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/ebbbin240688 -> 351640 bytes
l---------Master/bin/sparc-solaris/eplain2
-rwxr-xr-xMaster/bin/sparc-solaris/epsffitbin8576 -> 11080 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/epstopdf38
l---------Master/bin/sparc-solaris/etex2
-rwxr-xr-xMaster/bin/sparc-solaris/exatools2
-rwxr-xr-xMaster/bin/sparc-solaris/extconvbin4352 -> 5440 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/fmtutil5
-rwxr-xr-xMaster/bin/sparc-solaris/gbklatex17
-rwxr-xr-xMaster/bin/sparc-solaris/gbkpdflatex17
-rwxr-xr-xMaster/bin/sparc-solaris/gftodvibin114280 -> 188104 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/gftopkbin91832 -> 168916 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/gftypebin90444 -> 161944 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/gsftopkbin85764 -> 146068 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/hbf2gfbin95484 -> 157356 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/htcontext4
-rwxr-xr-xMaster/bin/sparc-solaris/htlatex2
-rwxr-xr-xMaster/bin/sparc-solaris/htmex2
-rwxr-xr-xMaster/bin/sparc-solaris/httex2
-rwxr-xr-xMaster/bin/sparc-solaris/httexi2
-rwxr-xr-xMaster/bin/sparc-solaris/infobin156408 -> 210676 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/infokeybin21296 -> 32396 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/install-infobin24868 -> 32728 bytes
l---------Master/bin/sparc-solaris/jadetex2
-rwxr-xr-xMaster/bin/sparc-solaris/kpseaccessbin5212 -> 7064 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/kpsereadlinkbin5092 -> 6972 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/kpsestatbin5744 -> 7756 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/kpsewhichbin77800 -> 140368 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/lacheckbin56100 -> 59028 bytes
l---------Master/bin/sparc-solaris/latex2
-rwxr-xr-xMaster/bin/sparc-solaris/luatools2
-rwxr-xr-xMaster/bin/sparc-solaris/magbin5908 -> 8816 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/makeindexbin138852 -> 217144 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/makeinfobin225060 -> 269780 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/makempxbin5200 -> 131084 bytes
-rwxr-xr-x[l---------]Master/bin/sparc-solaris/makempy3
l---------Master/bin/sparc-solaris/mex2
-rwxr-xr-xMaster/bin/sparc-solaris/mfbin320572 -> 438540 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/mf-nowinbin316592 -> 433128 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/mftbin114568 -> 182172 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/mk4ht265
l---------Master/bin/sparc-solaris/mllatex2
l---------Master/bin/sparc-solaris/mltex2
-rwxr-xr-xMaster/bin/sparc-solaris/mmafmbin356344 -> 282956 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/mmpfbbin442236 -> 372520 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/mpostbin322972 -> 556624 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/mpstools2
-rwxr-xr-xMaster/bin/sparc-solaris/mptobin9996 -> 11500 bytes
-rwxr-xr-x[l---------]Master/bin/sparc-solaris/mptopdf3
-rwxr-xr-xMaster/bin/sparc-solaris/mtxtools2
-rwxr-xr-xMaster/bin/sparc-solaris/musixflxbin16544 -> 22684 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/newerbin6076 -> 8120 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/odvicopybin137320 -> 215636 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/odvitypebin107384 -> 185504 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/omegabin572992 -> 719432 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/omfontsbin181564 -> 277828 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/otanglebin60976 -> 96028 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/otfinfobin583864 -> 592652 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/otftotfmbin930200 -> 1092548 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/otp2ocpbin84836 -> 152088 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/outocpbin66644 -> 123856 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/patgenbin47528 -> 81660 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/pdfclosebin7796 -> 10224 bytes
-rwxr-xr-x[l---------]Master/bin/sparc-solaris/pdfcrop309
l---------Master/bin/sparc-solaris/pdfcslatex2
l---------Master/bin/sparc-solaris/pdfcsplain2
l---------[-rwxr-xr-x]Master/bin/sparc-solaris/pdfetexbin1509768 -> 6 bytes
l---------Master/bin/sparc-solaris/pdfjadetex2
l---------Master/bin/sparc-solaris/pdflatex2
l---------Master/bin/sparc-solaris/pdfmex2
-rwxr-xr-xMaster/bin/sparc-solaris/pdfopenbin8228 -> 11332 bytes
l---------Master/bin/sparc-solaris/pdfplatex2
-rwxr-xr-x[l---------]Master/bin/sparc-solaris/pdftexbin7 -> 1721004 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/pdftools2
l---------Master/bin/sparc-solaris/pdfxmltex2
-rwxr-xr-xMaster/bin/sparc-solaris/perltex42
-rwxr-xr-xMaster/bin/sparc-solaris/pfb2pfabin8848 -> 15300 bytes
l---------Master/bin/sparc-solaris/physe2
l---------Master/bin/sparc-solaris/phyzzx2
-rwxr-xr-xMaster/bin/sparc-solaris/pk2bmbin11208 -> 16032 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/pktogfbin88952 -> 163268 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/pktypebin80564 -> 149556 bytes
l---------Master/bin/sparc-solaris/platex2
-rwxr-xr-xMaster/bin/sparc-solaris/pltotfbin67188 -> 111784 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/pooltypebin25708 -> 55680 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/ps2pkbin189264 -> 291000 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/ps4pdf51
-rwxr-xr-xMaster/bin/sparc-solaris/psbookbin12872 -> 16764 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/psnupbin20708 -> 34728 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/psresizebin18764 -> 23664 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/psselectbin14080 -> 19136 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/pstopdf2
-rwxr-xr-xMaster/bin/sparc-solaris/pstopsbin19388 -> 24032 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/rlxtools2
-rwxr-xr-xMaster/bin/sparc-solaris/runtools2
-rwxr-xr-xMaster/bin/sparc-solaris/sjisconvbin4376 -> 5464 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/sjislatex17
-rwxr-xr-xMaster/bin/sparc-solaris/sjispdflatex17
-rwxr-xr-xMaster/bin/sparc-solaris/t1asciibin25512 -> 30856 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/t1asmbin30868 -> 36500 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/t1binarybin24812 -> 30044 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/t1disasmbin30072 -> 36540 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/t1dotlessjbin425400 -> 359628 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/t1lintbin371676 -> 301672 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/t1macbin34100 -> 39728 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/t1reencodebin384116 -> 341792 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/t1testpagebin397860 -> 327408 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/t1unmacbin31732 -> 37700 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/t4htbin85308 -> 144060 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/tanglebin114264 -> 188812 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/tcdialogbin151104 -> 271540 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/texbin353920 -> 458436 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/tex4htbin157344 -> 218316 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/texconfig4
-rwxr-xr-xMaster/bin/sparc-solaris/texexec24
-rwxr-xr-x[l---------]Master/bin/sparc-solaris/texfont3
-rwxr-xr-xMaster/bin/sparc-solaris/texi2html8
-rwxr-xr-xMaster/bin/sparc-solaris/texindexbin18848 -> 25360 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/texmfstart2556
l---------Master/bin/sparc-solaris/texsis2
-rwxr-xr-xMaster/bin/sparc-solaris/textools2
-rwxr-xr-x[l---------]Master/bin/sparc-solaris/texutil3
-rwxr-xr-xMaster/bin/sparc-solaris/tftoplbin100624 -> 173720 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/tiebin10724 -> 14516 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/tmftools2
-rwxr-xr-xMaster/bin/sparc-solaris/ttf2afmbin95216 -> 160956 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/ttf2pkbin247732 -> 332872 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/ttf2tfmbin265096 -> 349636 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/ttftotype42bin0 -> 382436 bytes
l---------Master/bin/sparc-solaris/uniqleaf1
-rwxr-xr-xMaster/bin/sparc-solaris/updmap9
l---------Master/bin/sparc-solaris/utf8mex2
-rwxr-xr-xMaster/bin/sparc-solaris/vftovpbin118048 -> 194864 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/vpe421
-rwxr-xr-xMaster/bin/sparc-solaris/vptovfbin83176 -> 132824 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/weavebin137972 -> 211488 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/xdvi-motif.binbin879132 -> 1235744 bytes
-rwxr-xr-xMaster/bin/sparc-solaris/xdvipdfmxbin0 -> 1678868 bytes
l---------Master/bin/sparc-solaris/xelatex1
l---------Master/bin/sparc-solaris/xeplain1
-rwxr-xr-xMaster/bin/sparc-solaris/xetexbin0 -> 8612332 bytes
l---------Master/bin/sparc-solaris/xmltex2
-rwxr-xr-xMaster/bin/sparc-solaris/xmltools2
192 files changed, 3893 insertions, 141 deletions
diff --git a/Master/bin/sparc-solaris/afm2pl b/Master/bin/sparc-solaris/afm2pl
index cbab6f46d96..0ace65a7c69 100755
--- a/Master/bin/sparc-solaris/afm2pl
+++ b/Master/bin/sparc-solaris/afm2pl
Binary files differ
diff --git a/Master/bin/sparc-solaris/afm2tfm b/Master/bin/sparc-solaris/afm2tfm
index 19c9f6ddae4..666724c3104 100755
--- a/Master/bin/sparc-solaris/afm2tfm
+++ b/Master/bin/sparc-solaris/afm2tfm
Binary files differ
diff --git a/Master/bin/sparc-solaris/aleph b/Master/bin/sparc-solaris/aleph
index 2cb22aa50f7..ed0f5906eb4 100755
--- a/Master/bin/sparc-solaris/aleph
+++ b/Master/bin/sparc-solaris/aleph
Binary files differ
diff --git a/Master/bin/sparc-solaris/amstex b/Master/bin/sparc-solaris/amstex
index eb4e1e5aff7..f68cc91498e 120000
--- a/Master/bin/sparc-solaris/amstex
+++ b/Master/bin/sparc-solaris/amstex
@@ -1 +1 @@
-pdfetex \ No newline at end of file
+pdftex \ No newline at end of file
diff --git a/Master/bin/sparc-solaris/bg5conv b/Master/bin/sparc-solaris/bg5conv
index 203115ad6f7..1bbeb3eb39e 100755
--- a/Master/bin/sparc-solaris/bg5conv
+++ b/Master/bin/sparc-solaris/bg5conv
Binary files differ
diff --git a/Master/bin/sparc-solaris/bg5latex b/Master/bin/sparc-solaris/bg5latex
index b9a36fa844c..257a8446e21 100755
--- a/Master/bin/sparc-solaris/bg5latex
+++ b/Master/bin/sparc-solaris/bg5latex
@@ -1,5 +1,22 @@
#! /bin/sh
+# Copyright (C) 1994-2006 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
n=1
argv=
diff --git a/Master/bin/sparc-solaris/bg5pdflatex b/Master/bin/sparc-solaris/bg5pdflatex
index f65d86d5417..80adc376a93 100755
--- a/Master/bin/sparc-solaris/bg5pdflatex
+++ b/Master/bin/sparc-solaris/bg5pdflatex
@@ -1,5 +1,22 @@
#! /bin/sh
+# Copyright (C) 1994-2006 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
n=1
argv=
diff --git a/Master/bin/sparc-solaris/bibtex b/Master/bin/sparc-solaris/bibtex
index 42668ddea3d..0331c25bec2 100755
--- a/Master/bin/sparc-solaris/bibtex
+++ b/Master/bin/sparc-solaris/bibtex
Binary files differ
diff --git a/Master/bin/sparc-solaris/bibtex8 b/Master/bin/sparc-solaris/bibtex8
index 4f737cabf2a..1fdd633a7de 100755
--- a/Master/bin/sparc-solaris/bibtex8
+++ b/Master/bin/sparc-solaris/bibtex8
Binary files differ
diff --git a/Master/bin/sparc-solaris/cef5conv b/Master/bin/sparc-solaris/cef5conv
index b73efb34ef7..2de1473560d 100755
--- a/Master/bin/sparc-solaris/cef5conv
+++ b/Master/bin/sparc-solaris/cef5conv
Binary files differ
diff --git a/Master/bin/sparc-solaris/cef5latex b/Master/bin/sparc-solaris/cef5latex
index b8917c1cd26..7eda1633766 100755
--- a/Master/bin/sparc-solaris/cef5latex
+++ b/Master/bin/sparc-solaris/cef5latex
@@ -1,5 +1,22 @@
#! /bin/sh
+# Copyright (C) 1994-2006 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
n=1
argv=
diff --git a/Master/bin/sparc-solaris/cef5pdflatex b/Master/bin/sparc-solaris/cef5pdflatex
index bd398e0240c..25fe066a53f 100755
--- a/Master/bin/sparc-solaris/cef5pdflatex
+++ b/Master/bin/sparc-solaris/cef5pdflatex
@@ -1,5 +1,22 @@
#! /bin/sh
+# Copyright (C) 1994-2006 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
n=1
argv=
diff --git a/Master/bin/sparc-solaris/cefconv b/Master/bin/sparc-solaris/cefconv
index 719aba788f4..75a156f94a2 100755
--- a/Master/bin/sparc-solaris/cefconv
+++ b/Master/bin/sparc-solaris/cefconv
Binary files differ
diff --git a/Master/bin/sparc-solaris/ceflatex b/Master/bin/sparc-solaris/ceflatex
index 50c5be54fd9..d34244d9a5b 100755
--- a/Master/bin/sparc-solaris/ceflatex
+++ b/Master/bin/sparc-solaris/ceflatex
@@ -1,5 +1,22 @@
#! /bin/sh
+# Copyright (C) 1994-2006 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
n=1
argv=
diff --git a/Master/bin/sparc-solaris/cefpdflatex b/Master/bin/sparc-solaris/cefpdflatex
index 0615149c5b9..4c7309f2bf2 100755
--- a/Master/bin/sparc-solaris/cefpdflatex
+++ b/Master/bin/sparc-solaris/cefpdflatex
@@ -1,5 +1,22 @@
#! /bin/sh
+# Copyright (C) 1994-2006 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
n=1
argv=
diff --git a/Master/bin/sparc-solaris/cefsconv b/Master/bin/sparc-solaris/cefsconv
index 5d56a25664b..6124705c2eb 100755
--- a/Master/bin/sparc-solaris/cefsconv
+++ b/Master/bin/sparc-solaris/cefsconv
Binary files differ
diff --git a/Master/bin/sparc-solaris/cefslatex b/Master/bin/sparc-solaris/cefslatex
index fb2944ceda7..619d08c7577 100755
--- a/Master/bin/sparc-solaris/cefslatex
+++ b/Master/bin/sparc-solaris/cefslatex
@@ -1,5 +1,22 @@
#! /bin/sh
+# Copyright (C) 1994-2006 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
n=1
argv=
diff --git a/Master/bin/sparc-solaris/cefspdflatex b/Master/bin/sparc-solaris/cefspdflatex
index 1985eebe5c8..02bf6598f71 100755
--- a/Master/bin/sparc-solaris/cefspdflatex
+++ b/Master/bin/sparc-solaris/cefspdflatex
@@ -1,5 +1,22 @@
#! /bin/sh
+# Copyright (C) 1994-2006 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
n=1
argv=
diff --git a/Master/bin/sparc-solaris/cfftot1 b/Master/bin/sparc-solaris/cfftot1
index 877139d63d6..eb8852b752d 100755
--- a/Master/bin/sparc-solaris/cfftot1
+++ b/Master/bin/sparc-solaris/cfftot1
Binary files differ
diff --git a/Master/bin/sparc-solaris/cslatex b/Master/bin/sparc-solaris/cslatex
index eb4e1e5aff7..f68cc91498e 120000
--- a/Master/bin/sparc-solaris/cslatex
+++ b/Master/bin/sparc-solaris/cslatex
@@ -1 +1 @@
-pdfetex \ No newline at end of file
+pdftex \ No newline at end of file
diff --git a/Master/bin/sparc-solaris/csplain b/Master/bin/sparc-solaris/csplain
index eb4e1e5aff7..f68cc91498e 120000
--- a/Master/bin/sparc-solaris/csplain
+++ b/Master/bin/sparc-solaris/csplain
@@ -1 +1 @@
-pdfetex \ No newline at end of file
+pdftex \ No newline at end of file
diff --git a/Master/bin/sparc-solaris/ctangle b/Master/bin/sparc-solaris/ctangle
index bef6b89de24..58419b7a7a5 100755
--- a/Master/bin/sparc-solaris/ctangle
+++ b/Master/bin/sparc-solaris/ctangle
Binary files differ
diff --git a/Master/bin/sparc-solaris/ctie b/Master/bin/sparc-solaris/ctie
index 72ed92068e4..990152bbd0e 100755
--- a/Master/bin/sparc-solaris/ctie
+++ b/Master/bin/sparc-solaris/ctie
Binary files differ
diff --git a/Master/bin/sparc-solaris/ctxtools b/Master/bin/sparc-solaris/ctxtools
new file mode 100755
index 00000000000..84e47bbee3c
--- /dev/null
+++ b/Master/bin/sparc-solaris/ctxtools
@@ -0,0 +1,2 @@
+#!/bin/sh
+texmfstart ctxtools.rb "$@"
diff --git a/Master/bin/sparc-solaris/cweave b/Master/bin/sparc-solaris/cweave
index e4f57e2ffe2..0a5a5eeb8c3 100755
--- a/Master/bin/sparc-solaris/cweave
+++ b/Master/bin/sparc-solaris/cweave
Binary files differ
diff --git a/Master/bin/sparc-solaris/detex b/Master/bin/sparc-solaris/detex
index ebd7fabe12e..6a5d252b3fe 100755
--- a/Master/bin/sparc-solaris/detex
+++ b/Master/bin/sparc-solaris/detex
Binary files differ
diff --git a/Master/bin/sparc-solaris/devnag b/Master/bin/sparc-solaris/devnag
index 9e4cbefe9ae..56719ba8173 100755
--- a/Master/bin/sparc-solaris/devnag
+++ b/Master/bin/sparc-solaris/devnag
Binary files differ
diff --git a/Master/bin/sparc-solaris/disdvi b/Master/bin/sparc-solaris/disdvi
index b484eb5e0cd..559dab1c66f 100755
--- a/Master/bin/sparc-solaris/disdvi
+++ b/Master/bin/sparc-solaris/disdvi
Binary files differ
diff --git a/Master/bin/sparc-solaris/dmp b/Master/bin/sparc-solaris/dmp
index 31a3f0350e4..4b2f5d45d0b 100755
--- a/Master/bin/sparc-solaris/dmp
+++ b/Master/bin/sparc-solaris/dmp
Binary files differ
diff --git a/Master/bin/sparc-solaris/dt2dv b/Master/bin/sparc-solaris/dt2dv
index d230d12a597..b499562aa70 100755
--- a/Master/bin/sparc-solaris/dt2dv
+++ b/Master/bin/sparc-solaris/dt2dv
Binary files differ
diff --git a/Master/bin/sparc-solaris/dv2dt b/Master/bin/sparc-solaris/dv2dt
index 04bd6dfccbc..ff26a40021e 100755
--- a/Master/bin/sparc-solaris/dv2dt
+++ b/Master/bin/sparc-solaris/dv2dt
Binary files differ
diff --git a/Master/bin/sparc-solaris/dvi2tty b/Master/bin/sparc-solaris/dvi2tty
index cc8ec93ecc5..50a1d96f139 100755
--- a/Master/bin/sparc-solaris/dvi2tty
+++ b/Master/bin/sparc-solaris/dvi2tty
Binary files differ
diff --git a/Master/bin/sparc-solaris/dvibook b/Master/bin/sparc-solaris/dvibook
index ce41624a954..c888c1e36bd 100755
--- a/Master/bin/sparc-solaris/dvibook
+++ b/Master/bin/sparc-solaris/dvibook
Binary files differ
diff --git a/Master/bin/sparc-solaris/dviconcat b/Master/bin/sparc-solaris/dviconcat
index d2cb5f21168..5bdd237b994 100755
--- a/Master/bin/sparc-solaris/dviconcat
+++ b/Master/bin/sparc-solaris/dviconcat
Binary files differ
diff --git a/Master/bin/sparc-solaris/dvicopy b/Master/bin/sparc-solaris/dvicopy
index 93a3ae81d73..e766f54ed29 100755
--- a/Master/bin/sparc-solaris/dvicopy
+++ b/Master/bin/sparc-solaris/dvicopy
Binary files differ
diff --git a/Master/bin/sparc-solaris/dvidvi b/Master/bin/sparc-solaris/dvidvi
index 5f05b78cdd6..4fa35b0412e 100755
--- a/Master/bin/sparc-solaris/dvidvi
+++ b/Master/bin/sparc-solaris/dvidvi
Binary files differ
diff --git a/Master/bin/sparc-solaris/dvigif b/Master/bin/sparc-solaris/dvigif
deleted file mode 120000
index c1eef0afe05..00000000000
--- a/Master/bin/sparc-solaris/dvigif
+++ /dev/null
@@ -1 +0,0 @@
-dvipng \ No newline at end of file
diff --git a/Master/bin/sparc-solaris/dvilj b/Master/bin/sparc-solaris/dvilj
index d5eefac01f7..07cc4b65be5 100755
--- a/Master/bin/sparc-solaris/dvilj
+++ b/Master/bin/sparc-solaris/dvilj
Binary files differ
diff --git a/Master/bin/sparc-solaris/dvilj2p b/Master/bin/sparc-solaris/dvilj2p
index 21e4776b777..d218d8c552b 100755
--- a/Master/bin/sparc-solaris/dvilj2p
+++ b/Master/bin/sparc-solaris/dvilj2p
Binary files differ
diff --git a/Master/bin/sparc-solaris/dvilj4 b/Master/bin/sparc-solaris/dvilj4
index f13ee7650ab..3c58950bedf 100755
--- a/Master/bin/sparc-solaris/dvilj4
+++ b/Master/bin/sparc-solaris/dvilj4
Binary files differ
diff --git a/Master/bin/sparc-solaris/dvilj4l b/Master/bin/sparc-solaris/dvilj4l
index ea71d58986f..0668803f2dd 100755
--- a/Master/bin/sparc-solaris/dvilj4l
+++ b/Master/bin/sparc-solaris/dvilj4l
Binary files differ
diff --git a/Master/bin/sparc-solaris/dvipdfm b/Master/bin/sparc-solaris/dvipdfm
index f068331dbe2..f154da34326 100755
--- a/Master/bin/sparc-solaris/dvipdfm
+++ b/Master/bin/sparc-solaris/dvipdfm
Binary files differ
diff --git a/Master/bin/sparc-solaris/dvipdfmx b/Master/bin/sparc-solaris/dvipdfmx
index f8fd85510d2..a1bf3b95866 100755
--- a/Master/bin/sparc-solaris/dvipdfmx
+++ b/Master/bin/sparc-solaris/dvipdfmx
Binary files differ
diff --git a/Master/bin/sparc-solaris/dvipng b/Master/bin/sparc-solaris/dvipng
index eb53ea56716..a2fc14db247 100755
--- a/Master/bin/sparc-solaris/dvipng
+++ b/Master/bin/sparc-solaris/dvipng
Binary files differ
diff --git a/Master/bin/sparc-solaris/dvips b/Master/bin/sparc-solaris/dvips
index e7e0097e8cf..2e97774ed4e 100755
--- a/Master/bin/sparc-solaris/dvips
+++ b/Master/bin/sparc-solaris/dvips
Binary files differ
diff --git a/Master/bin/sparc-solaris/dviselect b/Master/bin/sparc-solaris/dviselect
index 98383b94d34..66da16025a7 100755
--- a/Master/bin/sparc-solaris/dviselect
+++ b/Master/bin/sparc-solaris/dviselect
Binary files differ
diff --git a/Master/bin/sparc-solaris/dvitodvi b/Master/bin/sparc-solaris/dvitodvi
index 36244bc9001..2bfcb73b256 100755
--- a/Master/bin/sparc-solaris/dvitodvi
+++ b/Master/bin/sparc-solaris/dvitodvi
Binary files differ
diff --git a/Master/bin/sparc-solaris/dvitomp b/Master/bin/sparc-solaris/dvitomp
index c63538695d9..6387b1986d8 100755
--- a/Master/bin/sparc-solaris/dvitomp
+++ b/Master/bin/sparc-solaris/dvitomp
Binary files differ
diff --git a/Master/bin/sparc-solaris/dvitype b/Master/bin/sparc-solaris/dvitype
index 1eda90f2c89..497ac8ad397 100755
--- a/Master/bin/sparc-solaris/dvitype
+++ b/Master/bin/sparc-solaris/dvitype
Binary files differ
diff --git a/Master/bin/sparc-solaris/ebb b/Master/bin/sparc-solaris/ebb
index 23eba462607..35ad539091e 100755
--- a/Master/bin/sparc-solaris/ebb
+++ b/Master/bin/sparc-solaris/ebb
Binary files differ
diff --git a/Master/bin/sparc-solaris/eplain b/Master/bin/sparc-solaris/eplain
index eb4e1e5aff7..f68cc91498e 120000
--- a/Master/bin/sparc-solaris/eplain
+++ b/Master/bin/sparc-solaris/eplain
@@ -1 +1 @@
-pdfetex \ No newline at end of file
+pdftex \ No newline at end of file
diff --git a/Master/bin/sparc-solaris/epsffit b/Master/bin/sparc-solaris/epsffit
index 5c437502dc3..6559ec54c54 100755
--- a/Master/bin/sparc-solaris/epsffit
+++ b/Master/bin/sparc-solaris/epsffit
Binary files differ
diff --git a/Master/bin/sparc-solaris/epstopdf b/Master/bin/sparc-solaris/epstopdf
index e7ea5f239df..0fb015d4420 100755
--- a/Master/bin/sparc-solaris/epstopdf
+++ b/Master/bin/sparc-solaris/epstopdf
@@ -58,13 +58,17 @@ use strict;
# * Quote OutFilename
# 2005/10/01 v2.9.3draft (Gerben Wierda)
# * Quote OutFilename
+# 2005/10/06 v2.9.4gw (Gerben Wierda)
+# * This has become the official version for now
+# 2005/10/06 v2.9.5gw (Gerben Wierda)
+# * Fixed a horrendous bug in the (atend) handling code
#
### program identification
my $program = "epstopdf";
-my $filedate="2003/04/20";
-my $fileversion="2.9.3draft";
-my $copyright = "Copyright 1998-2002 by Sebastian Rahtz et al.";
+my $filedate="2006/01/29";
+my $fileversion="2.9.5gw";
+my $copyright = "Copyright 1998-2006 by Sebastian Rahtz et al.";
my $title = "\U$program\E $fileversion, $filedate - $copyright\n";
### ghostscript command name
@@ -249,13 +253,14 @@ if ($buflen > 0) {
# that array until it is empty, then move again back to <IN>
$buf .= <IN> unless eof( IN);
$buflen = length( $buf);
+ $bufarraypos = 0;
# Some extra magic is needed here: if we set $/ to \r, Perl's re engine
# still thinks eol is \n in regular expressions (not very nice) so we
# cannot split on ^, but have to split on \r and reappend those.
if ($/ eq "\r") {
- @bufarray = split( /\r/ms, $buf);
- grep( $_ .= "\r", @bufarray);
+ @bufarray = split( /\r/ms, $buf); # split on \r
+ grep( $_ .= "\r", @bufarray); # re-append \r to each array item
}
else {
@bufarray = split( /^/ms, $buf);
@@ -268,6 +273,8 @@ sub getline {
$_ = shift( @bufarray);
unshift( @parsedbufarray, $_); # for myseek and mytell
$bufarraypos += length( $_);
+ # debug "getline from array. bufarraypos = $bufarraypos";
+ # debug "*** READ: $_";
}
else {
$_ = <IN>;
@@ -278,31 +285,40 @@ sub getline {
### mytell and myseek, work on <IN> only
sub mytell {
if ($#bufarray) {
+ # debug "Telling ARRAY position $bufarraypos";
return $bufarraypos;
}
else {
- return tell( IN);
+ my $pos = tell( IN);
+ # debug "Telling FILE position $pos";
+ return $pos;
}
}
sub myseek {
my $pos = shift;
+ # debug "Seeking to position $pos in input";
if ($pos < $buflen) {
+ # debug "myseek position $pos < buffer size $buflen";
# We were still parsing the array, reset to the end of buf and
# move to the right line in the array.
- # Now, move stuff from the @parsedbufarray until we are back at $pos
+ # Now, move stuff from the @parsedbufarray back until we are back at $pos
my $tmpline;
- while ($pos > 0) {
+ while ($bufarraypos > $pos) {
+ # debug "myseek bufarray position $bufarraypos > position $pos";
# we test on parsedbufarray to prevent an infinite loop on
# a programming error (DEVELOP only)
die "Programming error 1\n" unless $#parsedbufarray;
- $tmpline = pop( @parsedbufarray);
- $pos -= length( $tmpline);
- push( @bufarray, $tmpline);
+ $tmpline = shift( @parsedbufarray);
+ $bufarraypos -= length( $tmpline);
+ unshift( @bufarray, $tmpline);
+ debug "*** UNREAD: $tmpline";
}
+ # debug "Returning to ARRAY size position $buflen (bufarraypos = $bufarraypos)";
return seek( IN, $buflen, 0);
}
else {
+ # debug "Seeking to FILE position $pos";
return seek( IN, $pos, 0);
}
}
diff --git a/Master/bin/sparc-solaris/etex b/Master/bin/sparc-solaris/etex
index eb4e1e5aff7..f68cc91498e 120000
--- a/Master/bin/sparc-solaris/etex
+++ b/Master/bin/sparc-solaris/etex
@@ -1 +1 @@
-pdfetex \ No newline at end of file
+pdftex \ No newline at end of file
diff --git a/Master/bin/sparc-solaris/exatools b/Master/bin/sparc-solaris/exatools
new file mode 100755
index 00000000000..50ff0f07e46
--- /dev/null
+++ b/Master/bin/sparc-solaris/exatools
@@ -0,0 +1,2 @@
+#!/bin/sh
+texmfstart exatools.rb "$@"
diff --git a/Master/bin/sparc-solaris/extconv b/Master/bin/sparc-solaris/extconv
index bdd51201ca9..71d5a3abdec 100755
--- a/Master/bin/sparc-solaris/extconv
+++ b/Master/bin/sparc-solaris/extconv
Binary files differ
diff --git a/Master/bin/sparc-solaris/fmtutil b/Master/bin/sparc-solaris/fmtutil
index c8daaf8e112..e061f4f20af 100755
--- a/Master/bin/sparc-solaris/fmtutil
+++ b/Master/bin/sparc-solaris/fmtutil
@@ -29,6 +29,7 @@
###############################################################################
# program history:
# Fr Apr 8 19:15:05 CEST 2005 cleanup now has an argument for the return code
+# Do Mar 02 10:42:31 CET 2006 add tmpdir to TEXFORMATS
# So Mär 27 18:52:06 CEST 2005 honor $TMPDIR, $TEMP and $TMP, not just $TMP
# Sa Jan 15 18:13:46 CET 2005 avoid multiple variable assignments in one statement
# Di Jan 11 11:42:36 CET 2005 fix --byhyphen with relative hyphenfile
@@ -517,6 +518,10 @@ main()
# due to KPSE_DOT, we don't search the current directory, so include
# it explicitly for formats that \write and later on \read
TEXINPUTS="$tmpdir:$TEXINPUTS"; export TEXINPUTS
+ # for formats that load other formats (e.g., jadetex loads latex.fmt),
+ # add the current directory to TEXFORMATS, too. Currently unnecessary
+ # for MFBASES and MPMEMS.
+ TEXFORMATS="$tmpdir:$TEXFORMATS"; export TEXFORMATS
setupTmpDir
cd "$tmpdir" || cleanup 1
diff --git a/Master/bin/sparc-solaris/gbklatex b/Master/bin/sparc-solaris/gbklatex
index c7fcf7f13bc..f799f7b6e63 100755
--- a/Master/bin/sparc-solaris/gbklatex
+++ b/Master/bin/sparc-solaris/gbklatex
@@ -1,5 +1,22 @@
#! /bin/sh
+# Copyright (C) 1994-2006 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
n=1
argv=
diff --git a/Master/bin/sparc-solaris/gbkpdflatex b/Master/bin/sparc-solaris/gbkpdflatex
index 6cdb3cfee51..6dd3ee3de9e 100755
--- a/Master/bin/sparc-solaris/gbkpdflatex
+++ b/Master/bin/sparc-solaris/gbkpdflatex
@@ -1,5 +1,22 @@
#! /bin/sh
+# Copyright (C) 1994-2006 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
n=1
argv=
diff --git a/Master/bin/sparc-solaris/gftodvi b/Master/bin/sparc-solaris/gftodvi
index 24528007c79..804862e0d12 100755
--- a/Master/bin/sparc-solaris/gftodvi
+++ b/Master/bin/sparc-solaris/gftodvi
Binary files differ
diff --git a/Master/bin/sparc-solaris/gftopk b/Master/bin/sparc-solaris/gftopk
index 52dae0f33ee..370e7f74418 100755
--- a/Master/bin/sparc-solaris/gftopk
+++ b/Master/bin/sparc-solaris/gftopk
Binary files differ
diff --git a/Master/bin/sparc-solaris/gftype b/Master/bin/sparc-solaris/gftype
index b32ba34c919..b0a78637f62 100755
--- a/Master/bin/sparc-solaris/gftype
+++ b/Master/bin/sparc-solaris/gftype
Binary files differ
diff --git a/Master/bin/sparc-solaris/gsftopk b/Master/bin/sparc-solaris/gsftopk
index 435047971f0..8c496ac2305 100755
--- a/Master/bin/sparc-solaris/gsftopk
+++ b/Master/bin/sparc-solaris/gsftopk
Binary files differ
diff --git a/Master/bin/sparc-solaris/hbf2gf b/Master/bin/sparc-solaris/hbf2gf
index 599eee0936f..4fa78bcea91 100755
--- a/Master/bin/sparc-solaris/hbf2gf
+++ b/Master/bin/sparc-solaris/hbf2gf
Binary files differ
diff --git a/Master/bin/sparc-solaris/htcontext b/Master/bin/sparc-solaris/htcontext
index 190ac31f862..9d6d4549574 100755
--- a/Master/bin/sparc-solaris/htcontext
+++ b/Master/bin/sparc-solaris/htcontext
@@ -1,7 +1,7 @@
#!/bin/sh
- texexec --arg="opt-arg=$2" --use=tex4ht $5 $1
+ texexec --arg="ht-1=$2" --use=tex4ht $5 $1
tex4ht -f/$1 -i~/tex4ht.dir/texmf/tex4ht/ht-fonts/$3
- t4ht -f/$1 $4 -cvalidatehtml ## -d~/WWW/temp/ -m644
+ t4ht -f/$1 $4 ## -d~/WWW/temp/ -m644
diff --git a/Master/bin/sparc-solaris/htlatex b/Master/bin/sparc-solaris/htlatex
index 04713bb7794..1b8b7cea74a 100755
--- a/Master/bin/sparc-solaris/htlatex
+++ b/Master/bin/sparc-solaris/htlatex
@@ -3,7 +3,7 @@
latex $5 '\makeatletter\def\HCode{\futurelet\HCode\HChar}\def\HChar{\ifx"\HCode\def\HCode"##1"{\Link##1}\expandafter\HCode\else\expandafter\Link\fi}\def\Link#1.a.b.c.{\g@addto@macro\@documentclasshook{\RequirePackage[#1,html]{tex4ht}}\let\HCode\documentstyle\def\documentstyle{\let\documentstyle\HCode\expandafter\def\csname tex4ht\endcsname{#1,html}\def\HCode####1{\documentstyle[tex4ht,}\@ifnextchar[{\HCode}{\documentstyle[tex4ht]}}}\makeatother\HCode '$2'.a.b.c.\input ' $1
latex $5 '\makeatletter\def\HCode{\futurelet\HCode\HChar}\def\HChar{\ifx"\HCode\def\HCode"##1"{\Link##1}\expandafter\HCode\else\expandafter\Link\fi}\def\Link#1.a.b.c.{\g@addto@macro\@documentclasshook{\RequirePackage[#1,html]{tex4ht}}\let\HCode\documentstyle\def\documentstyle{\let\documentstyle\HCode\expandafter\def\csname tex4ht\endcsname{#1,html}\def\HCode####1{\documentstyle[tex4ht,}\@ifnextchar[{\HCode}{\documentstyle[tex4ht]}}}\makeatother\HCode '$2'.a.b.c.\input ' $1
tex4ht -f/$1 -i~/tex4ht.dir/texmf/tex4ht/ht-fonts/$3
- t4ht -f/$1 $4 -cvalidatehtml ## -d~/WWW/temp/ -m644
+ t4ht -f/$1 $4 ## -d~/WWW/temp/ -m644
diff --git a/Master/bin/sparc-solaris/htmex b/Master/bin/sparc-solaris/htmex
index 7e34ac6d523..b4aa3d9a06e 100755
--- a/Master/bin/sparc-solaris/htmex
+++ b/Master/bin/sparc-solaris/htmex
@@ -3,7 +3,7 @@
mex $5 '\def\Link#1.a.b.c.{\expandafter\def\csname tex4ht\endcsname{\expandafter\def\csname tex4ht\endcsname{#1,html}\input tex4ht.sty }}\def\HCode{\futurelet\HCode\HChar}\def\HChar{\ifx"\HCode\def\HCode"##1"{\Link##1}\expandafter\HCode\else\expandafter\Link\fi}\HCode '$2'.a.b.c.\input ' $1
mex $5 '\def\Link#1.a.b.c.{\expandafter\def\csname tex4ht\endcsname{\expandafter\def\csname tex4ht\endcsname{#1,html}\input tex4ht.sty }}\def\HCode{\futurelet\HCode\HChar}\def\HChar{\ifx"\HCode\def\HCode"##1"{\Link##1}\expandafter\HCode\else\expandafter\Link\fi}\HCode '$2'.a.b.c.\input ' $1
tex4ht -f/$1 -i~/tex4ht.dir/texmf/tex4ht/ht-fonts/$3
- t4ht -f/$1 $4 -cvalidatehtml ## -d~/WWW/temp/ -m644
+ t4ht -f/$1 $4 ## -d~/WWW/temp/ -m644
diff --git a/Master/bin/sparc-solaris/httex b/Master/bin/sparc-solaris/httex
index 1fdf5f3d940..44920e72077 100755
--- a/Master/bin/sparc-solaris/httex
+++ b/Master/bin/sparc-solaris/httex
@@ -3,7 +3,7 @@
tex $5 '\def\Link#1.a.b.c.{\expandafter\def\csname tex4ht\endcsname{\expandafter\def\csname tex4ht\endcsname{#1,html}\input tex4ht.sty }}\def\HCode{\futurelet\HCode\HChar}\def\HChar{\ifx"\HCode\def\HCode"##1"{\Link##1}\expandafter\HCode\else\expandafter\Link\fi}\HCode '$2'.a.b.c.\input ' $1
tex $5 '\def\Link#1.a.b.c.{\expandafter\def\csname tex4ht\endcsname{\expandafter\def\csname tex4ht\endcsname{#1,html}\input tex4ht.sty }}\def\HCode{\futurelet\HCode\HChar}\def\HChar{\ifx"\HCode\def\HCode"##1"{\Link##1}\expandafter\HCode\else\expandafter\Link\fi}\HCode '$2'.a.b.c.\input ' $1
tex4ht -f/$1 -i~/tex4ht.dir/texmf/tex4ht/ht-fonts/$3
- t4ht -f/$1 $4 -cvalidatehtml ## -d~/WWW/temp/ -m644
+ t4ht -f/$1 $4 ## -d~/WWW/temp/ -m644
diff --git a/Master/bin/sparc-solaris/httexi b/Master/bin/sparc-solaris/httexi
index b3d841ed9a3..0ce3cb4a589 100755
--- a/Master/bin/sparc-solaris/httexi
+++ b/Master/bin/sparc-solaris/httexi
@@ -3,7 +3,7 @@
tex $5 '\def\Link#1.a.b.c.{\expandafter\def\csname tex4ht\endcsname{\expandafter\def\csname tex4ht\endcsname{#1,html}\input tex4ht.sty }}\def\HCode{\futurelet\HCode\HChar}\def\HChar{\ifx"\HCode\def\HCode"##1"{\Link##1}\expandafter\HCode\else\expandafter\Link\fi}\let\svrm=\rm\def\rm{\svrm\ifx\c\comment\def\rm{\let\rm=\svrm\catcode`\@=12\catcode`\\=0 \csname tex4ht\endcsname\catcode`\@=0\catcode`\\=13 }\expandafter\rm\fi}\HCode '$2'.a.b.c.\input ' $1
tex $5 '\def\Link#1.a.b.c.{\expandafter\def\csname tex4ht\endcsname{\expandafter\def\csname tex4ht\endcsname{#1,html}\input tex4ht.sty }}\def\HCode{\futurelet\HCode\HChar}\def\HChar{\ifx"\HCode\def\HCode"##1"{\Link##1}\expandafter\HCode\else\expandafter\Link\fi}\let\svrm=\rm\def\rm{\svrm\ifx\c\comment\def\rm{\let\rm=\svrm\catcode`\@=12\catcode`\\=0 \csname tex4ht\endcsname\catcode`\@=0\catcode`\\=13 }\expandafter\rm\fi}\HCode '$2'.a.b.c.\input ' $1
tex4ht -f/$1 -i~/tex4ht.dir/texmf/tex4ht/ht-fonts/$3
- t4ht -f/$1 $4 -cvalidatehtml ## -d~/WWW/temp/ -m644
+ t4ht -f/$1 $4 ## -d~/WWW/temp/ -m644
# texindex ?
diff --git a/Master/bin/sparc-solaris/info b/Master/bin/sparc-solaris/info
index ecd39fb0b11..dc21f3379ed 100755
--- a/Master/bin/sparc-solaris/info
+++ b/Master/bin/sparc-solaris/info
Binary files differ
diff --git a/Master/bin/sparc-solaris/infokey b/Master/bin/sparc-solaris/infokey
index 5890562f0fc..d47ea7bb44d 100755
--- a/Master/bin/sparc-solaris/infokey
+++ b/Master/bin/sparc-solaris/infokey
Binary files differ
diff --git a/Master/bin/sparc-solaris/install-info b/Master/bin/sparc-solaris/install-info
index 917365b762c..92b5d770052 100755
--- a/Master/bin/sparc-solaris/install-info
+++ b/Master/bin/sparc-solaris/install-info
Binary files differ
diff --git a/Master/bin/sparc-solaris/jadetex b/Master/bin/sparc-solaris/jadetex
index eb4e1e5aff7..f68cc91498e 120000
--- a/Master/bin/sparc-solaris/jadetex
+++ b/Master/bin/sparc-solaris/jadetex
@@ -1 +1 @@
-pdfetex \ No newline at end of file
+pdftex \ No newline at end of file
diff --git a/Master/bin/sparc-solaris/kpseaccess b/Master/bin/sparc-solaris/kpseaccess
index b86110c3234..8c26a716853 100755
--- a/Master/bin/sparc-solaris/kpseaccess
+++ b/Master/bin/sparc-solaris/kpseaccess
Binary files differ
diff --git a/Master/bin/sparc-solaris/kpsereadlink b/Master/bin/sparc-solaris/kpsereadlink
index 5f838f8b54c..50302aa6d12 100755
--- a/Master/bin/sparc-solaris/kpsereadlink
+++ b/Master/bin/sparc-solaris/kpsereadlink
Binary files differ
diff --git a/Master/bin/sparc-solaris/kpsestat b/Master/bin/sparc-solaris/kpsestat
index 4282a951336..337efbe5727 100755
--- a/Master/bin/sparc-solaris/kpsestat
+++ b/Master/bin/sparc-solaris/kpsestat
Binary files differ
diff --git a/Master/bin/sparc-solaris/kpsewhich b/Master/bin/sparc-solaris/kpsewhich
index 7f84ffd4f30..640d315ffd8 100755
--- a/Master/bin/sparc-solaris/kpsewhich
+++ b/Master/bin/sparc-solaris/kpsewhich
Binary files differ
diff --git a/Master/bin/sparc-solaris/lacheck b/Master/bin/sparc-solaris/lacheck
index 6988e690fdd..4b5da65d0fe 100755
--- a/Master/bin/sparc-solaris/lacheck
+++ b/Master/bin/sparc-solaris/lacheck
Binary files differ
diff --git a/Master/bin/sparc-solaris/latex b/Master/bin/sparc-solaris/latex
index eb4e1e5aff7..f68cc91498e 120000
--- a/Master/bin/sparc-solaris/latex
+++ b/Master/bin/sparc-solaris/latex
@@ -1 +1 @@
-pdfetex \ No newline at end of file
+pdftex \ No newline at end of file
diff --git a/Master/bin/sparc-solaris/luatools b/Master/bin/sparc-solaris/luatools
new file mode 100755
index 00000000000..cb3ec1add4a
--- /dev/null
+++ b/Master/bin/sparc-solaris/luatools
@@ -0,0 +1,2 @@
+#!/bin/sh
+texmfstart luatools.lua "$@"
diff --git a/Master/bin/sparc-solaris/mag b/Master/bin/sparc-solaris/mag
index 9380937d3c6..da0aaebbdab 100755
--- a/Master/bin/sparc-solaris/mag
+++ b/Master/bin/sparc-solaris/mag
Binary files differ
diff --git a/Master/bin/sparc-solaris/makeindex b/Master/bin/sparc-solaris/makeindex
index b7019df5370..d93ee996503 100755
--- a/Master/bin/sparc-solaris/makeindex
+++ b/Master/bin/sparc-solaris/makeindex
Binary files differ
diff --git a/Master/bin/sparc-solaris/makeinfo b/Master/bin/sparc-solaris/makeinfo
index 7ea2c7bfcdf..ba56d2b4f8d 100755
--- a/Master/bin/sparc-solaris/makeinfo
+++ b/Master/bin/sparc-solaris/makeinfo
Binary files differ
diff --git a/Master/bin/sparc-solaris/makempx b/Master/bin/sparc-solaris/makempx
index 8aaa9bac1dc..11a6c11eb1e 100755
--- a/Master/bin/sparc-solaris/makempx
+++ b/Master/bin/sparc-solaris/makempx
Binary files differ
diff --git a/Master/bin/sparc-solaris/makempy b/Master/bin/sparc-solaris/makempy
index afced152700..4bf7a1af230 120000..100755
--- a/Master/bin/sparc-solaris/makempy
+++ b/Master/bin/sparc-solaris/makempy
@@ -1 +1,2 @@
-texexec \ No newline at end of file
+#!/bin/sh
+texmfstart makempy.pl "$@"
diff --git a/Master/bin/sparc-solaris/mex b/Master/bin/sparc-solaris/mex
index eb4e1e5aff7..f68cc91498e 120000
--- a/Master/bin/sparc-solaris/mex
+++ b/Master/bin/sparc-solaris/mex
@@ -1 +1 @@
-pdfetex \ No newline at end of file
+pdftex \ No newline at end of file
diff --git a/Master/bin/sparc-solaris/mf b/Master/bin/sparc-solaris/mf
index bdb9739918a..01d307b6b0a 100755
--- a/Master/bin/sparc-solaris/mf
+++ b/Master/bin/sparc-solaris/mf
Binary files differ
diff --git a/Master/bin/sparc-solaris/mf-nowin b/Master/bin/sparc-solaris/mf-nowin
index 81df78f493d..c9cfc1dfd6f 100755
--- a/Master/bin/sparc-solaris/mf-nowin
+++ b/Master/bin/sparc-solaris/mf-nowin
Binary files differ
diff --git a/Master/bin/sparc-solaris/mft b/Master/bin/sparc-solaris/mft
index 3a9bdf1fd9f..19aa4c513c7 100755
--- a/Master/bin/sparc-solaris/mft
+++ b/Master/bin/sparc-solaris/mft
Binary files differ
diff --git a/Master/bin/sparc-solaris/mk4ht b/Master/bin/sparc-solaris/mk4ht
index 019d9cfc7c8..0f4b664506c 100755
--- a/Master/bin/sparc-solaris/mk4ht
+++ b/Master/bin/sparc-solaris/mk4ht
@@ -1,7 +1,7 @@
#!/usr/bin/env perl
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-# mk4ht 2005-09-23-22:09 %
-# Copyright (C) 2003--2005 Eitan M. Gurari %
+# mk4ht 2006-08-28-20:45 %
+# Copyright (C) 2003--2006 Eitan M. Gurari %
# %
# %
# This work may be distributed and/or modified under the %
@@ -29,56 +29,72 @@ my @options = (
"ht", "htlatex", "latex", "", "", "-cvalidatehtml",
"ht", "httex", "tex", "", "", "-cvalidatehtml",
"ht", "httexi", "texi", "", "", "-cvalidatehtml",
- "ht", "htcontext", "texexec", "", "", "-cvalidatehtml",
+ "ht", "htcontext", "context", "", "", "-cvalidatehtml",
+ "xh", "xhlatex", "latex", "xhtml", "", "-cvalidate",
+ "xh", "xhtex", "tex", "xhtml", "", "-cvalidate",
+ "xh", "xhtexi", "texi", "xhtml", "", "-cvalidate",
+ "xh", "xhcontext","context", "xhtml", "", "-cvalidat",
"uxh", "uxhlatex", "latex", "xhtml,uni-html4", " -cunihtf", "-cvalidate",
"uxh", "uxhtex", "tex", "xhtml,uni-html4", " -cunihtf", "-cvalidate",
"uxh", "uxhtexi", "texi", "xhtml,uni-html4", " -cunihtf", "-cvalidate",
- "uxh", "uxhcontext","texexec", "xhtml,uni-html4", " -cunihtf", "-cvalidate",
+ "uxh", "uxhcontext","context", "xhtml,uni-html4", " -cunihtf", "-cvalidate",
"xhm", "xhmlatex", "latex", "xhtml,mathml", " -cunihtf", "-cvalidate",
"xhm", "xhmtex", "tex", "xhtml,mathml", " -cunihtf", "-cvalidate",
"xhm", "xhmtexi", "texi", "xhtml,mathml", " -cunihtf", "-cvalidate",
- "xhm", "xhmcontext","texexec", "xhtml,mathml", " -cunihtf", "-cvalidate",
+ "xhm", "xhmcontext","context", "xhtml,mathml", " -cunihtf", "-cvalidate",
"mz", "mzlatex", "latex", "xhtml,mozilla", " -cmozhtf", "-cvalidate",
"mz", "mztex", "tex", "xhtml,mozilla", " -cmozhtf", "-cvalidate",
"mz", "mztexi", "texi", "xhtml,mozilla", " -cmozhtf", "-cvalidate",
- "mz", "mzcontext", "texexec", "xhtml,mozilla", " -cmozhtf", "-cvalidate",
- "oo", "oolatex", "latex", "xhtml,ooffice", "ooffice/\! -cmozhtf", "-coo -cvalidate",
- "oo", "ootex", "tex", "xhtml,ooffice", "ooffice/\! -cmozhtf", "-coo -cvalidate",
- "oo", "ootexi", "texi", "xhtml,ooffice", "ooffice/\! -cmozhtf", "-coo -cvalidate",
- "oo", "oocontext", "texexec", "xhtml,ooffice", "ooffice/\! -cmozhtf", "-coo -cvalidate",
+ "mz", "mzcontext", "context", "xhtml,mozilla", " -cmozhtf", "-cvalidate",
+ "oo", "oolatex", "latex", "xhtml,ooffice", "ooffice/\! -cmozhtf", "-cooxtpipes -coo",
+ "oo", "ootex", "tex", "xhtml,ooffice", "ooffice/\! -cmozhtf", "-cooxtpipes -coo",
+ "oo", "ootexi", "texi", "xhtml,ooffice", "ooffice/\! -cmozhtf", "-cooxtpipes -coo",
+ "oo", "oocontext", "context", "xhtml,ooffice", "ooffice/\! -cmozhtf", "-cooxtpipes -coo",
+ "es", "eslatex", "latex", "xhtml,emspk", " -cemspkhtf -s4es", "-cemspk",
+ "es", "estex", "tex", "xhtml,emspk", " -cemspkhtf -s4es", "-cemspk",
+ "es", "estexi", "texi", "xhtml,emspk", " -cemspkhtf -s4es", "-cemspk",
+ "es", "escontext", "context", "xhtml,emspk", " -cemspkhtf -s4es", "-cemspk",
+ "js", "jslatex", "latex", "xhtml,jsml", " -cjsmlhtf", "-cjsml",
+ "js", "jstex", "tex", "xhtml,jsml", " -cjsmlhtf", "-cjsml",
+ "js", "jstexi", "texi", "xhtml,jsml", " -cjsmlhtf", "-cjsml",
+ "js", "jscontext", "context", "xhtml,jsml", " -cjsmlhtf", "-cjsml",
"tei", "teilatex", "latex", "xhtml,tei", " -cunihtf", "-cvalidate",
"tei", "teitex", "tex", "xhtml,tei", " -cunihtf", "-cvalidate",
"tei", "teitexi", "texi", "xhtml,tei", " -cunihtf", "-cvalidate",
- "tei", "teicontext","texexec", "xhtml,tei", " -cunihtf", "-cvalidate",
+ "tei", "teicontext","context", "xhtml,tei", " -cunihtf", "-cvalidate",
"teim", "teimlatex", "latex", "xhtml,tei-mml"," -cunihtf", "-cvalidate",
"teim", "teimtex", "tex", "xhtml,tei-mml"," -cunihtf", "-cvalidate",
"teim", "teimtexi", "texi", "xhtml,tei-mml"," -cunihtf", "-cvalidate",
- "teim", "teimcontext","texexec","xhtml,tei-mml"," -cunihtf", "-cvalidate",
- "db", "dblatex", "latex", "xhtml,docbook", " -cunihtf", "-cvalidate",
- "db", "dbtex", "tex", "xhtml,docbook", " -cunihtf", "-cvalidate",
- "db", "dbtexi", "texi", "xhtml,docbook", " -cunihtf", "-cvalidate",
- "db", "dbcontext", "texexec", "xhtml,docbook", " -cunihtf", "-cvalidate",
- "dbm", "dbmlatex", "latex", "xhtml,docbook-mml", " -cunihtf", "-cvalidate",
- "dbm", "dbmtex", "tex", "xhtml,docbook-mml", " -cunihtf", "-cvalidate",
- "dbm", "dbmtexi", "texi", "xhtml,docbook-mml", " -cunihtf", "-cvalidate",
- "dbm", "dbmcontext","texexec", "xhtml,docbook-mml", " -cunihtf", "-cvalidate",
+ "teim", "teimcontext","context","xhtml,tei-mml"," -cunihtf", "-cvalidate",
+ "db", "dblatex", "latex", "xhtml,docbook", " -cunihtf", "-cvalidate -cdocbk",
+ "db", "dbtex", "tex", "xhtml,docbook", " -cunihtf", "-cvalidate -cdocbk",
+ "db", "dbtexi", "texi", "xhtml,docbook", " -cunihtf", "-cvalidate -cdocbk",
+ "db", "dbcontext", "context", "xhtml,docbook", " -cunihtf", "-cvalidate -cdocbk",
+ "dbm", "dbmlatex", "latex", "xhtml,docbook-mml", " -cunihtf", "-cdocbk",
+ "dbm", "dbmtex", "tex", "xhtml,docbook-mml", " -cunihtf", "-cdocbk",
+ "dbm", "dbmtexi", "texi", "xhtml,docbook-mml", " -cunihtf", "-cdocbk",
+ "dbm", "dbmcontext","context", "xhtml,docbook-mml", " -cunihtf", "-cdocbk",
"w", "wlatex", "latex", "xhtml,word", " -csymhtf", "",
"w", "wtex", "tex", "xhtml,word", " -csymhtf", "",
"w", "wtexi", "texi", "xhtml,word", " -csymhtf", "",
- "w", "wcontext", "texexec", "xhtml,word", " -csymhtf", "",
- "jh", "jhlatex", "latex", "html,javahelp,3.2,unicode,jh1.0", " -cmozhtf -u10", " -d%1-doc/ -cjavahelp -cvalidate",
- "jh", "jhtex", "tex", "html,javahelp,3.2,unicode,jh1.0", " -cmozhtf -u10", " -d%1-doc/ -cjavahelp -cvalidate",
- "jh", "jhtexi", "texi", "html,javahelp,3.2,unicode,jh1.0", " -cmozhtf -u10", " -d%1-doc/ -cjavahelp -cvalidate",
- "jh", "jhcontext","texexec", "html,javahelp,3.2,unicode,jh1.0", " -cmozhtf -u10", " -d%1-doc/ -cjavahelp -cvalidate",
+ "w", "wcontext", "context", "xhtml,word", " -csymhtf", "",
+ "jh", "jhlatex", "latex", "html,javahelp,3.2,unicode", " -cmozhtf -u10", " -d%1-doc/ -cjavahelp -cvalidatehtml",
+ "jh", "jhtex", "tex", "html,javahelp,3.2,unicode", " -cmozhtf -u10", " -d%1-doc/ -cjavahelp -cvalidatehtml",
+ "jh", "jhtexi", "texi", "html,javahelp,3.2,unicode", " -cmozhtf -u10", " -d%1-doc/ -cjavahelp -cvalidatehtml",
+ "jh", "jhcontext","context", "html,javahelp,3.2,unicode", " -cmozhtf -u10", " -d%1-doc/ -cjavahelp -cvalidatehtml",
+ "jh1", "jh1latex", "latex", "html,javahelp,3.2,unicode,jh1.0", " -cmozhtf -u10", " -d%1-doc/ -cjavahelp",
+ "jh1", "jh1tex", "tex", "html,javahelp,3.2,unicode,jh1.0", " -cmozhtf -u10", " -d%1-doc/ -cjavahelp",
+ "jh1", "jh1texi", "texi", "html,javahelp,3.2,unicode,jh1.0", " -cmozhtf -u10", " -d%1-doc/ -cjavahelp",
+ "jh1", "jh1context","context", "html,javahelp,3.2,unicode,jh1.0", " -cmozhtf -u10", " -d%1-doc/ -cjavahelp",
);
sub showInstrucions(){
print " option1: mk4ht #1 \"#2\" \"#3\" \"#4\" \"#5\"\n";
print " \n";
- print " #1: htlatex, mzlatex, oolatex, dblatex, dbmlatex,\n";
- print " teilatex, teimlatex, uxhlatex, wlatex, xhlatex,\n";
- print " xhmlatex\n";
+ print " #1: htlatex, xhlatex, mzlatex, oolatex, dblatex, dbmlatex,\n";
+ print " jhlatex, eslatex, teilatex, teimlatex, uxhlatex, \n";
+ print " wlatex, xhmlatex\n";
print " \n";
print " also 'tex', 'texi', and 'context' instead of 'latex'\n";
print " \n";
@@ -99,9 +115,70 @@ sub showInstrucions(){
print " variable, the requests for the commands \"latex\",\n";
print " \"tex\", etc. can be replaced with other equivalent\n";
print " commands (e.g., \"tex -fmt=latex\").\n";
+
+ print "--------------------------------------------------------------------------\n";
+print " Private configuration file: mk4ht.cfg\n";
+print "--------------------------------------------------------------------------\n";
+print "\n";
+print "A private configuration file mk4ht.cfg or .mk4ht may be placed at the\n";
+print "work or home directory, to update existing commands and introduce new\n";
+print "ones. The configuration file may contain records of the following\n";
+print "kinds.\n";
+print "\n";
+print " # Comment\n";
+print " \n";
+print " name = type\n";
+print " Defines a ht*tex like command, and assocites to it the \n";
+print " TeX compiler of the specified type. Examples of TeX \n";
+print " types: latex, tex, texi, and context.\n";
+print " \n";
+print " name.tex = options\n";
+print " Command line options for the compilation under\n";
+print " the (la)tex compiler\n";
+print " \n";
+print " name.tex4ht = options\n";
+print " Command line options for tex4ht.c \n";
+print " \n";
+print " name.t4ht = options\n";
+print " Command line options for t4ht.c\n";
+print " \n";
+print "Each record should appear in a different line. Variants\n";
+print "`name.tex += options', `name.tex4ht += options',\n";
+print "`name.t4ht += options' of the above records are also allowed.\n";
+print "They append the listed options to the base values.\n";
+print "\n";
+print "Example:\n";
+print "\n";
+print " foohlatex = latex\n";
+print " foohlatex.tex = xhtml,uni-html4\n";
+print " foohlatex.tex4ht += -cunihtf\n";
+print " foohlatex.t4ht = -cvalidate\n";
+print " htlatex.t4ht += -d./\n";
+
+
+ print "--------------------------------------------------------------------------\n";
+print " Deleting files\n";
+print "--------------------------------------------------------------------------\n";
+print "\n";
+print "The configuration file mk4ht.cfg may also contain requests for\n";
+print "removing files created in the work directory during the compilation.\n";
+print "The requests are to be made through records of the following forms.\n";
+print "\n";
+print " clean ext1 ext2 ...\n";
+print " The extensions of the file name to be removed.\n";
+print " \n";
+print " clean.name ext1 ext2 ...\n";
+print " Conditional request. The `name' refers to the ht*tex \n";
+print " like command in use.\n";
+print "\n";
+print "Example:\n";
+print " clean dvi idv\n";
+print " clean.foohlatex lg \n";
+print " clean.htlatex lg tmp\n";
+
}
-print "mk4ht (2005-09-23-22:09)\n";
+print "mk4ht (2006-08-28-20:45)\n";
if( !@ARGV ){
print "improper command\n";
showInstrucions(); exit(1);
@@ -110,22 +187,118 @@ my @command=("","","","","");
my $i=0;
my $j=0;
my $param;
+my $name;
+my $compiler;
+my $tex;
+my $tex4ht;
+my $t4ht;
+my $texp;
+my $tex4htp = "";
+my $t4htp = "";
+my @ext;
+
foreach $param (@ARGV) {
if( $i == 0 ){
+ my $inf;
+open $inf, "<mk4ht.cfg"
+or
+( open $inf, "<.mk4ht"
+ or
+ (
+ open $inf, "<" . $ENV{HOME} . "/mk4ht.cfg"
+ or
+ (
+ open $inf, "<" . $ENV{HOME} . "/.mk4ht"
+ or $inf = ""
+) ) )
+;
+
+if( $inf ){
+ print "(mk4ht cfg)\n";
+ while(<$inf>) {
+ my($line) = $_;
+ chomp($line); # remove eoln char
+ if ($line =~ m|\s*#.*|) {}
+ elsif($line =~ m|^\s*(\S*)\.(\S*)\s*\+=\s*(.*\S)\s*$|) {
+ if( ($param."tex4ht") eq ($1.$2) ){
+ $tex4htp = $tex4htp . " " . $3;
+ }
+ elsif( ($param."t4ht") eq ($1.$2) ){
+ $t4htp = $t4htp . " " . $3;
+ }
+ elsif( ($param."tex") eq ($1.$2) ){
+ $texp = $texp . "," . $3;
+ }
+ }
+ elsif($line =~ m|^\s*(\S*)\.(\S*)\s*=\s*(.*\S)\s*$|) {
+ if( ($param."tex4ht") eq ($1.$2) ){
+ $tex4ht = $3 . " ";
+ $tex4htp = "";
+ }
+ elsif( ($param."t4ht") eq ($1.$2) ){
+ $t4ht = $3 . " ";
+ $t4htp = "";
+ }
+ elsif( ($param."tex") eq ($1.$2) ){
+ $tex = $3 . ",";
+ $texp = "";
+ }
+ }
+ elsif($line =~ m|^\s*(\S*)\s*=\s*(.*\S)\s*$|) {
+ if( $param eq $1 ){
+ $name = $1;
+ $compiler = $2;
+ }
+ }
+ elsif($line =~ m|^\s*clean\s+(.+)|){
+ my(@array) = split(' ',$1);
+ push(@ext,@array);
+} elsif($line =~ m|^\s*clean\.(\S+)\s+(.+)|){
+ if( $1 eq @ARGV[0] ){
+ my(@array) = split(' ',$2);
+ push(@ext,@array);
+} }
+
+ elsif ($line) { print "--- Error --- " . $line . "\n"; }
+ }
+ close $inf;
+}
+
for( $j=1; $j<$#options; $j+=6 ){
if( $param eq $options[$j] ){
- if( $options[$j-1] eq "" ){
- $command[0] = $options[$j];
+ if( $name ){
+ $command[0] = "ht".$compiler;
+if( $tex ){ $command[2] = $tex; } else { $command[2] = ""; }
+if( $tex4ht ){ $command[3] = $tex4ht; } else { $command[3] = ""; }
+if( $t4ht ){ $command[4] = $t4ht; } else { $command[4] = ""; }
+
} else {
- $command[0] = "ht".$options[$j+1];
+ if( $options[$j-1] eq "" ){
+ $command[0] = $options[$j];
+} else {
+ $command[0] = "ht".$options[$j+1];
+}
+if( $tex ){ $command[2] = $tex; } else { $command[2] = $options[$j+2]; }
+if( $tex4ht ){ $command[3] = $tex4ht; } else { $command[3] = $options[$j+3]; }
+if( $t4ht ){ $command[4] = $t4ht; } else { $command[4] = $options[$j+4]; }
+
}
- $command[2] = $options[$j+2];
- $command[3] = $options[$j+3];
- $command[4] = $options[$j+4];
+ if( $texp ){ $command[2] = $command[2] . "," . $texp; }
+if( $tex4htp){ $command[3] = $command[3] . " " . $tex4htp; }
+if( $t4htp ){ $command[4] = $command[4] . " " . $t4htp; }
+
last;
} }
- if( $j>$#options ){ print "improper command: $param \n";
- showInstrucions(); exit(1); }
+ if( $j>$#options ){
+ if( $name ){ $command[0] = "ht".$compiler;
+if( $tex ){ $command[2] = $tex; } else { $command[2] = ""; }
+if( $tex4ht ){ $command[3] = $tex4ht; } else { $command[3] = ""; }
+if( $t4ht ){ $command[4] = $t4ht; } else { $command[4] = ""; }
+ }
+ else {
+ print "improper command: $param \n";
+ showInstrucions(); exit(1);
+ } }
} elsif ( $i== 1 ) {
$command[1] = $param;
} elsif ( $i== 2 ) {
@@ -148,6 +321,22 @@ print "$commando\n";
my $rtrn;
if( $rtrn = system($commando) ){
print "--- error --- failed to execute command\n";
-} else { exit( !$rtrn ); }
+} else {
+ my $file;
+my $ext;
+my(@array) = split('\.',@ARGV[1]);
+my $texFile = @array[0];
+opendir(DIR,".") ;
+while ($file = readdir(DIR) ){
+ if(index($file,$texFile) == 0 ){
+ foreach $ext(@ext){
+ if (index($file,$ext,length($file)-length($ext)) != -1){
+ if( stat($file)){
+ unlink($file);
+ print "Deleted: ". $file . "\n";
+} } } } }
+closedir(DIR);
+ exit( !$rtrn );
+}
diff --git a/Master/bin/sparc-solaris/mllatex b/Master/bin/sparc-solaris/mllatex
index eb4e1e5aff7..f68cc91498e 120000
--- a/Master/bin/sparc-solaris/mllatex
+++ b/Master/bin/sparc-solaris/mllatex
@@ -1 +1 @@
-pdfetex \ No newline at end of file
+pdftex \ No newline at end of file
diff --git a/Master/bin/sparc-solaris/mltex b/Master/bin/sparc-solaris/mltex
index eb4e1e5aff7..f68cc91498e 120000
--- a/Master/bin/sparc-solaris/mltex
+++ b/Master/bin/sparc-solaris/mltex
@@ -1 +1 @@
-pdfetex \ No newline at end of file
+pdftex \ No newline at end of file
diff --git a/Master/bin/sparc-solaris/mmafm b/Master/bin/sparc-solaris/mmafm
index 41c37be34ad..86488ac577a 100755
--- a/Master/bin/sparc-solaris/mmafm
+++ b/Master/bin/sparc-solaris/mmafm
Binary files differ
diff --git a/Master/bin/sparc-solaris/mmpfb b/Master/bin/sparc-solaris/mmpfb
index 0e17c8f4b1e..d173f86c573 100755
--- a/Master/bin/sparc-solaris/mmpfb
+++ b/Master/bin/sparc-solaris/mmpfb
Binary files differ
diff --git a/Master/bin/sparc-solaris/mpost b/Master/bin/sparc-solaris/mpost
index 70ebf093239..ca12cb0b0b5 100755
--- a/Master/bin/sparc-solaris/mpost
+++ b/Master/bin/sparc-solaris/mpost
Binary files differ
diff --git a/Master/bin/sparc-solaris/mpstools b/Master/bin/sparc-solaris/mpstools
new file mode 100755
index 00000000000..b4c8f634548
--- /dev/null
+++ b/Master/bin/sparc-solaris/mpstools
@@ -0,0 +1,2 @@
+#!/bin/sh
+texmfstart mpstools.rb "$@"
diff --git a/Master/bin/sparc-solaris/mpto b/Master/bin/sparc-solaris/mpto
index 269e8a50bbc..04bb5b391e4 100755
--- a/Master/bin/sparc-solaris/mpto
+++ b/Master/bin/sparc-solaris/mpto
Binary files differ
diff --git a/Master/bin/sparc-solaris/mptopdf b/Master/bin/sparc-solaris/mptopdf
index afced152700..980a3123d1a 120000..100755
--- a/Master/bin/sparc-solaris/mptopdf
+++ b/Master/bin/sparc-solaris/mptopdf
@@ -1 +1,2 @@
-texexec \ No newline at end of file
+#!/bin/sh
+texmfstart mptopdf.pl "$@"
diff --git a/Master/bin/sparc-solaris/mtxtools b/Master/bin/sparc-solaris/mtxtools
new file mode 100755
index 00000000000..2922e0b4674
--- /dev/null
+++ b/Master/bin/sparc-solaris/mtxtools
@@ -0,0 +1,2 @@
+#!/bin/sh
+texmfstart mtxtools.rb "$@"
diff --git a/Master/bin/sparc-solaris/musixflx b/Master/bin/sparc-solaris/musixflx
index 6efdbb61d4f..4e12d3e585d 100755
--- a/Master/bin/sparc-solaris/musixflx
+++ b/Master/bin/sparc-solaris/musixflx
Binary files differ
diff --git a/Master/bin/sparc-solaris/newer b/Master/bin/sparc-solaris/newer
index 1306784fefc..a63cf6ced99 100755
--- a/Master/bin/sparc-solaris/newer
+++ b/Master/bin/sparc-solaris/newer
Binary files differ
diff --git a/Master/bin/sparc-solaris/odvicopy b/Master/bin/sparc-solaris/odvicopy
index f52ed8f2ffc..bad35019a92 100755
--- a/Master/bin/sparc-solaris/odvicopy
+++ b/Master/bin/sparc-solaris/odvicopy
Binary files differ
diff --git a/Master/bin/sparc-solaris/odvitype b/Master/bin/sparc-solaris/odvitype
index 9f4c4e62831..45b18021618 100755
--- a/Master/bin/sparc-solaris/odvitype
+++ b/Master/bin/sparc-solaris/odvitype
Binary files differ
diff --git a/Master/bin/sparc-solaris/omega b/Master/bin/sparc-solaris/omega
index e6c630c82c0..1046c0c616f 100755
--- a/Master/bin/sparc-solaris/omega
+++ b/Master/bin/sparc-solaris/omega
Binary files differ
diff --git a/Master/bin/sparc-solaris/omfonts b/Master/bin/sparc-solaris/omfonts
index 680e4152382..7004c627db7 100755
--- a/Master/bin/sparc-solaris/omfonts
+++ b/Master/bin/sparc-solaris/omfonts
Binary files differ
diff --git a/Master/bin/sparc-solaris/otangle b/Master/bin/sparc-solaris/otangle
index 3faee33cc62..089e4af3415 100755
--- a/Master/bin/sparc-solaris/otangle
+++ b/Master/bin/sparc-solaris/otangle
Binary files differ
diff --git a/Master/bin/sparc-solaris/otfinfo b/Master/bin/sparc-solaris/otfinfo
index 39876def07c..8d9e95f1b76 100755
--- a/Master/bin/sparc-solaris/otfinfo
+++ b/Master/bin/sparc-solaris/otfinfo
Binary files differ
diff --git a/Master/bin/sparc-solaris/otftotfm b/Master/bin/sparc-solaris/otftotfm
index 26951975d78..6d9e67e6789 100755
--- a/Master/bin/sparc-solaris/otftotfm
+++ b/Master/bin/sparc-solaris/otftotfm
Binary files differ
diff --git a/Master/bin/sparc-solaris/otp2ocp b/Master/bin/sparc-solaris/otp2ocp
index fb434c45dde..cfea54e5df8 100755
--- a/Master/bin/sparc-solaris/otp2ocp
+++ b/Master/bin/sparc-solaris/otp2ocp
Binary files differ
diff --git a/Master/bin/sparc-solaris/outocp b/Master/bin/sparc-solaris/outocp
index 98c7a9bbde7..8b12a41f2d9 100755
--- a/Master/bin/sparc-solaris/outocp
+++ b/Master/bin/sparc-solaris/outocp
Binary files differ
diff --git a/Master/bin/sparc-solaris/patgen b/Master/bin/sparc-solaris/patgen
index b15677dc762..2641c873412 100755
--- a/Master/bin/sparc-solaris/patgen
+++ b/Master/bin/sparc-solaris/patgen
Binary files differ
diff --git a/Master/bin/sparc-solaris/pdfclose b/Master/bin/sparc-solaris/pdfclose
index 059a8fd0ff4..dd1c043069c 100755
--- a/Master/bin/sparc-solaris/pdfclose
+++ b/Master/bin/sparc-solaris/pdfclose
Binary files differ
diff --git a/Master/bin/sparc-solaris/pdfcrop b/Master/bin/sparc-solaris/pdfcrop
index afced152700..c7d2319af7a 120000..100755
--- a/Master/bin/sparc-solaris/pdfcrop
+++ b/Master/bin/sparc-solaris/pdfcrop
@@ -1 +1,308 @@
-texexec \ No newline at end of file
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' && eval 'exec perl -S $0 $argv:q'
+ if 0;
+use strict;
+$^W=1; # turn warning on
+#
+# pdfcrop.pl
+#
+# Copyright (C) 2002, 2004 Heiko Oberdiek.
+#
+# This program may be distributed and/or modified under the
+# conditions of the LaTeX Project Public License, either version 1.2
+# of this license or (at your option) any later version.
+# The latest version of this license is in
+# http://www.latex-project.org/lppl.txt
+# and version 1.2 or later is part of all distributions of LaTeX
+# version 1999/12/01 or later.
+#
+# See file "readme.txt" for a list of files that belong to this project.
+#
+# This file "pdfcrop.pl" may be renamed to "pdfcrop"
+# for installation purposes.
+#
+my $file = "pdfcrop.pl";
+my $program = uc($&) if $file =~ /^\w+/;
+my $version = "1.5";
+my $date = "2004/06/24";
+my $author = "Heiko Oberdiek";
+my $copyright = "Copyright (c) 2002, 2004 by $author.";
+#
+# Reqirements: Perl5, Ghostscript
+# History:
+# 2002/10/30 v1.0: First release.
+# 2002/10/30 v1.1: Option --hires added.
+# 2002/11/04 v1.2: "nul" instead of "/dev/null" for windows.
+# 2002/11/23 v1.3: Use of File::Spec module's "devnull" call.
+# 2002/11/29 v1.4: Option --papersize added.
+# 2004/06/24 v1.5: Clear map file entries so that pdfTeX
+# does not touch the fonts.
+#
+
+### program identification
+my $title = "$program $version, $date - $copyright\n";
+
+### error strings
+my $Error = "!!! Error:"; # error prefix
+
+### string constants for Ghostscript run
+# get Ghostscript command name
+my $GS = "gs";
+$GS = "gs386" if $^O =~ /dos/i;
+$GS = "gsos2" if $^O =~ /os2/i;
+$GS = "gswin32c" if $^O =~ /mswin32/i;
+$GS = "gswin32c" if $^O =~ /cygwin/i;
+
+# Windows detection (no SIGHUP)
+my $Win = 0;
+$Win = 1 if $^O =~ /mswin32/i;
+$Win = 1 if $^O =~ /cygwin/i;
+
+# "null" device
+use File::Spec::Functions qw(devnull);
+my $null = devnull();
+
+### variables
+my $inputfile = "";
+my $outputfile = "";
+my $tmp = "tmp-\L$program\E-$$";
+
+### option variables
+my @bool = ("false", "true");
+$::opt_help = 0;
+$::opt_debug = 0;
+$::opt_verbose = 0;
+$::opt_gscmd = $GS;
+$::opt_pdftexcmd = "pdftex";
+$::opt_margins = "0 0 0 0";
+$::opt_clip = 0;
+$::opt_hires = 0;
+$::opt_papersize = "";
+
+my $usage = <<"END_OF_USAGE";
+${title}Syntax: \L$program\E [options] <input[.pdf]> [output file]
+Function: Margins are calculated and removed for each page in the file.
+Options: (defaults:)
+ --help print usage
+ --(no)verbose verbose printing ($bool[$::opt_verbose])
+ --(no)debug debug informations ($bool[$::opt_debug])
+ --gscmd <name> call of ghostscript ($::opt_gscmd)
+ --pdftexcmd <name> call of pdfTeX ($::opt_pdftexcmd)
+ --margins "<left> <top> <right> <bottom>" ($::opt_margins)
+ add extra margins, unit is bp. If only one number is
+ given, then it is used for all margins, in the case
+ of two numbers they are also used for right and bottom.
+ --(no)clip clipping support, if margins are set ($bool[$::opt_clip])
+ --(no)hires using `%%HiResBoundingBox' ($bool[$::opt_hires])
+ instead of `%%BoundingBox'
+ --papersize <foo> parameter for gs's -sPAPERSIZE=<foo>,
+ use only with older gs versions <7.32 ($::opt_papersize)
+Examples:
+ \L$program\E --margins 10 input.pdf output.pdf
+ \L$program\E --margins '5 10 5 20' --clip input.pdf output.pdf
+END_OF_USAGE
+
+### process options
+my @OrgArgv = @ARGV;
+use Getopt::Long;
+GetOptions(
+ "help!",
+ "debug!",
+ "verbose!",
+ "gscmd=s",
+ "pdftexcmd=s",
+ "margins=s",
+ "clip!",
+ "hires!",
+ "papersize=s",
+) or die $usage;
+!$::opt_help or die $usage;
+
+$::opt_verbose = 1 if $::opt_debug;
+
+@ARGV >= 1 or die $usage;
+
+print $title;
+
+@ARGV <= 2 or die "$Error Too many files!\n";
+
+### input file
+$inputfile = shift @ARGV;
+
+if (! -f $inputfile) {
+ if (-f "$inputfile.pdf") {
+ $inputfile .= ".pdf";
+ }
+ else {
+ die "$Error Input file `$inputfile' not found!\n";
+ }
+}
+
+print "* Input file: $inputfile\n" if $::opt_debug;
+
+### output file
+if (@ARGV) {
+ $outputfile = shift @ARGV;
+}
+else {
+ $outputfile = $inputfile;
+ $outputfile =~ s/\.pdf$//i;
+ $outputfile .= "-crop.pdf";
+}
+
+print "* Output file: $outputfile\n" if $::opt_debug;
+
+### margins
+my ($llx, $lly, $urx, $ury) = (0, 0, 0, 0);
+if ($::opt_margins =~
+ /^\s*([\-\.\d]+)\s+([\-\.\d]+)\s+([\-\.\d]+)\s+([\-\.\d]+)\s*$/) {
+ ($llx, $lly, $urx, $ury) = ($1, $2, $3, $4);
+}
+else {
+ if ($::opt_margins =~ /^\s*([\-\.\d]+)\s+([\-\.\d]+)\s*$/) {
+ ($llx, $lly, $urx, $ury) = ($1, $2, $1, $2);
+ }
+ else {
+ if ($::opt_margins =~ /^\s*([\-\.\d]+)\s*$/) {
+ ($llx, $lly, $urx, $ury) = ($1, $1, $1, $1);
+ }
+ else {
+ die "$Error Parse error (option --margins)!\n";
+ }
+ }
+}
+print "* Margins: $llx $lly $urx $ury\n" if $::opt_debug;
+
+### cleanup system
+my @unlink_files = ();
+my $exit_code = 1;
+sub clean {
+ print "* Cleanup\n" if $::opt_debug;
+ if ($::opt_debug) {
+ print "* Temporary files: @unlink_files\n";
+ }
+ else {
+ for (; @unlink_files>0; ) {
+ unlink shift @unlink_files;
+ }
+ }
+}
+sub cleanup {
+ clean();
+ exit($exit_code);
+}
+$SIG{'INT'} = \&cleanup;
+$SIG{'__DIE__'} = \&clean;
+
+### Calculation of BoundingBoxes
+
+my $cmd = "$::opt_gscmd -sDEVICE=bbox -dBATCH -dNOPAUSE ";
+$cmd .= "-sPAPERSIZE=$::opt_papersize " if $::opt_papersize;
+$cmd .= "-c save pop -f " . $inputfile;
+my $cmdpipe = $cmd . " 2>&1 1>$null |";
+
+my $tmpfile = "$tmp.tex";
+push @unlink_files, $tmpfile;
+open(TMP, ">$tmpfile") or
+ die "$Error Cannot write tmp file `$tmpfile'!\n";
+print TMP "\\def\\pdffile{$inputfile}\n";
+print TMP <<'END_TMP_HEAD';
+\csname pdfmapfile\endcsname{}
+\def\page #1 [#2 #3 #4 #5]{%
+ \count0=#1\relax
+ \setbox0=\hbox{%
+ \pdfximage page #1{\pdffile}%
+ \pdfrefximage\pdflastximage
+ }%
+ \pdfhorigin=-#2bp\relax
+ \pdfvorigin=#3bp\relax
+ \pdfpagewidth=#4bp\relax
+ \advance\pdfpagewidth by -#2bp\relax
+ \pdfpageheight=#5bp\relax
+ \advance\pdfpageheight by -#3bp\relax
+ \ht0=\pdfpageheight
+ \shipout\box0\relax
+}
+\def\pageclip #1 [#2 #3 #4 #5][#6 #7 #8 #9]{%
+ \count0=#1\relax
+ \dimen0=#4bp\relax \advance\dimen0 by -#2bp\relax
+ \edef\imagewidth{\the\dimen0}%
+ \dimen0=#5bp\relax \advance\dimen0 by -#3bp\relax
+ \edef\imageheight{\the\dimen0}%
+ \pdfximage page #1{\pdffile}%
+ \setbox0=\hbox{%
+ \kern -#2bp\relax
+ \lower #3bp\hbox{\pdfrefximage\pdflastximage}%
+ }%
+ \wd0=\imagewidth\relax
+ \ht0=\imageheight\relax
+ \dp0=0pt\relax
+ \pdfhorigin=#6pt\relax
+ \pdfvorigin=#7bp\relax
+ \pdfpagewidth=\imagewidth
+ \advance\pdfpagewidth by #6bp\relax
+ \advance\pdfpagewidth by #8bp\relax
+ \pdfpageheight=\imageheight\relax
+ \advance\pdfpageheight by #7bp\relax
+ \advance\pdfpageheight by #9bp\relax
+ \pdfxform0\relax
+ \shipout\hbox{\pdfrefxform\pdflastxform}%
+}%
+END_TMP_HEAD
+
+print "* Running ghostscript for BoundingBox calculation ...\n"
+ if $::opt_verbose;
+print "* Ghostscript pipe: $cmdpipe\n" if $::opt_debug;
+
+my $page = 0;
+open(CMD, $cmdpipe) or
+ die "$Error Cannot call ghostscript!\n";
+while (<CMD>) {
+ my $bb = ($::opt_hires) ? "%%HiResBoundingBox" : "%%BoundingBox";
+ next unless
+ /^$bb:\s*([\.\d]+) ([\.\d]+) ([\.\d]+) ([\.\d]+)/o;
+ $page++;
+ print "* Page $page: $1 $2 $3 $4\n" if $::opt_verbose;
+ if ($::opt_clip) {
+ print TMP "\\pageclip $page [$1 $2 $3 $4][$llx $lly $urx $ury]\n";
+ }
+ else {
+ my ($a, $b, $c, $d) = ($1 - $llx, $2 - $ury, $3 + $urx, $4 + $lly);
+ print TMP "\\page $page [$a $b $c $d]\n";
+ }
+}
+close(CMD);
+
+print TMP "\\csname \@\@end\\endcsname\n\\end\n";
+close(TMP);
+
+### Run pdfTeX
+
+push @unlink_files, "$tmp.log";
+if ($::opt_verbose) {
+ $cmd = "$::opt_pdftexcmd -interaction=nonstopmode $tmp";
+}
+else {
+ $cmd = "$::opt_pdftexcmd -interaction=batchmode $tmp";
+}
+print "* Running pdfTeX ...\n" if $::opt_verbose;
+print "* pdfTeX call: $cmd\n" if $::opt_debug;
+if ($::opt_verbose) {
+ system($cmd);
+}
+else {
+ `$cmd`;
+}
+if ($?) {
+ die "$Error pdfTeX run failed!\n";
+}
+
+### Move temp file to output
+rename "$tmp.pdf", $outputfile or
+ die "$Error Cannot move `$tmp.pdf' to `$outputfile'!\n";
+
+print "==> $page pages written on `$outputfile'.\n";
+
+$exit_code = 0;
+cleanup();
+
+__END__
diff --git a/Master/bin/sparc-solaris/pdfcslatex b/Master/bin/sparc-solaris/pdfcslatex
index eb4e1e5aff7..f68cc91498e 120000
--- a/Master/bin/sparc-solaris/pdfcslatex
+++ b/Master/bin/sparc-solaris/pdfcslatex
@@ -1 +1 @@
-pdfetex \ No newline at end of file
+pdftex \ No newline at end of file
diff --git a/Master/bin/sparc-solaris/pdfcsplain b/Master/bin/sparc-solaris/pdfcsplain
index eb4e1e5aff7..f68cc91498e 120000
--- a/Master/bin/sparc-solaris/pdfcsplain
+++ b/Master/bin/sparc-solaris/pdfcsplain
@@ -1 +1 @@
-pdfetex \ No newline at end of file
+pdftex \ No newline at end of file
diff --git a/Master/bin/sparc-solaris/pdfetex b/Master/bin/sparc-solaris/pdfetex
index 02c4d32e40f..f68cc91498e 100755..120000
--- a/Master/bin/sparc-solaris/pdfetex
+++ b/Master/bin/sparc-solaris/pdfetex
Binary files differ
diff --git a/Master/bin/sparc-solaris/pdfjadetex b/Master/bin/sparc-solaris/pdfjadetex
index eb4e1e5aff7..f68cc91498e 120000
--- a/Master/bin/sparc-solaris/pdfjadetex
+++ b/Master/bin/sparc-solaris/pdfjadetex
@@ -1 +1 @@
-pdfetex \ No newline at end of file
+pdftex \ No newline at end of file
diff --git a/Master/bin/sparc-solaris/pdflatex b/Master/bin/sparc-solaris/pdflatex
index eb4e1e5aff7..f68cc91498e 120000
--- a/Master/bin/sparc-solaris/pdflatex
+++ b/Master/bin/sparc-solaris/pdflatex
@@ -1 +1 @@
-pdfetex \ No newline at end of file
+pdftex \ No newline at end of file
diff --git a/Master/bin/sparc-solaris/pdfmex b/Master/bin/sparc-solaris/pdfmex
index eb4e1e5aff7..f68cc91498e 120000
--- a/Master/bin/sparc-solaris/pdfmex
+++ b/Master/bin/sparc-solaris/pdfmex
@@ -1 +1 @@
-pdfetex \ No newline at end of file
+pdftex \ No newline at end of file
diff --git a/Master/bin/sparc-solaris/pdfopen b/Master/bin/sparc-solaris/pdfopen
index c2ce5792425..b2319f27013 100755
--- a/Master/bin/sparc-solaris/pdfopen
+++ b/Master/bin/sparc-solaris/pdfopen
Binary files differ
diff --git a/Master/bin/sparc-solaris/pdfplatex b/Master/bin/sparc-solaris/pdfplatex
index eb4e1e5aff7..f68cc91498e 120000
--- a/Master/bin/sparc-solaris/pdfplatex
+++ b/Master/bin/sparc-solaris/pdfplatex
@@ -1 +1 @@
-pdfetex \ No newline at end of file
+pdftex \ No newline at end of file
diff --git a/Master/bin/sparc-solaris/pdftex b/Master/bin/sparc-solaris/pdftex
index eb4e1e5aff7..a5f7c50a9dc 120000..100755
--- a/Master/bin/sparc-solaris/pdftex
+++ b/Master/bin/sparc-solaris/pdftex
Binary files differ
diff --git a/Master/bin/sparc-solaris/pdftools b/Master/bin/sparc-solaris/pdftools
new file mode 100755
index 00000000000..92ee803a868
--- /dev/null
+++ b/Master/bin/sparc-solaris/pdftools
@@ -0,0 +1,2 @@
+#!/bin/sh
+texmfstart pdftools.rb "$@"
diff --git a/Master/bin/sparc-solaris/pdfxmltex b/Master/bin/sparc-solaris/pdfxmltex
index eb4e1e5aff7..f68cc91498e 120000
--- a/Master/bin/sparc-solaris/pdfxmltex
+++ b/Master/bin/sparc-solaris/pdfxmltex
@@ -1 +1 @@
-pdfetex \ No newline at end of file
+pdftex \ No newline at end of file
diff --git a/Master/bin/sparc-solaris/perltex b/Master/bin/sparc-solaris/perltex
index 09a656dae3f..dd8dda2804b 100755
--- a/Master/bin/sparc-solaris/perltex
+++ b/Master/bin/sparc-solaris/perltex
@@ -15,19 +15,23 @@
#
# This is a generated file.
#
-# Copyright (C) 2004 by Scott Pakin <scott+pt@pakin.org>
+# Copyright (C) 2006, Scott Pakin <scott+pt@pakin.org>
#
# This file may be distributed and/or modified under the conditions
-# of the LaTeX Project Public License, either version 1.2 of this
+# of the LaTeX Project Public License, either version 1.3c of this
# license or (at your option) any later version. The latest
# version of this license is in:
#
# http://www.latex-project.org/lppl.txt
#
-# and version 1.2 or later is part of all distributions of LaTeX
-# version 1999/12/01 or later.
+# and version 1.3c or later is part of all distributions of LaTeX
+# version 2006/05/20 or later.
#-------------------------------------------------------------------
+sub top_level_eval ($)
+{
+ return eval $_[0];
+}
use Safe;
use Opcode;
use Getopt::Long;
@@ -49,6 +53,7 @@ my $fromflag;
my $doneflag;
my $logfile;
my $sandbox = new Safe;
+my $sandbox_eval;
my $latexpid;
$latexprog = $ENV{"PERLTEX"} || "latex";
Getopt::Long::Configure("require_order", "pass_through");
@@ -97,9 +102,14 @@ if (!$latexpid) {
exec {$latexcmdline[0]} @latexcmdline;
die "exec('@latexcmdline'): $!\n";
}
-@permittedops=(":browse") if $#permittedops==-1;
-@permittedops=(Opcode::full_opset()) if !$runsafely;
-$sandbox->permit_only (@permittedops);
+if ($runsafely) {
+ @permittedops=(":browse") if $#permittedops==-1;
+ $sandbox->permit_only (@permittedops);
+ $sandbox_eval = sub {$sandbox->reval($_[0])};
+}
+else {
+ $sandbox_eval = \&top_level_eval;
+}
while (1) {
my $awaitexists = sub {
while (!-e $_[0]) {
@@ -136,12 +146,18 @@ while (1) {
}
my $perlcode;
if ($optag eq "DEF") {
- $perlcode =
- sprintf "sub %s {%s}\n",
- $macroname, $otherstuff[0];
+ $perlcode =
+ sprintf "sub %s {%s}\n",
+ $macroname, $otherstuff[0];
+ }
+ elsif ($optag eq "USE") {
+ $perlcode = sprintf "%s (%s);\n", $macroname, join(", ", @otherstuff);
+ }
+ elsif ($optag eq "RUN") {
+ $perlcode = $otherstuff[0];
}
else {
- $perlcode = sprintf "%s (%s);\n", $macroname, join(", ", @otherstuff);
+ die "${progname}: Internal error -- unexpected operation tag \"$optag\"\n";
}
print LOGFILE "#" x 31, " PERL CODE ", "#" x 32, "\n";
print LOGFILE $perlcode, "\n";
@@ -151,13 +167,13 @@ while (1) {
my $warningmsg;
local $SIG{__WARN__} =
sub {chomp ($warningmsg=$_[0]); return 0};
- $result = $sandbox->reval ($perlcode);
+ $result = $sandbox_eval->($perlcode);
if (defined $warningmsg) {
$warningmsg =~ s/at \(eval \d+\) line \d+\W+//;
print LOGFILE "# ===> $warningmsg\n\n";
}
}
- $result="" if !$result;
+ $result="" if !$result || $optag eq "RUN";
if ($@) {
my $msg = $@;
$msg =~ s/at \(eval \d+\) line \d+\W+//;
diff --git a/Master/bin/sparc-solaris/pfb2pfa b/Master/bin/sparc-solaris/pfb2pfa
index a099657bca1..496cf2c9230 100755
--- a/Master/bin/sparc-solaris/pfb2pfa
+++ b/Master/bin/sparc-solaris/pfb2pfa
Binary files differ
diff --git a/Master/bin/sparc-solaris/physe b/Master/bin/sparc-solaris/physe
index eb4e1e5aff7..f68cc91498e 120000
--- a/Master/bin/sparc-solaris/physe
+++ b/Master/bin/sparc-solaris/physe
@@ -1 +1 @@
-pdfetex \ No newline at end of file
+pdftex \ No newline at end of file
diff --git a/Master/bin/sparc-solaris/phyzzx b/Master/bin/sparc-solaris/phyzzx
index eb4e1e5aff7..f68cc91498e 120000
--- a/Master/bin/sparc-solaris/phyzzx
+++ b/Master/bin/sparc-solaris/phyzzx
@@ -1 +1 @@
-pdfetex \ No newline at end of file
+pdftex \ No newline at end of file
diff --git a/Master/bin/sparc-solaris/pk2bm b/Master/bin/sparc-solaris/pk2bm
index b27374a2bc2..3c8b2d7623a 100755
--- a/Master/bin/sparc-solaris/pk2bm
+++ b/Master/bin/sparc-solaris/pk2bm
Binary files differ
diff --git a/Master/bin/sparc-solaris/pktogf b/Master/bin/sparc-solaris/pktogf
index 98a113027d2..ffd481c6dff 100755
--- a/Master/bin/sparc-solaris/pktogf
+++ b/Master/bin/sparc-solaris/pktogf
Binary files differ
diff --git a/Master/bin/sparc-solaris/pktype b/Master/bin/sparc-solaris/pktype
index db5916d690b..4e4a9df2c4a 100755
--- a/Master/bin/sparc-solaris/pktype
+++ b/Master/bin/sparc-solaris/pktype
Binary files differ
diff --git a/Master/bin/sparc-solaris/platex b/Master/bin/sparc-solaris/platex
index eb4e1e5aff7..f68cc91498e 120000
--- a/Master/bin/sparc-solaris/platex
+++ b/Master/bin/sparc-solaris/platex
@@ -1 +1 @@
-pdfetex \ No newline at end of file
+pdftex \ No newline at end of file
diff --git a/Master/bin/sparc-solaris/pltotf b/Master/bin/sparc-solaris/pltotf
index 8f1ab7d11b1..95365c69608 100755
--- a/Master/bin/sparc-solaris/pltotf
+++ b/Master/bin/sparc-solaris/pltotf
Binary files differ
diff --git a/Master/bin/sparc-solaris/pooltype b/Master/bin/sparc-solaris/pooltype
index be6fc9d121a..8f5f567722d 100755
--- a/Master/bin/sparc-solaris/pooltype
+++ b/Master/bin/sparc-solaris/pooltype
Binary files differ
diff --git a/Master/bin/sparc-solaris/ps2pk b/Master/bin/sparc-solaris/ps2pk
index 410675a16a7..7b64252cb25 100755
--- a/Master/bin/sparc-solaris/ps2pk
+++ b/Master/bin/sparc-solaris/ps2pk
Binary files differ
diff --git a/Master/bin/sparc-solaris/ps4pdf b/Master/bin/sparc-solaris/ps4pdf
index 81f254a3735..cbdcb022926 100755
--- a/Master/bin/sparc-solaris/ps4pdf
+++ b/Master/bin/sparc-solaris/ps4pdf
@@ -1,6 +1,13 @@
#!/bin/sh
# Copyright (C) 2004, Thomas Esser. Public domain.
+# 2005-03-08: New option "--crop", Rolf Niepraschk.
+# dvips call only if the dvi file exist (RN).
+# 2005-06-27: ps2pdf call only if the ps file exist (RN).
+# 2006-04-05: "\RequirePackage{pst-pdf}" added to the (pdf)LaTeX calls
+# as suggested by Niall Murphy.
+# 2006-07-14: Better temp dir handling (suggested by Karl Berry) (RN).
+# 2006-07-23: New option --Xps2pdf and code cleanup (thanks to Karl Berry) (RN).
# First, work around bugs/limitations in some shells on some systems:
test -f /bin/sh5 && test -z "$RUNNING_SH5" \
@@ -22,7 +29,7 @@ test -n "${ZSH_VERSION+set}" && alias -g '${1+"$@"}'='"$@"'
###############################################################################
cleanup()
{
- rc=$1
+ rc=$?
$needsCleanup && test -n "$tmpdir" && test -d "$tmpdir" \
&& { rm -f "$tmpdir"/*; cd /; rmdir "$tmpdir"; }
@@ -38,7 +45,7 @@ setupTmpDir()
{
$needsCleanup && return
- trap 'cleanup 1' 1 2 3 7 13 15
+ trap 'cleanup' 1 2 3 7 13 15
needsCleanup=true
(umask 077; mkdir "$tmpdir") \
|| abort "could not create directory \`$tmpdir'"
@@ -61,14 +68,17 @@ myexec()
if test $rc != 0; then
echo "$0: command $@ returned with code $rc"
cat <$log
- cleanup $rc
+ (exit $rc) # set return value
+ cleanup
fi
}
# some initializations
progname=pdflatexps
silent=true # default setting; change if you like
+crop=false
needsCleanup=false
+ps2pdf_opts="-dAutoRotatePages=/None"
tmpdir=${TMPDIR-${TEMP-${TMP-/tmp}}}/.$progname$$
log=$tmpdir/log
version="1.0"
@@ -76,10 +86,16 @@ version="1.0"
# look for optional things first
while
case $1 in
- --help|-h) echo "$0 [-v|-q] file"
- echo "Process LaTeX document containing PSforPDF macros."
- exit 0;;
+ --help|-h) echo "$0 [-v|-q|--crop|--version|--Xps2pdf OPT] FILE"
+ echo "Process LaTeX document FILE using the pst-pdf package,"
+ echo "including running latex, dvips, and ps2pdf as necessary."
+ echo "--Xps2pdf OPT passes OPT to ps2pdf."
+ echo " (-dAutoRotatePages=/None is always passed.)"
+ echo "--crop runs pdfcrop on ps2pdf output."
+ exit 0;;
--version) echo "$progname version $version"; exit 0;;
+ --crop|-c) crop=true;;
+ --Xps2pdf|-Xps2pdf) shift; ps2pdf_opts="$ps2pdf_opts $1";;
-q) silent=true;;
-v) silent=false;;
-*) echo "$progname: unknown option $1 ignored";;
@@ -88,17 +104,30 @@ while
do
shift
done
+
# remaining option: filename
file=$1
+if test -z "$file"; then
+ echo "$0: no file to process, try --help for more information." >&2
+ exit 1
+fi
# jobname von TeX: Verzeichnisse entfernen, evtl. vorhandene Extension
# entfernen.
job=`echo "x$1" | sed 's@x@@; s@.*/@@; s@\.[^.]*$@@'`
setupTmpDir
-myexec latex "$file"
-myexec dvips -Ppdf -o "$job-pics.ps" "$job.dvi"
-myexec ps2pdf -dAutoRotatePages=/None "$job-pics.ps" "$job-pics.pdf"
-myexec pdflatex "$file"
+myexec latex \
+ "\AtBeginDocument{\RequirePackage{pst-pdf}} \input{$file}"
+test -f "$job.dvi" && myexec dvips -Ppdf -o "$job-pics.ps" "$job.dvi"
+test -f "$job-pics.ps" && myexec ps2pdf \
+ "$ps2pdf_opts" "$job-pics.ps" "$job-pics.pdf"
+if $crop; then
+ myexec pdfcrop "$job-pics.pdf" "$job-pics-crop.pdf"
+ mv "$job-pics-crop.pdf" "$job-pics.pdf"
+fi
+myexec pdflatex \
+ "\AtBeginDocument{\RequirePackage{pst-pdf}} \input{$file}"
+true
+cleanup
-cleanup 0
diff --git a/Master/bin/sparc-solaris/psbook b/Master/bin/sparc-solaris/psbook
index 5818848062e..20063070440 100755
--- a/Master/bin/sparc-solaris/psbook
+++ b/Master/bin/sparc-solaris/psbook
Binary files differ
diff --git a/Master/bin/sparc-solaris/psnup b/Master/bin/sparc-solaris/psnup
index df9d7d97e33..8f41a327d3c 100755
--- a/Master/bin/sparc-solaris/psnup
+++ b/Master/bin/sparc-solaris/psnup
Binary files differ
diff --git a/Master/bin/sparc-solaris/psresize b/Master/bin/sparc-solaris/psresize
index a618358688e..61168fd96f9 100755
--- a/Master/bin/sparc-solaris/psresize
+++ b/Master/bin/sparc-solaris/psresize
Binary files differ
diff --git a/Master/bin/sparc-solaris/psselect b/Master/bin/sparc-solaris/psselect
index efb607cd084..c2ca27ba92b 100755
--- a/Master/bin/sparc-solaris/psselect
+++ b/Master/bin/sparc-solaris/psselect
Binary files differ
diff --git a/Master/bin/sparc-solaris/pstopdf b/Master/bin/sparc-solaris/pstopdf
new file mode 100755
index 00000000000..5b38ed426cb
--- /dev/null
+++ b/Master/bin/sparc-solaris/pstopdf
@@ -0,0 +1,2 @@
+#!/bin/sh
+texmfstart pstopdf.rb "$@"
diff --git a/Master/bin/sparc-solaris/pstops b/Master/bin/sparc-solaris/pstops
index 27cbe76c830..9b27550cf58 100755
--- a/Master/bin/sparc-solaris/pstops
+++ b/Master/bin/sparc-solaris/pstops
Binary files differ
diff --git a/Master/bin/sparc-solaris/rlxtools b/Master/bin/sparc-solaris/rlxtools
new file mode 100755
index 00000000000..41cea40fc09
--- /dev/null
+++ b/Master/bin/sparc-solaris/rlxtools
@@ -0,0 +1,2 @@
+#!/bin/sh
+texmfstart rlxtools.rb "$@"
diff --git a/Master/bin/sparc-solaris/runtools b/Master/bin/sparc-solaris/runtools
new file mode 100755
index 00000000000..ff9a333791b
--- /dev/null
+++ b/Master/bin/sparc-solaris/runtools
@@ -0,0 +1,2 @@
+#!/bin/sh
+texmfstart runtools.rb "$@"
diff --git a/Master/bin/sparc-solaris/sjisconv b/Master/bin/sparc-solaris/sjisconv
index 3b43bc7c3f1..a1c37132deb 100755
--- a/Master/bin/sparc-solaris/sjisconv
+++ b/Master/bin/sparc-solaris/sjisconv
Binary files differ
diff --git a/Master/bin/sparc-solaris/sjislatex b/Master/bin/sparc-solaris/sjislatex
index 2c9bc229c7b..68c554e6d71 100755
--- a/Master/bin/sparc-solaris/sjislatex
+++ b/Master/bin/sparc-solaris/sjislatex
@@ -1,5 +1,22 @@
#! /bin/sh
+# Copyright (C) 1994-2006 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
n=1
argv=
diff --git a/Master/bin/sparc-solaris/sjispdflatex b/Master/bin/sparc-solaris/sjispdflatex
index 294c5b188d0..e8d070e9dc6 100755
--- a/Master/bin/sparc-solaris/sjispdflatex
+++ b/Master/bin/sparc-solaris/sjispdflatex
@@ -1,5 +1,22 @@
#! /bin/sh
+# Copyright (C) 1994-2006 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
n=1
argv=
diff --git a/Master/bin/sparc-solaris/t1ascii b/Master/bin/sparc-solaris/t1ascii
index b4da95b11c7..d0265d4221d 100755
--- a/Master/bin/sparc-solaris/t1ascii
+++ b/Master/bin/sparc-solaris/t1ascii
Binary files differ
diff --git a/Master/bin/sparc-solaris/t1asm b/Master/bin/sparc-solaris/t1asm
index c283ef43af9..42969ff901d 100755
--- a/Master/bin/sparc-solaris/t1asm
+++ b/Master/bin/sparc-solaris/t1asm
Binary files differ
diff --git a/Master/bin/sparc-solaris/t1binary b/Master/bin/sparc-solaris/t1binary
index 35abd8663ce..9f8873c4a4a 100755
--- a/Master/bin/sparc-solaris/t1binary
+++ b/Master/bin/sparc-solaris/t1binary
Binary files differ
diff --git a/Master/bin/sparc-solaris/t1disasm b/Master/bin/sparc-solaris/t1disasm
index c74b97d9e52..746d9039b1a 100755
--- a/Master/bin/sparc-solaris/t1disasm
+++ b/Master/bin/sparc-solaris/t1disasm
Binary files differ
diff --git a/Master/bin/sparc-solaris/t1dotlessj b/Master/bin/sparc-solaris/t1dotlessj
index 8e65445addb..bc415645bb5 100755
--- a/Master/bin/sparc-solaris/t1dotlessj
+++ b/Master/bin/sparc-solaris/t1dotlessj
Binary files differ
diff --git a/Master/bin/sparc-solaris/t1lint b/Master/bin/sparc-solaris/t1lint
index 4c180c4b9c7..f2229c310e3 100755
--- a/Master/bin/sparc-solaris/t1lint
+++ b/Master/bin/sparc-solaris/t1lint
Binary files differ
diff --git a/Master/bin/sparc-solaris/t1mac b/Master/bin/sparc-solaris/t1mac
index 0143be13263..40f9d4e3d63 100755
--- a/Master/bin/sparc-solaris/t1mac
+++ b/Master/bin/sparc-solaris/t1mac
Binary files differ
diff --git a/Master/bin/sparc-solaris/t1reencode b/Master/bin/sparc-solaris/t1reencode
index a0624f08518..545459bf93c 100755
--- a/Master/bin/sparc-solaris/t1reencode
+++ b/Master/bin/sparc-solaris/t1reencode
Binary files differ
diff --git a/Master/bin/sparc-solaris/t1testpage b/Master/bin/sparc-solaris/t1testpage
index a800c406b4d..3c8053d7024 100755
--- a/Master/bin/sparc-solaris/t1testpage
+++ b/Master/bin/sparc-solaris/t1testpage
Binary files differ
diff --git a/Master/bin/sparc-solaris/t1unmac b/Master/bin/sparc-solaris/t1unmac
index 0fd10afb4a7..3d9e5c708f2 100755
--- a/Master/bin/sparc-solaris/t1unmac
+++ b/Master/bin/sparc-solaris/t1unmac
Binary files differ
diff --git a/Master/bin/sparc-solaris/t4ht b/Master/bin/sparc-solaris/t4ht
index 5b7c57e6fab..fbfcaf42961 100755
--- a/Master/bin/sparc-solaris/t4ht
+++ b/Master/bin/sparc-solaris/t4ht
Binary files differ
diff --git a/Master/bin/sparc-solaris/tangle b/Master/bin/sparc-solaris/tangle
index 490cd9145a3..8d5dba6deb4 100755
--- a/Master/bin/sparc-solaris/tangle
+++ b/Master/bin/sparc-solaris/tangle
Binary files differ
diff --git a/Master/bin/sparc-solaris/tcdialog b/Master/bin/sparc-solaris/tcdialog
index 71306f9bd30..3a2ed476209 100755
--- a/Master/bin/sparc-solaris/tcdialog
+++ b/Master/bin/sparc-solaris/tcdialog
Binary files differ
diff --git a/Master/bin/sparc-solaris/tex b/Master/bin/sparc-solaris/tex
index 4d1b8a178c9..b314726f17a 100755
--- a/Master/bin/sparc-solaris/tex
+++ b/Master/bin/sparc-solaris/tex
Binary files differ
diff --git a/Master/bin/sparc-solaris/tex4ht b/Master/bin/sparc-solaris/tex4ht
index ab670a4a9d0..fe6a8b7c26e 100755
--- a/Master/bin/sparc-solaris/tex4ht
+++ b/Master/bin/sparc-solaris/tex4ht
Binary files differ
diff --git a/Master/bin/sparc-solaris/texconfig b/Master/bin/sparc-solaris/texconfig
index 633ba7e807d..0dc3f753f0b 100755
--- a/Master/bin/sparc-solaris/texconfig
+++ b/Master/bin/sparc-solaris/texconfig
@@ -24,7 +24,7 @@ test -n "${ZSH_VERSION+set}" && alias -g '${1+"$@"}'='"$@"'
progname=texconfig
# the version string
-version=1118467711 # seconds since `00:00:00 1970-01-01 UTC'
+version=1167506445 # seconds since `00:00:00 1970-01-01 UTC'
# date '+%s' (with GNU date)
envVars="
@@ -632,7 +632,7 @@ Get more help with
echoLocateBinary kpsewhich updmap fmtutil texconfig tex pdfetex mktexpk dvips dvipdfm
echo
echo '=========================== active config files =========================='
- echoLocateCfgfile texmf.cnf updmap.cfg fmtutil.cnf config.ps mktex.cnf XDvi pdftexconfig.tex config | sort +1
+ echoLocateCfgfile texmf.cnf updmap.cfg fmtutil.cnf config.ps mktex.cnf XDvi pdftexconfig.tex config | sort -k 2
echo
echo '============================= font map files ============================='
for m in psfonts.map pdftex.map ps2pk.map dvipdfm.map; do
diff --git a/Master/bin/sparc-solaris/texexec b/Master/bin/sparc-solaris/texexec
index 529d2a8dc23..2158172906a 100755
--- a/Master/bin/sparc-solaris/texexec
+++ b/Master/bin/sparc-solaris/texexec
@@ -1,24 +1,2 @@
#!/bin/sh
-
-test -f /bin/sh5 && test -z "$RUNNING_SH5" \
- && { UNAMES=`uname -s`; test "x$UNAMES" = xULTRIX; } 2>/dev/null \
- && { RUNNING_SH5=true; export RUNNING_SH5; exec /bin/sh5 $0 ${1+"$@"}; }
-unset RUNNING_SH5
-
-test -f /bin/bsh && test -z "$RUNNING_BSH" \
- && { UNAMES=`uname -s`; test "x$UNAMES" = xAIX; } 2>/dev/null \
- && { RUNNING_BSH=true; export RUNNING_BSH; exec /bin/bsh $0 ${1+"$@"}; }
-unset RUNNING_BSH
-
-export PATH
-
-# hack around a bug in zsh:
-test -n "${ZSH_VERSION+set}" && alias -g '${1+"$@"}'='"$@"'
-
-what=`echo $0 | sed 's@.*/@@'`
-
-p=`kpsewhich -format=texmfscripts $what.pl`
-{ test -n "$p" && test -f "$p"; } \
- || { echo "\`$what.pl' not found."; exit 1; }
-
-perl "$p" ${1+"$@"}
+texmfstart texexec.rb "$@"
diff --git a/Master/bin/sparc-solaris/texfont b/Master/bin/sparc-solaris/texfont
index afced152700..a91f786e3f8 120000..100755
--- a/Master/bin/sparc-solaris/texfont
+++ b/Master/bin/sparc-solaris/texfont
@@ -1 +1,2 @@
-texexec \ No newline at end of file
+#!/bin/sh
+texmfstart texfont.pl "$@"
diff --git a/Master/bin/sparc-solaris/texi2html b/Master/bin/sparc-solaris/texi2html
index f5b5b644b5d..40fa6accf5c 100755
--- a/Master/bin/sparc-solaris/texi2html
+++ b/Master/bin/sparc-solaris/texi2html
@@ -75,7 +75,7 @@ my $THISVERSION = '1.76';
my $THISPROG = "texi2html $THISVERSION"; # program name and version
# set by configure, prefix for the sysconfdir and so on
-my $prefix = '/opt/home/vvv/src/tl/inst';
+my $prefix = '/opt/home/vvv/src/texlive/source/inst';
my $sysconfdir;
my $pkgdatadir;
my $datadir;
@@ -92,10 +92,10 @@ else
$sysconfdir = "/usr/local/etc";
}
-if ('/opt/home/vvv/src/tl/inst' ne '@' . 'datadir@')
+if ('/opt/home/vvv/src/texlive/source/inst' ne '@' . 'datadir@')
{
- $pkgdatadir = eval '"/opt/home/vvv/src/tl/inst/texi2html"';
- $datadir = eval '"/opt/home/vvv/src/tl/inst"';
+ $pkgdatadir = eval '"/opt/home/vvv/src/texlive/source/inst/texi2html"';
+ $datadir = eval '"/opt/home/vvv/src/texlive/source/inst"';
}
else
{
diff --git a/Master/bin/sparc-solaris/texindex b/Master/bin/sparc-solaris/texindex
index 94ded1fd876..7eb732799d3 100755
--- a/Master/bin/sparc-solaris/texindex
+++ b/Master/bin/sparc-solaris/texindex
Binary files differ
diff --git a/Master/bin/sparc-solaris/texmfstart b/Master/bin/sparc-solaris/texmfstart
new file mode 100755
index 00000000000..a886b2aa142
--- /dev/null
+++ b/Master/bin/sparc-solaris/texmfstart
@@ -0,0 +1,2556 @@
+#!/usr/bin/env ruby
+
+# program : texmfstart
+# copyright : PRAGMA Advanced Document Engineering
+# version : 1.9.0 - 2003/2006
+# author : Hans Hagen
+#
+# project : ConTeXt / eXaMpLe
+# info : j.hagen@xs4all.nl
+# www : www.pragma-pod.com / www.pragma-ade.com
+
+# no special requirements, i.e. no exa modules/classes used
+
+# texmfstart [switches] filename [optional arguments]
+#
+# ruby2exe texmfstart --help -> avoids stub test
+#
+# Of couse I can make this into a nice class, which i'll undoubtely will
+# do when I feel the need. In that case it will be part of a bigger game.
+
+# turning this into a service would be nice, so some day ...
+
+# --locate => provides location
+# --exec => exec instead of system
+# --iftouched=a,b => only if timestamp a<>b
+# --ifchanged=a,b => only if checksum changed
+#
+# file: path: bin:
+
+# texmfstart --exec bin:scite *.tex
+
+# we don't depend on other libs
+
+$: << File.expand_path(File.dirname($0)) ; $: << File.join($:.last,'lib') ; $:.uniq!
+
+require "rbconfig"
+require "md5"
+
+# kpse_merge_done: require 'base/kpseremote'
+# kpse_merge_done: require 'base/kpsedirect'
+# kpse_merge_done: require 'base/kpsefast'
+# kpse_merge_done: require 'base/merge'
+
+# kpse_merge_start
+
+# kpse_merge_file: 'C:/data/develop/context/ruby/base/kpseremote.rb'
+
+# kpse_merge_done: require 'base/kpsefast'
+
+case ENV['KPSEMETHOD']
+ when /soap/o then # kpse_merge_done: require 'base/kpse/soap'
+ when /drb/o then # kpse_merge_done: require 'base/kpse/drb'
+ else # kpse_merge_done: require 'base/kpse/drb'
+end
+
+class KpseRemote
+
+ @@port = ENV['KPSEPORT'] || 7000
+ @@method = ENV['KPSEMETHOD'] || 'drb'
+
+ def KpseRemote::available?
+ @@method && @@port
+ end
+
+ def KpseRemote::start_server(port=nil)
+ kpse = KpseServer.new(port || @@port)
+ kpse.start
+ end
+
+ def KpseRemote::start_client(port=nil) # keeps object in server
+ kpseclient = KpseClient.new(port || @@port)
+ kpseclient.start
+ kpse = kpseclient.object
+ tree = kpse.choose(KpseUtil::identify, KpseUtil::environment)
+ [kpse, tree]
+ end
+
+ def KpseRemote::fetch(port=nil) # no need for defining methods but slower, send whole object
+ kpseclient = KpseClient.new(port || @@port)
+ kpseclient.start
+ kpseclient.object.fetch(KpseUtil::identify, KpseUtil::environment) rescue nil
+ end
+
+ def initialize(port=nil)
+ if KpseRemote::available? then
+ begin
+ @kpse, @tree = KpseRemote::start_client(port)
+ rescue
+ @kpse, @tree = nil, nil
+ end
+ else
+ @kpse, @tree = nil, nil
+ end
+ end
+
+ def progname=(value)
+ @kpse.set(@tree,'progname',value)
+ end
+ def format=(value)
+ @kpse.set(@tree,'format',value)
+ end
+ def engine=(value)
+ @kpse.set(@tree,'engine',value)
+ end
+
+ def progname
+ @kpse.get(@tree,'progname')
+ end
+ def format
+ @kpse.get(@tree,'format')
+ end
+ def engine
+ @kpse.get(@tree,'engine')
+ end
+
+ def load
+ @kpse.load(KpseUtil::identify, KpseUtil::environment)
+ end
+ def okay?
+ @kpse && @tree
+ end
+ def set(key,value)
+ @kpse.set(@tree,key,value)
+ end
+ def load_cnf
+ @kpse.load_cnf(@tree)
+ end
+ def load_lsr
+ @kpse.load_lsr(@tree)
+ end
+ def expand_variables
+ @kpse.expand_variables(@tree)
+ end
+ def expand_braces(str)
+ clean_name(@kpse.expand_braces(@tree,str))
+ end
+ def expand_path(str)
+ clean_name(@kpse.expand_path(@tree,str))
+ end
+ def expand_var(str)
+ clean_name(@kpse.expand_var(@tree,str))
+ end
+ def show_path(str)
+ clean_name(@kpse.show_path(@tree,str))
+ end
+ def var_value(str)
+ clean_name(@kpse.var_value(@tree,str))
+ end
+ def find_file(filename)
+ clean_name(@kpse.find_file(@tree,filename))
+ end
+ def find_files(filename,first=false)
+ # dodo: each filename
+ @kpse.find_files(@tree,filename,first)
+ end
+
+ private
+
+ def clean_name(str)
+ str.gsub(/\\/,'/')
+ end
+
+end
+
+
+# kpse_merge_file: 'C:/data/develop/context/ruby/base/kpsefast.rb'
+
+# module : base/kpsefast
+# copyright : PRAGMA Advanced Document Engineering
+# version : 2005
+# author : Hans Hagen
+#
+# project : ConTeXt / eXaMpLe
+# concept : Hans Hagen
+# info : j.hagen@xs4all.nl
+
+# todo: multiple cnf files
+#
+
+class String
+
+ def split_path
+ if self =~ /\;/o || self =~ /^[a-z]\:/io then
+ self.split(";")
+ else
+ self.split(":")
+ end
+ end
+
+end
+
+class Array
+
+ def join_path
+ self.join(File::PATH_SEPARATOR)
+ end
+
+end
+
+class File
+
+ def File.locate_file(path,name)
+ begin
+ files = Dir.entries(path)
+ if files.include?(name) then
+ fullname = File.join(path,name)
+ return fullname if FileTest.file?(fullname)
+ end
+ files.each do |p|
+ fullname = File.join(path,p)
+ if p != '.' and p != '..' and FileTest.directory?(fullname) and result = locate_file(fullname,name) then
+ return result
+ end
+ end
+ rescue
+ # bad path
+ end
+ return nil
+ end
+
+ def File.glob_file(pattern)
+ return Dir.glob(pattern).first
+ end
+
+end
+
+module KpseUtil
+
+ # to be adapted, see loading cnf file
+
+ @@texmftrees = ['texmf-local','texmf.local','../..','texmf'] # '../..' is for gwtex
+ @@texmfcnf = 'texmf.cnf'
+
+ def KpseUtil::identify
+ # we mainly need to identify the local tex stuff and wse assume that
+ # the texmfcnf variable is set; otherwise we need to expand the
+ # TEXMF variable and that takes time since it may involve more
+ ownpath = File.expand_path($0)
+ if ownpath.gsub!(/texmf.*?$/o, '') then
+ ENV['SELFAUTOPARENT'] = ownpath
+ else
+ ENV['SELFAUTOPARENT'] = '.' # fall back
+ # may be too tricky:
+ #
+ # (ENV['PATH'] ||'').split_path.each do |p|
+ # if p.gsub!(/texmf.*?$/o, '') then
+ # ENV['SELFAUTOPARENT'] = p
+ # break
+ # end
+ # end
+ end
+ filenames = Array.new
+ if ENV['TEXMFCNF'] && ! ENV['TEXMFCNF'].empty? then
+ ENV['TEXMFCNF'].to_s.split_path.each do |path|
+ filenames << File.join(path,@@texmfcnf)
+ end
+ elsif ENV['SELFAUTOPARENT'] == '.' then
+ filenames << File.join('.',@@texmfcnf)
+ else
+ @@texmftrees.each do |tree|
+ filenames << File.join(ENV['SELFAUTOPARENT'],tree,'web2c',@@texmfcnf)
+ end
+ end
+ loop do
+ busy = false
+ filenames.collect! do |f|
+ f.gsub(/\$([a-zA-Z0-9\_\-]+)/o) do
+ if (! ENV[$1]) || (ENV[$1] == $1) then
+ "$#{$1}"
+ else
+ busy = true
+ ENV[$1]
+ end
+ end
+ end
+ break unless busy
+ end
+ filenames.delete_if do |f|
+ ! FileTest.file?(f)
+ end
+ return filenames
+ end
+
+ def KpseUtil::environment
+ Hash.new.merge(ENV)
+ end
+
+end
+
+class KpseFast
+
+ # formats are an incredible inconsistent mess
+
+ @@suffixes = Hash.new
+ @@formats = Hash.new
+ @@suffixmap = Hash.new
+
+ @@texmfcnf = 'texmf.cnf'
+
+ @@suffixes['gf'] = ['.<resolution>gf'] # todo
+ @@suffixes['pk'] = ['.<resolution>pk'] # todo
+ @@suffixes['tfm'] = ['.tfm']
+ @@suffixes['afm'] = ['.afm']
+ @@suffixes['base'] = ['.base']
+ @@suffixes['bib'] = ['.bib']
+ @@suffixes['bst'] = ['.bst']
+ @@suffixes['cnf'] = ['.cnf']
+ @@suffixes['ls-R'] = ['ls-R', 'ls-r']
+ @@suffixes['fmt'] = ['.fmt', '.efmt', '.efm', '.ofmt', '.ofm', '.oft', '.eofmt', '.eoft', '.eof', '.pfmt', '.pfm', '.epfmt', '.epf', '.xpfmt', '.xpf', '.afmt', '.afm']
+ @@suffixes['map'] = ['.map']
+ @@suffixes['mem'] = ['.mem']
+ @@suffixes['mf'] = ['.mf']
+ @@suffixes['mfpool'] = ['.pool']
+ @@suffixes['mft'] = ['.mft']
+ @@suffixes['mp'] = ['.mp']
+ @@suffixes['mppool'] = ['.pool']
+ @@suffixes['ocp'] = ['.ocp']
+ @@suffixes['ofm'] = ['.ofm', '.tfm']
+ @@suffixes['opl'] = ['.opl']
+ @@suffixes['otp'] = ['.otp']
+ @@suffixes['ovf'] = ['.ovf']
+ @@suffixes['ovp'] = ['.ovp']
+ @@suffixes['graphic/figure'] = ['.eps', '.epsi']
+ @@suffixes['tex'] = ['.tex']
+ @@suffixes['texpool'] = ['.pool']
+ @@suffixes['PostScript header'] = ['.pro']
+ @@suffixes['type1 fonts'] = ['.pfa', '.pfb']
+ @@suffixes['vf'] = ['.vf']
+ @@suffixes['ist'] = ['.ist']
+ @@suffixes['truetype fonts'] = ['.ttf', '.ttc']
+ @@suffixes['web'] = ['.web', '.ch']
+ @@suffixes['cweb'] = ['.w', '.web', '.ch']
+ @@suffixes['enc files'] = ['.enc']
+ @@suffixes['cmap files'] = ['.cmap']
+ @@suffixes['subfont definition files'] = ['.sfd']
+ @@suffixes['lig files'] = ['.lig']
+ @@suffixes['bitmap font'] = []
+ @@suffixes['MetaPost support'] = []
+ @@suffixes['TeX system documentation'] = []
+ @@suffixes['TeX system sources'] = []
+ @@suffixes['Troff fonts'] = []
+ @@suffixes['dvips config'] = []
+ @@suffixes['type42 fonts'] = []
+ @@suffixes['web2c files'] = []
+ @@suffixes['other text files'] = []
+ @@suffixes['other binary files'] = []
+ @@suffixes['misc fonts'] = []
+ @@suffixes['opentype fonts'] = []
+ @@suffixes['pdftex config'] = []
+ @@suffixes['texmfscripts'] = []
+
+ # replacements
+
+ @@suffixes['fmt'] = ['.fmt']
+ @@suffixes['type1 fonts'] = ['.pfa', '.pfb', '.pfm']
+ @@suffixes['tex'] = ['.tex', '.xml']
+ @@suffixes['texmfscripts'] = ['rb','lua','py','pl']
+
+ @@suffixes.keys.each do |k| @@suffixes[k].each do |s| @@suffixmap[s] = k end end
+
+ # TTF2TFMINPUTS
+ # MISCFONTS
+ # TEXCONFIG
+ # DVIPDFMINPUTS
+ # OTFFONTS
+
+ @@formats['gf'] = ''
+ @@formats['pk'] = ''
+ @@formats['tfm'] = 'TFMFONTS'
+ @@formats['afm'] = 'AFMFONTS'
+ @@formats['base'] = 'MFBASES'
+ @@formats['bib'] = ''
+ @@formats['bst'] = ''
+ @@formats['cnf'] = ''
+ @@formats['ls-R'] = ''
+ @@formats['fmt'] = 'TEXFORMATS'
+ @@formats['map'] = 'TEXFONTMAPS'
+ @@formats['mem'] = 'MPMEMS'
+ @@formats['mf'] = 'MFINPUTS'
+ @@formats['mfpool'] = 'MFPOOL'
+ @@formats['mft'] = ''
+ @@formats['mp'] = 'MPINPUTS'
+ @@formats['mppool'] = 'MPPOOL'
+ @@formats['ocp'] = 'OCPINPUTS'
+ @@formats['ofm'] = 'OFMFONTS'
+ @@formats['opl'] = 'OPLFONTS'
+ @@formats['otp'] = 'OTPINPUTS'
+ @@formats['ovf'] = 'OVFFONTS'
+ @@formats['ovp'] = 'OVPFONTS'
+ @@formats['graphic/figure'] = ''
+ @@formats['tex'] = 'TEXINPUTS'
+ @@formats['texpool'] = 'TEXPOOL'
+ @@formats['PostScript header'] = 'TEXPSHEADERS'
+ @@formats['type1 fonts'] = 'T1FONTS'
+ @@formats['vf'] = 'VFFONTS'
+ @@formats['ist'] = ''
+ @@formats['truetype fonts'] = 'TTFONTS'
+ @@formats['web'] = ''
+ @@formats['cweb'] = ''
+ @@formats['enc files'] = 'ENCFONTS'
+ @@formats['cmap files'] = 'CMAPFONTS'
+ @@formats['subfont definition files'] = 'SFDFONTS'
+ @@formats['lig files'] = 'LIGFONTS'
+ @@formats['bitmap font'] = ''
+ @@formats['MetaPost support'] = ''
+ @@formats['TeX system documentation'] = ''
+ @@formats['TeX system sources'] = ''
+ @@formats['Troff fonts'] = ''
+ @@formats['dvips config'] = ''
+ @@formats['type42 fonts'] = 'T42FONTS'
+ @@formats['web2c files'] = 'WEB2C'
+ @@formats['other text files'] = ''
+ @@formats['other binary files'] = ''
+ @@formats['misc fonts'] = ''
+ @@formats['opentype fonts'] = 'OPENTYPEFONTS'
+ @@formats['pdftex config'] = 'PDFTEXCONFIG'
+ @@formats['texmfscripts'] = 'TEXMFSCRIPTS'
+
+ attr_accessor :progname, :engine, :format, :rootpath, :treepath,
+ :verbose, :remember, :scandisk, :diskcache, :renewcache
+
+ @@cacheversion = '1'
+
+ def initialize
+ @rootpath = ''
+ @treepath = ''
+ @progname = 'kpsewhich'
+ @engine = 'pdfetex'
+ @variables = Hash.new
+ @expansions = Hash.new
+ @files = Hash.new
+ @found = Hash.new
+ @kpsevars = Hash.new
+ @lsrfiles = Array.new
+ @cnffiles = Array.new
+ @verbose = true
+ @remember = true
+ @scandisk = true
+ @diskcache = true
+ @renewcache = false
+ @isolate = false
+
+ @diskcache = false
+ @cachepath = nil
+ @cachefile = 'tmftools.log'
+
+ @environment = ENV
+ end
+
+ def set(key,value)
+ case key
+ when 'progname' then @progname = value
+ when 'engine' then @engine = value
+ when 'format' then @format = value
+ end
+ end
+
+ def push_environment(env)
+ @environment = env
+ end
+
+ # {$SELFAUTOLOC,$SELFAUTODIR,$SELFAUTOPARENT}{,{/share,}/texmf{-local,}/web2c}
+ #
+ # $SELFAUTOLOC : /usr/tex/bin/platform
+ # $SELFAUTODIR : /usr/tex/bin
+ # $SELFAUTOPARENT : /usr/tex
+ #
+ # since we live in scriptpath we need a slightly different method
+
+ def load_cnf(filenames=nil)
+ unless filenames then
+ ownpath = File.expand_path($0)
+ if ownpath.gsub!(/texmf.*?$/o, '') then
+ @environment['SELFAUTOPARENT'] = ownpath
+ else
+ @environment['SELFAUTOPARENT'] = '.'
+ end
+ unless @treepath.empty? then
+ unless @rootpath.empty? then
+ @treepath = @treepath.split(',').collect do |p| File.join(@rootpath,p) end.join(',')
+ end
+ @environment['TEXMF'] = @treepath
+ # only the first one
+ @environment['TEXMFCNF'] = File.join(@treepath.split(',').first,'texmf/web2c')
+ end
+ unless @rootpath.empty? then
+ @environment['TEXMFCNF'] = File.join(@rootpath,'texmf/web2c')
+ @environment['SELFAUTOPARENT'] = @rootpath
+ @isolate = true
+ end
+ filenames = Array.new
+ if @environment['TEXMFCNF'] and not @environment['TEXMFCNF'].empty? then
+ @environment['TEXMFCNF'].to_s.split_path.each do |path|
+ filenames << File.join(path,@@texmfcnf)
+ end
+ elsif @environment['SELFAUTOPARENT'] == '.' then
+ filenames << File.join('.',@@texmfcnf)
+ else
+ ['texmf-local','texmf'].each do |tree|
+ filenames << File.join(@environment['SELFAUTOPARENT'],tree,'web2c',@@texmfcnf)
+ end
+ end
+ end
+ # <root>/texmf/web2c/texmf.cnf
+ filenames = _expanded_path_(filenames)
+ @rootpath = filenames.first
+ 3.times do
+ @rootpath = File.dirname(@rootpath)
+ end
+ filenames.collect! do |f|
+ f.gsub("\\", '/')
+ end
+ filenames.each do |fname|
+ if FileTest.file?(fname) and f = File.open(fname) then
+ @cnffiles << fname
+ while line = f.gets do
+ loop do
+ # concatenate lines ending with \
+ break unless line.sub!(/\\\s*$/o) do
+ f.gets || ''
+ end
+ end
+ case line
+ when /^[\%\#]/o then
+ # comment
+ when /^\s*(.*?)\s*\=\s*(.*?)\s*$/o then
+ key, value = $1, $2
+ unless @variables.key?(key) then
+ value.sub!(/\%.*$/,'')
+ value.sub!(/\~/, "$HOME")
+ @variables[key] = value
+ end
+ @kpsevars[key] = true
+ end
+ end
+ f.close
+ end
+ end
+ end
+
+ def load_lsr
+ @lsrfiles = []
+ simplified_list(expansion('TEXMF')).each do |p|
+ ['ls-R','ls-r'].each do |f|
+ filename = File.join(p,f)
+ if FileTest.file?(filename) then
+ @lsrfiles << [filename,File.size(filename)]
+ break
+ end
+ end
+ end
+ @files = Hash.new
+ if @diskcache then
+ ['HOME','TEMP','TMP','TMPDIR'].each do |key|
+ if @environment[key] then
+ if FileTest.directory?(@environment[key]) then
+ @cachepath = @environment[key]
+ @cachefile = [@rootpath.gsub(/[^A-Z0-9]/io, '-').gsub(/\-+/,'-'),File.basename(@cachefile)].join('-')
+ break
+ end
+ end
+ end
+ if @cachepath and not @renewcache and FileTest.file?(File.join(@cachepath,@cachefile)) then
+ begin
+ if f = File.open(File.join(@cachepath,@cachefile)) then
+ cacheversion = Marshal.load(f)
+ if cacheversion == @@cacheversion then
+ lsrfiles = Marshal.load(f)
+ if lsrfiles == @lsrfiles then
+ @files = Marshal.load(f)
+ end
+ end
+ f.close
+ end
+ rescue
+ @files = Hash.new
+ end
+ end
+ end
+ return if @files.size > 0
+ @lsrfiles.each do |filedata|
+ filename, filesize = filedata
+ filepath = File.dirname(filename)
+ begin
+ path = '.'
+ data = IO.readlines(filename)
+ if data[0].chomp =~ /% ls\-R \-\- filename database for kpathsea\; do not change this line\./io then
+ data.each do |line|
+ case line
+ when /^[a-zA-Z0-9]/o then
+ line.chomp!
+ if @files[line] then
+ @files[line] << path
+ else
+ @files[line] = [path]
+ end
+ when /^\.\/(.*?)\:$/o then
+ path = File.join(filepath,$1)
+ end
+ end
+ end
+ rescue
+ # sorry
+ end
+ end
+ if @diskcache and @cachepath and f = File.open(File.join(@cachepath,@cachefile),'wb') then
+ f << Marshal.dump(@@cacheversion)
+ f << Marshal.dump(@lsrfiles)
+ f << Marshal.dump(@files)
+ f.close
+ end
+ end
+
+ def expand_variables
+ @expansions = Hash.new
+ if @isolate then
+ @variables['TEXMFCNF'] = @environment['TEXMFCNF'].dup
+ @variables['SELFAUTOPARENT'] = @environment['SELFAUTOPARENT'].dup
+ else
+ @environment.keys.each do |e|
+ if e =~ /^([a-zA-Z]+)\_(.*)\s*$/o then
+ @expansions["#{$1}.#{$2}"] = (@environment[e] ||'').dup
+ else
+ @expansions[e] = (@environment[e] ||'').dup
+ end
+ end
+ end
+ @variables.keys.each do |k|
+ @expansions[k] = @variables[k].dup unless @expansions[k]
+ end
+ loop do
+ busy = false
+ @expansions.keys.each do |k|
+ @expansions[k].gsub!(/\$([a-zA-Z0-9\_\-]*)/o) do
+ busy = true
+ @expansions[$1] || ''
+ end
+ @expansions[k].gsub!(/\$\{([a-zA-Z0-9\_\-]*)\}/o) do
+ busy = true
+ @expansions[$1] || ''
+ end
+ end
+ break unless busy
+ end
+ @expansions.keys.each do |k|
+ @expansions[k] = @expansions[k].gsub("\\", '/')
+ end
+ end
+
+ def variable(name='')
+ (name and not name.empty? and @variables[name.sub('$','')]) or ''
+ end
+
+ def expansion(name='')
+ (name and not name.empty? and @expansions[name.sub('$','')]) or ''
+ end
+
+ def variable?(name='')
+ name and not name.empty? and @variables.key?(name.sub('$',''))
+ end
+
+ def expansion?(name='')
+ name and not name.empty? and @expansions.key?(name.sub('$',''))
+ end
+
+ def simplified_list(str)
+ lst = str.gsub(/^\{/o,'').gsub(/\}$/o,'').split(",")
+ lst.collect do |l|
+ l.sub(/^[\!]*/,'').sub(/[\/\\]*$/o,'')
+ end
+ end
+
+ def original_variable(variable)
+ if variable?("#{@progname}.#{variable}") then
+ variable("#{@progname}.#{variable}")
+ elsif variable?(variable) then
+ variable(variable)
+ else
+ ''
+ end
+ end
+
+ def expanded_variable(variable)
+ if expansion?("#{variable}.#{@progname}") then
+ expansion("#{variable}.#{@progname}")
+ elsif expansion?(variable) then
+ expansion(variable)
+ else
+ ''
+ end
+ end
+
+ def original_path(filename='')
+ _expanded_path_(original_variable(var_of_format_or_suffix(filename)).split(";"))
+ end
+
+ def expanded_path(filename='')
+ _expanded_path_(expanded_variable(var_of_format_or_suffix(filename)).split(";"))
+ end
+
+ def _expanded_path_(pathlist)
+ i, n = 0, 0
+ pathlist.collect! do |mainpath|
+ mainpath.gsub(/([\{\}])/o) do
+ if $1 == "{" then
+ i += 1 ; n = i if i > n ; "<#{i}>"
+ else
+ i -= 1 ; "</#{i+1}>"
+ end
+ end
+ end
+ n.times do |i|
+ loop do
+ more = false
+ newlist = []
+ pathlist.each do |path|
+ unless path.sub!(/^(.*?)<(#{n-i})>(.*?)<\/\2>(.*?)$/) do
+ pre, mid, post = $1, $3, $4
+ mid.gsub!(/\,$/,',.')
+ mid.split(',').each do |m|
+ more = true
+ if m == '.' then
+ newlist << "#{pre}#{post}"
+ else
+ newlist << "#{pre}#{m}#{post}"
+ end
+ end
+ end then
+ newlist << path
+ end
+ end
+ if more then
+ pathlist = [newlist].flatten # copy -)
+ else
+ break
+ end
+ end
+ end
+ pathlist = pathlist.uniq.collect do |path|
+ p = path
+ # p.gsub(/^\/+/o) do '' end
+ # p.gsub!(/(.)\/\/(.)/o) do "#{$1}/#{$2}" end
+ # p.gsub!(/\/\/+$/o) do '//' end
+ p.gsub!(/\/\/+/o) do '//' end
+ p
+ end
+ pathlist
+ end
+
+ # todo: ignore case
+
+ def var_of_format(str)
+ @@formats[str] || ''
+ end
+
+ def var_of_suffix(str) # includes .
+ if @@suffixmap.key?(str) then @@formats[@@suffixmap[str]] else '' end
+ end
+
+ def var_of_format_or_suffix(str)
+ if @@formats.key?(str) then
+ @@formats[str]
+ elsif @@suffixmap.key?(File.extname(str)) then # extname includes .
+ @@formats[@@suffixmap[File.extname(str)]] # extname includes .
+ else
+ ''
+ end
+ end
+
+end
+
+class KpseFast
+
+ # test things
+
+ def list_variables(kpseonly=true)
+ @variables.keys.sort.each do |k|
+ if kpseonly then
+ puts("#{k} = #{@variables[k]}") if @kpsevars[k]
+ else
+ puts("#{if @kpsevars[k] then 'K' else 'E' end} #{k} = #{@variables[k]}")
+ end
+ end
+ end
+
+ def list_expansions(kpseonly=true)
+ @expansions.keys.sort.each do |k|
+ if kpseonly then
+ puts("#{k} = #{@expansions[k]}") if @kpsevars[k]
+ else
+ puts("#{if @kpsevars[k] then 'K' else 'E' end} #{k} = #{@expansions[k]}")
+ end
+ end
+ end
+
+ def list_lsr
+ puts("files = #{@files.size}")
+ end
+
+ def set_test_patterns
+ @variables["KPSE_TEST_PATTERN_A"] = "foo/{1,2}/bar//"
+ @variables["KPSE_TEST_PATTERN_B"] = "!!x{A,B{1,2}}y"
+ @variables["KPSE_TEST_PATTERN_C"] = "x{A,B//{1,2}}y"
+ @variables["KPSE_TEST_PATTERN_D"] = "x{A,B//{1,2,}}//y"
+ end
+
+ def show_test_patterns
+ ['A','B','D'].each do |i|
+ puts ""
+ puts @variables ["KPSE_TEST_PATTERN_#{i}"]
+ puts ""
+ puts expand_path("KPSE_TEST_PATTERN_#{i}").split_path
+ puts ""
+ end
+ end
+
+end
+
+class KpseFast
+
+ # kpse stuff
+
+ def expand_braces(str) # output variable and brace expansion of STRING.
+ _expanded_path_(original_variable(str).split_path).join_path
+ end
+
+ def expand_path(str) # output complete path expansion of STRING.
+ _expanded_path_(expanded_variable(str).split_path).join_path
+ end
+
+ def expand_var(str) # output variable expansion of STRING.
+ expanded_variable(str)
+ end
+
+ def show_path(str) # output search path for file type NAME
+ expanded_path(str).join_path
+ end
+
+ def var_value(str) # output the value of variable $STRING.
+ original_variable(str)
+ end
+
+end
+
+class KpseFast
+
+ def _is_cnf_?(filename)
+ filename == File.basename((@cnffiles.first rescue @@texmfcnf) || @@texmfcnf)
+ end
+
+ def find_file(filename)
+ if _is_cnf_?(filename) then
+ @cnffiles.first rescue ''
+ else
+ [find_files(filename,true)].flatten.first || ''
+ end
+ end
+
+ def find_files(filename,first=false)
+ if _is_cnf_?(filename) then
+ result = @cnffiles.dup
+ else
+ if @remember then
+ # stamp = "#{filename}--#{@format}--#{@engine}--#{@progname}"
+ stamp = "#{filename}--#{@engine}--#{@progname}"
+ return @found[stamp] if @found.key?(stamp)
+ end
+ pathlist = expanded_path(filename)
+ result = []
+ filelist = if @files.key?(filename) then @files[filename].uniq else nil end
+ done = false
+ if pathlist.size == 0 then
+ if FileTest.file?(filename) then
+ done = true
+ result << '.'
+ end
+ else
+ pathlist.each do |path|
+ doscan = if path =~ /^\!\!/o then false else true end
+ recurse = if path =~ /\/\/$/o then true else false end
+ pathname = path.dup
+ pathname.gsub!(/^\!+/o, '')
+ done = false
+ if not done and filelist then
+ # checking for exact match
+ if filelist.include?(pathname) then
+ result << pathname
+ done = true
+ end
+ if not done and recurse then
+ # checking for fuzzy //
+ pathname.gsub!(/\/+$/o, '/.*')
+ # pathname.gsub!(/\/\//o,'/[\/]*/')
+ pathname.gsub!(/\/\//o,'/.*?/')
+ re = /^#{pathname}/
+ filelist.each do |f|
+ if re =~ f then
+ result << f # duplicates will be filtered later
+ done = true
+ end
+ break if done
+ end
+ end
+ end
+ if not done and doscan then
+ # checking for path itself
+ pname = pathname.sub(/\.\*$/,'')
+ if not pname =~ /\*/o and FileTest.file?(File.join(pname,filename)) then
+ result << pname
+ done = true
+ end
+ end
+ break if done and first
+ end
+ end
+ if not done and @scandisk then
+ pathlist.each do |path|
+ pathname = path.dup
+ unless pathname.gsub!(/^\!+/o, '') then # !! prevents scan
+ recurse = pathname.gsub!(/\/+$/o, '')
+ complex = pathname.gsub!(/\/\//o,'/*/')
+ if recurse then
+ if complex then
+ if ok = File.glob_file("#{pathname}/**/#{filename}") then
+ result << File.dirname(ok)
+ done = true
+ end
+ elsif ok = File.locate_file(pathname,filename) then
+ result << File.dirname(ok)
+ done = true
+ end
+ elsif complex then
+ if ok = File.glob_file("#{pathname}/#{filename}") then
+ result << File.dirname(ok)
+ done = true
+ end
+ elsif FileTest.file?(File.join(pathname,filename)) then
+ result << pathname
+ done = true
+ end
+ break if done and first
+ end
+ end
+ end
+ result = result.uniq.collect do |pathname|
+ File.join(pathname,filename)
+ end
+ @found[stamp] = result if @remember
+ end
+ return result # redundant
+ end
+
+end
+
+class KpseFast
+
+ class FileData
+ attr_accessor :tag, :name, :size, :date
+ def initialize(tag=0,name=nil,size=nil,date=nil)
+ @tag, @name, @size, @date = tag, name, size, date
+ end
+ def FileData.sizes(a)
+ a.collect do |aa|
+ aa.size
+ end
+ end
+ def report
+ case @tag
+ when 1 then "deleted | #{@size.to_s.rjust(8)} | #{@date.strftime('%m/%d/%Y %I:%M')} | #{@name}"
+ when 2 then "present | #{@size.to_s.rjust(8)} | #{@date.strftime('%m/%d/%Y %I:%M')} | #{@name}"
+ when 3 then "obsolete | #{' '*8} | #{' '*16} | #{@name}"
+ end
+ end
+ end
+
+ def analyze_files(filter='',strict=false,sort='',delete=false)
+ puts("command line = #{ARGV.join(' ')}")
+ puts("number of files = #{@files.size}")
+ puts("filter pattern = #{filter}")
+ puts("loaded cnf files = #{@cnffiles.join(' ')}")
+ puts('')
+ if filter.gsub!(/^not:/,'') then
+ def the_same(filter,filename)
+ not filter or filter.empty? or /#{filter}/ !~ filename
+ end
+ else
+ def the_same(filter,filename)
+ not filter or filter.empty? or /#{filter}/ =~ filename
+ end
+ end
+ @files.keys.each do |name|
+ if @files[name].size > 1 then
+ data = Array.new
+ @files[name].each do |path|
+ filename = File.join(path,name)
+ # if not filter or filter.empty? or /#{filter}/ =~ filename then
+ if the_same(filter,filename) then
+ if FileTest.file?(filename) then
+ if delete then
+ data << FileData.new(1,filename,File.size(filename),File.mtime(filename))
+ begin
+ File.delete(filename) if delete
+ rescue
+ end
+ else
+ data << FileData.new(2,filename,File.size(filename),File.mtime(filename))
+ end
+ else
+ # data << FileData.new(3,filename)
+ end
+ end
+ end
+ if data.length > 1 then
+ if strict then
+ # if data.collect do |d| d.size end.uniq! then
+ # data.sort! do |a,b| b.size <=> a.size end
+ # data.each do |d| puts d.report end
+ # puts ''
+ # end
+ data.sort! do |a,b|
+ if a.size and b.size then
+ b.size <=> a.size
+ else
+ 0
+ end
+ end
+ bunch = Array.new
+ done = false
+ data.each do |d|
+ if bunch.size == 0 then
+ bunch << d
+ elsif bunch[0].size == d.size then
+ bunch << d
+ else
+ if bunch.size > 1 then
+ bunch.each do |b|
+ puts b.report
+ end
+ done = true
+ end
+ bunch = [d]
+ end
+ end
+ puts '' if done
+ else
+ case sort
+ when 'size' then data.sort! do |a,b| a.size <=> b.size end
+ when 'revsize' then data.sort! do |a,b| b.size <=> a.size end
+ when 'date' then data.sort! do |a,b| a.date <=> b.date end
+ when 'revdate' then data.sort! do |a,b| b.date <=> a.date end
+ end
+ data.each do |d| puts d.report end
+ puts ''
+ end
+ end
+ end
+ end
+ end
+
+end
+
+
+ # k = KpseFast.new # (root)
+ # k.set_test_patterns
+ # k.load_cnf
+ # k.expand_variables
+ # k.load_lsr
+
+ # k.show_test_patterns
+
+ # puts k.list_variables
+ # puts k.list_expansions
+ # k.list_lsr
+ # puts k.expansion("$TEXMF")
+ # puts k.expanded_path("TEXINPUTS","context")
+
+ # k.progname, k.engine, k.format = 'context', 'pdfetex', 'tfm'
+ # k.scandisk = false # == must_exist
+ # k.expand_variables
+
+ # 10.times do |i| puts k.find_file('texnansi-lmr10.tfm') end
+
+ # puts "expand braces $TEXMF"
+ # puts k.expand_braces("$TEXMF")
+ # puts "expand path $TEXMF"
+ # puts k.expand_path("$TEXMF")
+ # puts "expand var $TEXMF"
+ # puts k.expand_var("$TEXMF")
+ # puts "expand path $TEXMF"
+ # puts k.show_path('tfm')
+ # puts "expand value $TEXINPUTS"
+ # puts k.var_value("$TEXINPUTS")
+ # puts "expand value $TEXINPUTS.context"
+ # puts k.var_value("$TEXINPUTS.context")
+
+ # exit
+
+
+
+# kpse_merge_file: 'C:/data/develop/context/ruby/base/kpse/drb.rb'
+
+require 'drb'
+# kpse_merge_done: require 'base/kpse/trees'
+
+class KpseServer
+
+ attr_accessor :port
+
+ def initialize(port=7000)
+ @port = port
+ end
+
+ def start
+ puts "starting drb service at port #{@port}"
+ DRb.start_service("druby://localhost:#{@port}", KpseTrees.new)
+ trap(:INT) do
+ DRb.stop_service
+ end
+ DRb.thread.join
+ end
+
+ def stop
+ # todo
+ end
+
+end
+
+class KpseClient
+
+ attr_accessor :port
+
+ def initialize(port=7000)
+ @port = port
+ @kpse = nil
+ end
+
+ def start
+ # only needed when callbacks are used / slow, due to Socket::getaddrinfo
+ # DRb.start_service
+ end
+
+ def object
+ @kpse = DRbObject.new(nil,"druby://localhost:#{@port}")
+ end
+
+end
+
+
+# SERVER_URI="druby://localhost:8787"
+#
+# # Start a local DRbServer to handle callbacks.
+# #
+# # Not necessary for this small example, but will be required
+# # as soon as we pass a non-marshallable object as an argument
+# # to a dRuby call.
+# DRb.start_service
+#
+
+
+# kpse_merge_file: 'C:/data/develop/context/ruby/base/kpse/trees.rb'
+
+require 'monitor'
+# kpse_merge_done: require 'base/kpsefast'
+
+class KpseTrees < Monitor
+
+ def initialize
+ @trees = Hash.new
+ end
+
+ def pattern(filenames)
+ filenames.join('|').gsub(/\\+/o,'/').downcase
+ end
+
+ def choose(filenames,environment)
+ current = pattern(filenames)
+ load(filenames,environment) unless @trees[current]
+ puts "enabling tree #{current}"
+ current
+ end
+
+ def fetch(filenames,environment) # will send whole object !
+ current = pattern(filenames)
+ load(filenames,environment) unless @trees[current]
+ puts "fetching tree #{current}"
+ @trees[current]
+ end
+
+ def load(filenames,environment)
+ current = pattern(filenames)
+ puts "loading tree #{current}"
+ @trees[current] = KpseFast.new
+ @trees[current].push_environment(environment)
+ @trees[current].load_cnf(filenames)
+ @trees[current].expand_variables
+ @trees[current].load_lsr
+ end
+
+ def set(tree,key,value)
+ case key
+ when 'progname' then @trees[tree].progname = value
+ when 'engine' then @trees[tree].engine = value
+ when 'format' then @trees[tree].format = value
+ end
+ end
+ def get(tree,key)
+ case key
+ when 'progname' then @trees[tree].progname
+ when 'engine' then @trees[tree].engine
+ when 'format' then @trees[tree].format
+ end
+ end
+
+ def load_cnf(tree)
+ @trees[tree].load_cnf
+ end
+ def load_lsr(tree)
+ @trees[tree].load_lsr
+ end
+ def expand_variables(tree)
+ @trees[tree].expand_variables
+ end
+ def expand_braces(tree,str)
+ @trees[tree].expand_braces(str)
+ end
+ def expand_path(tree,str)
+ @trees[tree].expand_path(str)
+ end
+ def expand_var(tree,str)
+ @trees[tree].expand_var(str)
+ end
+ def show_path(tree,str)
+ @trees[tree].show_path(str)
+ end
+ def var_value(tree,str)
+ @trees[tree].var_value(str)
+ end
+ def find_file(tree,filename)
+ @trees[tree].find_file(filename)
+ end
+ def find_files(tree,filename,first)
+ @trees[tree].find_files(filename,first)
+ end
+
+end
+
+
+# kpse_merge_file: 'C:/data/develop/context/ruby/base/kpsedirect.rb'
+
+class KpseDirect
+
+ attr_accessor :progname, :format, :engine
+
+ def initialize
+ @progname, @format, @engine = '', '', ''
+ end
+
+ def expand_path(str)
+ clean_name(`kpsewhich -expand-path=#{str}`.chomp)
+ end
+
+ def expand_var(str)
+ clean_name(`kpsewhich -expand-var=#{str}`.chomp)
+ end
+
+ def find_file(str)
+ clean_name(`kpsewhich #{_progname_} #{_format_} #{str}`.chomp)
+ end
+
+ def _progname_
+ if @progname.empty? then '' else "-progname=#{@progname}" end
+ end
+ def _format_
+ if @format.empty? then '' else "-format=\"#{@format}\"" end
+ end
+
+ private
+
+ def clean_name(str)
+ str.gsub(/\\/,'/')
+ end
+
+end
+
+
+# kpse_merge_file: 'C:/data/develop/context/ruby/base/merge.rb'
+
+# module : base/merge
+# copyright : PRAGMA Advanced Document Engineering
+# version : 2006
+# author : Hans Hagen
+#
+# project : ConTeXt / eXaMpLe
+# concept : Hans Hagen
+# info : j.hagen@xs4all.nl
+
+
+# this module will package all the used modules in the file itself
+# so that we can relocate the file at wish, usage:
+#
+# merge:
+#
+# unless SelfMerge::ok? && SelfMerge::merge then
+# puts("merging should happen on the path were the base inserts reside")
+# end
+#
+# cleanup:
+#
+# unless SelfMerge::cleanup then
+# puts("merging should happen on the path were the base inserts reside")
+
+module SelfMerge
+
+ @@kpsemergestart = "\# kpse_merge_start"
+ @@kpsemergestop = "\# kpse_merge_stop"
+ @@kpsemergefile = "\# kpse_merge_file: "
+ @@kpsemergedone = "\# kpse_merge_done: "
+
+ @@filename = File.basename($0)
+ @@ownpath = File.expand_path(File.dirname($0))
+ @@modroot = '(base|graphics|rslb|www)' # needed in regex in order not to mess up SelfMerge
+ @@modules = $".collect do |file| File.expand_path(file) end
+
+ @@modules.delete_if do |file|
+ file !~ /^#{@@ownpath}\/#{@@modroot}.*$/
+ end
+
+ def SelfMerge::ok?
+ begin
+ @@modules.each do |file|
+ return false unless FileTest.file?(file)
+ end
+ rescue
+ return false
+ else
+ return true
+ end
+ end
+
+ def SelfMerge::merge
+ begin
+ if SelfMerge::ok? && rbfile = IO.read(@@filename) then
+ begin
+ inserts = "#{@@kpsemergestart}\n\n"
+ @@modules.each do |file|
+ inserts << "#{@@kpsemergefile}'#{file}'\n\n"
+ inserts << IO.read(file).gsub(/^#.*?\n$/,'')
+ inserts << "\n\n"
+ end
+ inserts << "#{@@kpsemergestop}\n\n"
+ # no gsub! else we end up in SelfMerge
+ rbfile.sub!(/#{@@kpsemergestart}\s*#{@@kpsemergestop}/mois) do
+ inserts
+ end
+ rbfile.gsub!(/^(.*)(require [\"\'].*?#{@@modroot}.*)$/) do
+ pre, post = $1, $2
+ if pre =~ /#{@@kpsemergedone}/ then
+ "#{pre}#{post}"
+ else
+ "#{pre}#{@@kpsemergedone}#{post}"
+ end
+ end
+ rescue
+ return false
+ else
+ begin
+ File.open(@@filename,'w') do |f|
+ f << rbfile
+ end
+ rescue
+ return false
+ end
+ end
+ end
+ rescue
+ return false
+ else
+ return true
+ end
+ end
+
+ def SelfMerge::cleanup
+ begin
+ if rbfile = IO.read(@@filename) then
+ begin
+ rbfile.sub!(/#{@@kpsemergestart}(.*)#{@@kpsemergestop}\s*/mois) do
+ "#{@@kpsemergestart}\n\n#{@@kpsemergestop}\n\n"
+ end
+ rbfile.gsub!(/^(.*#{@@kpsemergedone}.*)$/) do
+ str = $1
+ if str =~ /require [\"\']/ then
+ str.gsub(/#{@@kpsemergedone}/, '')
+ else
+ str
+ end
+ end
+ rescue
+ return false
+ else
+ begin
+ File.open(@@filename,'w') do |f|
+ f << rbfile
+ end
+ rescue
+ return false
+ end
+ end
+ end
+ rescue
+ return false
+ else
+ return true
+ end
+ end
+
+ def SelfMerge::replace
+ if SelfMerge::ok? then
+ SelfMerge::cleanup
+ SelfMerge::merge
+ end
+ end
+
+end
+
+
+# kpse_merge_stop
+
+
+
+$mswindows = Config::CONFIG['host_os'] =~ /mswin/
+$separator = File::PATH_SEPARATOR
+$version = "2.0.2"
+$ownpath = File.dirname($0)
+
+if $mswindows then
+ require "win32ole"
+ require "Win32API"
+end
+
+# exit if defined?(REQUIRE2LIB)
+
+$stdout.sync = true
+$stderr.sync = true
+
+$applications = Hash.new
+$suffixinputs = Hash.new
+$predefined = Hash.new
+
+$suffixinputs['pl'] = 'PERLINPUTS'
+$suffixinputs['rb'] = 'RUBYINPUTS'
+$suffixinputs['py'] = 'PYTHONINPUTS'
+$suffixinputs['lua'] = 'LUAINPUTS'
+$suffixinputs['jar'] = 'JAVAINPUTS'
+$suffixinputs['pdf'] = 'PDFINPUTS'
+
+$predefined['texexec'] = 'texexec.rb'
+$predefined['texutil'] = 'texutil.rb'
+$predefined['texfont'] = 'texfont.pl'
+$predefined['texshow'] = 'texshow.pl'
+
+$predefined['makempy'] = 'makempy.pl'
+$predefined['mptopdf'] = 'mptopdf.pl'
+$predefined['pstopdf'] = 'pstopdf.rb'
+
+$predefined['examplex'] = 'examplex.rb'
+$predefined['concheck'] = 'concheck.rb'
+
+$predefined['runtools'] = 'runtools.rb'
+$predefined['textools'] = 'textools.rb'
+$predefined['tmftools'] = 'tmftools.rb'
+$predefined['ctxtools'] = 'ctxtools.rb'
+$predefined['rlxtools'] = 'rlxtools.rb'
+$predefined['pdftools'] = 'pdftools.rb'
+$predefined['mpstools'] = 'mpstools.rb'
+$predefined['exatools'] = 'exatools.rb'
+$predefined['xmltools'] = 'xmltools.rb'
+$predefined['luatools'] = 'luatools.lua'
+$predefined['mtxtools'] = 'mtxtools.rb'
+
+$predefined['newpstopdf'] = 'pstopdf.rb'
+$predefined['newtexexec'] = 'texexec.rb'
+$predefined['pdftrimwhite'] = 'pdftrimwhite.pl'
+
+$makelist = [
+ # context
+ 'texexec',
+ 'texutil',
+ 'texfont',
+ # mp/ps
+ 'pstopdf',
+ 'mptopdf',
+ 'makempy',
+ # misc
+ 'ctxtools',
+ 'pdftools',
+ 'xmltools',
+ 'textools',
+ 'mpstools',
+ 'tmftools',
+ 'exatools',
+ 'runtools',
+ 'rlxtools',
+ 'luatools',
+ 'mtxtools',
+ #
+ # no, 'texmfstart'
+]
+
+$scriptlist = 'rb|pl|py|lua|jar'
+$documentlist = 'pdf|ps|eps|htm|html'
+
+$editor = ENV['TEXMFSTART_EDITOR'] || ENV['EDITOR'] || ENV['editor'] || 'scite'
+
+$crossover = true # to other tex tools, else only local
+$kpse = nil
+
+def set_applications(page=1)
+
+ $applications['unknown'] = ''
+ $applications['perl'] = $applications['pl'] = 'perl'
+ $applications['ruby'] = $applications['rb'] = 'ruby'
+ $applications['python'] = $applications['py'] = 'python'
+ $applications['lua'] = $applications['lua'] = 'lua'
+ $applications['java'] = $applications['jar'] = 'java'
+
+ if $mswindows then
+ $applications['pdf'] = ['',"pdfopen --page #{page} --file",'acroread']
+ $applications['html'] = ['','netscape','mozilla','opera','iexplore']
+ $applications['ps'] = ['','gview32','gv','gswin32','gs']
+ else
+ $applications['pdf'] = ["pdfopen --page #{page} --file",'acroread']
+ $applications['html'] = ['netscape','mozilla','opera']
+ $applications['ps'] = ['gview','gv','gs']
+ end
+
+ $applications['htm'] = $applications['html']
+ $applications['eps'] = $applications['ps']
+
+end
+
+set_applications()
+
+def check_kpse
+ if $kpse then
+ # already done
+ else
+ begin
+ if KpseRemote::available? then
+ $kpse = KpseRemote.new
+ if $kpse.okay? then
+ puts("kpse : remote") if $verbose
+ else
+ $kpse = KpseDirect.new
+ puts("kpse : direct (forced)") if $verbose
+ end
+ else
+ $kpse = KpseDirect.new
+ puts("kpse : direct") if $verbose
+ end
+ rescue
+ puts("kpse : direct (fallback)") if $verbose
+ end
+ end
+end
+
+if $mswindows then
+
+ GetShortPathName = Win32API.new('kernel32', 'GetShortPathName', ['P','P','N'], 'N')
+ GetLongPathName = Win32API.new('kernel32', 'GetLongPathName', ['P','P','N'], 'N')
+
+ def dowith_pathname (filename,filemethod)
+ filename = filename.gsub(/\\/o,'/') # no gsub! because filename can be frozen
+ case filename
+ when /\;/o then
+ # could be a path spec
+ return filename
+ when /\s+/o then
+ # danger lurking
+ buffer = ' ' * 260
+ length = filemethod.call(filename,buffer,buffer.size)
+ if length>0 then
+ return buffer.slice(0..length-1)
+ else
+ # when the path or file does not exist, nothing is returned
+ # so we try to handle the path separately from the basename
+ basename = File.basename(filename)
+ pathname = File.dirname(filename)
+ length = filemethod.call(pathname,buffer,260)
+ if length>0 then
+ return buffer.slice(0..length-1) + '/' + basename
+ else
+ return filename
+ end
+ end
+ else
+ # no danger
+ return filename
+ end
+ end
+
+ def longpathname (filename)
+ dowith_pathname(filename,GetLongPathName)
+ end
+
+ def shortpathname (filename)
+ dowith_pathname(filename,GetShortPathName)
+ end
+
+else
+
+ def longpathname (filename)
+ filename
+ end
+
+ def shortpathname (filename)
+ filename
+ end
+
+end
+
+class File
+
+ # def File.needsupdate(oldname,newname)
+ # begin
+ # if $mswindows then
+ # return File.stat(oldname).mtime > File.stat(newname).mtime
+ # else
+ # return File.stat(oldname).mtime != File.stat(newname).mtime
+ # end
+ # rescue
+ # return true
+ # end
+ # end
+
+ @@update_eps = 1
+
+ def File.needsupdate(oldname,newname)
+ begin
+ oldtime = File.stat(oldname).mtime.to_i
+ newtime = File.stat(newname).mtime.to_i
+ if newtime >= oldtime then
+ return false
+ elsif oldtime-newtime < @@update_eps then
+ return false
+ else
+ return true
+ end
+ rescue
+ return true
+ end
+ end
+
+ def File.syncmtimes(oldname,newname)
+ return
+ begin
+ if $mswindows then
+ # does not work (yet) / gives future timestamp
+ # t = File.mtime(oldname) # i'm not sure if the time is frozen, so we do it here
+ # File.utime(0,t,oldname,newname)
+ else
+ t = File.mtime(oldname) # i'm not sure if the time is frozen, so we do it here
+ File.utime(0,t,oldname,newname)
+ end
+ rescue
+ end
+ end
+
+ def File.timestamp(name)
+ begin
+ "#{File.stat(name).mtime}"
+ rescue
+ return 'unknown'
+ end
+ end
+
+end
+
+def hashed (arr=[])
+ arg = if arr.class == String then arr.split(' ') else arr.dup end
+ hsh = Hash.new
+ if arg.length > 0
+ hsh['arguments'] = ''
+ done = false
+ arg.each do |s|
+ if done then
+ hsh['arguments'] += ' ' + s
+ else
+ kvl = s.split('=')
+ if kvl[0].sub!(/^\-+/,'') then
+ hsh[kvl[0]] = if kvl.length > 1 then kvl[1] else true end
+ else
+ hsh['file'] = s
+ done = true
+ end
+ end
+ end
+ end
+ return hsh
+end
+
+def launch(filename)
+ if $browser && $mswindows then
+ filename = filename.gsub(/\.[\/\\]/) do
+ Dir.getwd + '/'
+ end
+ report("launching #{filename}")
+ ie = WIN32OLE.new("InternetExplorer.Application")
+ ie.visible = true
+ ie.navigate(filename)
+ return true
+ else
+ return false
+ end
+end
+
+# env|environment
+# rel|relative
+# loc|locate|kpse|path|file
+
+def expanded(arg) # no "other text files", too restricted
+ arg.gsub(/(env|environment)\:([a-zA-Z\-\_\.0-9]+)/o) do
+ method, original, resolved = $1, $2, ''
+ if resolved = ENV[original] then
+ report("environment variable #{original} expands to #{resolved}") unless $report
+ resolved
+ else
+ report("environment variable #{original} cannot be resolved") unless $report
+ original
+ end
+ end . gsub(/(rel|relative)\:([a-zA-Z\-\_\.0-9]+)/o) do
+ method, original, resolved = $1, $2, ''
+ ['.','..','../..'].each do |r|
+ if FileTest.file?(File.join(r,original)) then
+ resolved = File.join(r,original)
+ break
+ end
+ end
+ if resolved.empty? then
+ original
+ else
+ resolved
+ end
+ end . gsub(/(kpse|loc|locate|file|path)\:([a-zA-Z\-\_\.0-9]+)/o) do
+ method, original, resolved = $1, $2, ''
+ if $program && ! $program.empty? then
+ # pstrings = ["-progname=#{$program}"]
+ pstrings = [$program]
+ else
+ # pstrings = ['','-progname=context']
+ pstrings = ['','context']
+ end
+ # auto suffix with texinputs as fall back
+ if ENV["_CTX_K_V_#{original}_"] then
+ resolved = ENV["_CTX_K_V_#{original}_"]
+ report("environment provides #{original} as #{resolved}") unless $report
+ resolved
+ else
+ check_kpse
+ pstrings.each do |pstr|
+ if resolved.empty? then
+ # command = "kpsewhich #{pstr} #{original}"
+ # report("running #{command}")
+ report("locating '#{original}' in program space '#{pstr}'")
+ begin
+ # resolved = `#{command}`.chomp
+ $kpse.progname = pstr
+ $kpse.format = ''
+ resolved = $kpse.find_file(original).gsub(/\\/,'/')
+ rescue
+ resolved = ''
+ end
+ end
+ # elsewhere in the tree
+ if resolved.empty? then
+ # command = "kpsewhich #{pstr} -format=\"other text files\" #{original}"
+ # report("running #{command}")
+ report("locating '#{original}' in program space '#{pstr}' using format 'other text files'")
+ begin
+ # resolved = `#{command}`.chomp
+ $kpse.progname = pstr
+ $kpse.format = 'other text files'
+ resolved = $kpse.find_file(original).gsub(/\\/,'/')
+ rescue
+ resolved = ''
+ end
+ end
+ end
+ if resolved.empty? then
+ original = File.dirname(original) if method =~ /path/
+ report("#{original} is not resolved") unless $report
+ ENV["_CTX_K_V_#{original}_"] = original if $crossover
+ original
+ else
+ resolved = File.dirname(resolved) if method =~ /path/
+ report("#{original} is resolved to #{resolved}") unless $report
+ ENV["_CTX_K_V_#{original}_"] = resolved if $crossover
+ resolved
+ end
+ end
+ end
+end
+
+def changeddir?(path)
+ if path.empty? then
+ return true
+ else
+ begin
+ Dir.chdir(path) if ! path.empty?
+ rescue
+ report("unable to change to directory: #{path}")
+ else
+ report("changed to directory: #{path}")
+ end
+ return File.expand_path(Dir.getwd) == File.expand_path(path)
+ end
+end
+
+def runcommand(command)
+ if $locate then
+ command = command.split(' ').collect do |c|
+ if c =~ /\//o then
+ begin
+ cc = File.expand_path(c)
+ c = cc if FileTest.file?(cc)
+ rescue
+ end
+ end
+ c
+ end . join(' ')
+ print command # to stdout and no newline
+ elsif $execute then
+ report("using 'exec' instead of 'system' call: #{command}")
+ exec(command) if changeddir?($path)
+ else
+ report("using 'system' call: #{command}")
+ system(command) if changeddir?($path)
+ end
+end
+
+def runoneof(application,fullname,browserpermitted)
+ if browserpermitted && launch(fullname) then
+ return true
+ else
+ report("starting #{$filename}") unless $report
+ output("\n") if $report && $verbose
+ applications = $applications[application.downcase]
+ if ! applications then
+ output("problems with determining application type")
+ return true
+ elsif applications.class == Array then
+ if $report then
+ output([fullname,expanded($arguments)].join(' '))
+ return true
+ else
+ applications.each do |a|
+ return true if runcommand([a,fullname,expanded($arguments)].join(' '))
+ end
+ end
+ elsif applications.empty? then
+ if $report then
+ output([fullname,expanded($arguments)].join(' '))
+ return true
+ else
+ return runcommand([fullname,expanded($arguments)].join(' '))
+ end
+ else
+ if $report then
+ output([applications,fullname,expanded($arguments)].join(' '))
+ return true
+ else
+ return runcommand([applications,fullname,expanded($arguments)].join(' '))
+ end
+ end
+ return false
+ end
+end
+
+def report(str)
+ $stdout.puts(str) if $verbose
+end
+
+def output(str)
+ $stdout.puts(str)
+end
+
+def usage
+ print "version : #{$version} - 2003/2006 - www.pragma-ade.com\n"
+ print("\n")
+ print("usage : texmfstart [switches] filename [optional arguments]\n")
+ print("\n")
+ print("switches : --verbose --report --browser --direct --execute --locate --iftouched --ifchanged\n")
+ print(" --program --file --page --arguments --batch --edit --report --clear\n")
+ print(" --make --lmake --wmake --path --stubpath --indirect --before --after\n")
+ print(" --tree --autotree --environment --showenv\n")
+ print("\n")
+ print("example : texmfstart pstopdf.rb cow.eps\n")
+ print(" texmfstart --locate examplex.rb\n")
+ print(" texmfstart --execute examplex.rb\n")
+ print(" texmfstart --browser examplap.pdf\n")
+ print(" texmfstart showcase.pdf\n")
+ print(" texmfstart --page=2 --file=showcase.pdf\n")
+ print(" texmfstart --program=yourtex yourscript.rb arg-1 arg-2\n")
+ print(" texmfstart --direct xsltproc kpse:somefile.xsl somefile.xml\n")
+ print(" texmfstart --direct ruby rel:wn-cleanup-1.rb oldfile.xml newfile.xml\n")
+ print(" texmfstart bin:xsltproc env:somepreset path:somefile.xsl somefile.xml\n")
+ print(" texmfstart --iftouched=normal,lowres downsample.rb normal lowres\n")
+ print(" texmfstart --ifchanged=somefile.dat --direct processit somefile.dat\n")
+ print(" texmfstart bin:scite kpse:texmf.cnf\n")
+ print(" texmfstart --exec bin:scite *.tex\n")
+ print(" texmfstart --edit texmf.cnf\n")
+ print(" texmfstart --edit kpse:texmf.cnf\n")
+ print(" texmfstart --serve\n")
+ print("\n")
+ print(" texmfstart --stubpath=/usr/local/bin [--make --remove] --verbose all\n")
+ print(" texmfstart --stubpath=auto [--make --remove] all\n")
+ print("\n")
+ check_kpse
+end
+
+# somehow registration does not work out (at least not under windows)
+
+def tag(name)
+ if $crossover then "_CTX_K_S_#{name}_" else "TEXMFSTART.#{name}" end
+end
+
+def registered?(filename)
+ return ENV[tag(filename)] != nil
+end
+
+def registered(filename)
+ return ENV[tag(filename)] || 'unknown'
+end
+
+def register(filename,fullname)
+ if fullname && ! fullname.empty? then # && FileTest.file?(fullname)
+ ENV[tag(filename)] = fullname
+ report("registering '#{filename}' as '#{fullname}'")
+ return true
+ else
+ return false
+ end
+end
+
+def find(filename,program)
+ begin
+ filename = filename.sub(/script:/o, '') # so we have bin: and script: and nothing
+ if $predefined.key?(filename) then
+ report("expanding '#{filename}' to '#{$predefined[filename]}'")
+ filename = $predefined[filename]
+ end
+ if registered?(filename) then
+ report("already located '#{filename}'")
+ return registered(filename)
+ end
+ # create suffix list
+ if filename =~ /^(.*)\.(.+)$/ then
+ filename = $1
+ suffixlist = [$2]
+ else
+ suffixlist = [$scriptlist.split('|'),$documentlist.split('|')].flatten
+ end
+ # first we honor a given path
+ if filename =~ /[\\\/]/ then
+ report("trying to honor '#{filename}'")
+ suffixlist.each do |suffix|
+ fullname = filename+'.'+suffix
+ if FileTest.file?(fullname) && register(filename,fullname)
+ return shortpathname(fullname)
+ end
+ end
+ end
+ filename.sub!(/^.*[\\\/]/, '')
+ # next we look at the current path and the callerpath
+ [ ['.','current'],
+ [$ownpath,'caller'], ["#{$ownpath}/../#{suffixlist[0]}",'caller'],
+ [registered("THREAD"),'thread'], ["#{registered("THREAD")}/../#{suffixlist[0]}",'thread'],
+ ].each do |p|
+ if p && ! p.empty? && ! (p[0] == 'unknown') then
+ suffixlist.each do |suffix|
+ fname = "#{filename}.#{suffix}"
+ fullname = File.expand_path(File.join(p[0],fname))
+ report("locating '#{fname}' in #{p[1]} path '#{p[0]}'")
+ if FileTest.file?(fullname) && register(filename,fullname) then
+ report("'#{fname}' located in #{p[1]} path")
+ return shortpathname(fullname)
+ end
+ end
+ end
+ end
+ # now we consult environment settings
+ fullname = nil
+ check_kpse
+ $kpse.progname = program
+ suffixlist.each do |suffix|
+ begin
+ break unless $suffixinputs[suffix]
+ environment = ENV[$suffixinputs[suffix]] || ENV[$suffixinputs[suffix]+".#{$program}"]
+ if ! environment || environment.empty? then
+ begin
+ # environment = `kpsewhich -expand-path=\$#{$suffixinputs[suffix]}`.chomp
+ environment = $kpse.expand_path("\$#{$suffixinputs[suffix]}")
+ rescue
+ environment = nil
+ else
+ if environment && ! environment.empty? then
+ report("using kpsewhich variable #{$suffixinputs[suffix]}")
+ end
+ end
+ elsif environment && ! environment.empty? then
+ report("using environment variable #{$suffixinputs[suffix]}")
+ end
+ if environment && ! environment.empty? then
+ environment.split($separator).each do |e|
+ e.strip!
+ e = '.' if e == '\.' # somehow . gets escaped
+ e += '/' unless e =~ /[\\\/]$/
+ fullname = e + filename + '.' + suffix
+ report("testing '#{fullname}'")
+ if FileTest.file?(fullname) then
+ break
+ else
+ fullname = nil
+ end
+ end
+ end
+ rescue
+ report("environment string '#{$suffixinputs[suffix]}' cannot be used to locate '#{filename}'")
+ fullname = nil
+ else
+ return shortpathname(fullname) if register(filename,fullname)
+ end
+ end
+ return shortpathname(fullname) if register(filename,fullname)
+ # then we fall back on kpsewhich
+ suffixlist.each do |suffix|
+ # TDS script scripts location as per 2004
+ if suffix =~ /(#{$scriptlist})/ then
+ begin
+ report("using 'kpsewhich' to locate '#{filename}' in suffix space '#{suffix}' (1)")
+ # fullname = `kpsewhich -progname=#{program} -format=texmfscripts #{filename}.#{suffix}`.chomp
+ $kpse.format = 'texmfscripts'
+ fullname = $kpse.find_file("#{filename}.#{suffix}").gsub(/\\/,'/')
+ rescue
+ report("kpsewhich cannot locate '#{filename}' in suffix space '#{suffix}' (1)")
+ fullname = nil
+ else
+ return shortpathname(fullname) if register(filename,fullname)
+ end
+ end
+ # old TDS location: .../texmf/context/...
+ begin
+ report("using 'kpsewhich' to locate '#{filename}' in suffix space '#{suffix}' (2)")
+ # fullname = `kpsewhich -progname=#{program} -format="other text files" #{filename}.#{suffix}`.chomp
+ $kpse.format = 'other text files'
+ fullname = $kpse.find_file("#{filename}.#{suffix}").gsub(/\\/,'/')
+ rescue
+ report("kpsewhich cannot locate '#{filename}' in suffix space '#{suffix}' (2)")
+ fullname = nil
+ else
+ return shortpathname(fullname) if register(filename,fullname)
+ end
+ end
+ return shortpathname(fullname) if register(filename,fullname)
+ # let's take a look at the path
+ paths = ENV['PATH'].split($separator)
+ suffixlist.each do |s|
+ paths.each do |p|
+ suffixedname = "#{filename}.#{s}"
+ report("checking #{p} for #{filename}")
+ if FileTest.file?(File.join(p,suffixedname)) then
+ fullname = File.join(p,suffixedname)
+ return shortpathname(fullname) if register(filename,fullname)
+ end
+ end
+ end
+ # bad luck, we need to search the tree ourselves
+ if (suffixlist.length == 1) && (suffixlist.first =~ /(#{$documentlist})/) then
+ report("aggressively locating '#{filename}' in document trees")
+ begin
+ # texroot = `kpsewhich -expand-var=$SELFAUTOPARENT`.chomp
+ texroot = $kpse.expand_var("$SELFAUTOPARENT")
+ rescue
+ texroot = ''
+ else
+ texroot.sub!(/[\\\/][^\\\/]*?$/, '')
+ end
+ if not texroot.empty? then
+ sffxlst = suffixlist.join(',')
+ begin
+ report("locating '#{filename}' in document tree '#{texroot}/doc*'")
+ if (result = Dir.glob("#{texroot}/doc*/**/#{filename}.{#{sffxlst}}")) && result && result[0] && FileTest.file?(result[0]) then
+ fullname = result[0]
+ end
+ rescue
+ report("locating '#{filename}.#{suffixlist.join('|')}' in tree '#{texroot}' aborted")
+ end
+ end
+ return shortpathname(fullname) if register(filename,fullname)
+ end
+ report("aggressively locating '#{filename}' in tex trees")
+ begin
+ # textrees = `kpsewhich -expand-var=$TEXMF`.chomp
+ textrees = $kpse.expand_var("$TEXMF")
+ rescue
+ textrees = ''
+ end
+ if not textrees.empty? then
+ textrees.gsub!(/[\{\}\!]/, '')
+ textrees = textrees.split(',')
+ if (suffixlist.length == 1) && (suffixlist.first =~ /(#{$documentlist})/) then
+ speedup = ['doc**','**']
+ else
+ speedup = ['**']
+ end
+ sffxlst = suffixlist.join(',')
+ speedup.each do |speed|
+ textrees.each do |tt|
+ tt.gsub!(/[\\\/]$/, '')
+ if FileTest.directory?(tt) then
+ begin
+ report("locating '#{filename}' in tree '#{tt}/#{speed}/#{filename}.{#{sffxlst}}'")
+ if (result = Dir.glob("#{tt}/#{speed}/#{filename}.{#{sffxlst}}")) && result && result[0] && FileTest.file?(result[0]) then
+ fullname = result[0]
+ break
+ end
+ rescue
+ report("locating '#{filename}' in tree '#{tt}' aborted")
+ next
+ end
+ end
+ end
+ break if fullname && ! fullname.empty?
+ end
+ end
+ if register(filename,fullname) then
+ return shortpathname(fullname)
+ else
+ return ''
+ end
+ rescue
+ error, trace = $!, $@.join("\n")
+ report("fatal error: #{error}\n#{trace}")
+ # report("fatal error")
+ end
+end
+
+def run(fullname)
+ if ! fullname || fullname.empty? then
+ output("the file '#{$filename}' is not found")
+ elsif FileTest.file?(fullname) then
+ begin
+ case fullname
+ when /\.(#{$scriptlist})$/i then
+ return runoneof($1,fullname,false)
+ when /\.(#{$documentlist})$/i then
+ return runoneof($1,fullname,true)
+ else
+ return runoneof('unknown',fullname,false)
+ end
+ rescue
+ report("starting '#{$filename}' in program space '#{$program}' fails (#{$!})")
+ end
+ else
+ report("the file '#{$filename}' in program space '#{$program}' is not accessible")
+ end
+ return false
+end
+
+def direct(fullname)
+ begin
+ return runcommand([fullname.sub(/^(bin|binary)\:/, ''),expanded($arguments)].join(' '))
+ rescue
+ return false
+ end
+end
+
+def edit(filename)
+ begin
+ return runcommand([$editor,expanded(filename),expanded($arguments)].join(' '))
+ rescue
+ return false
+ end
+end
+
+def make(filename,windows=false,linux=false,remove=false)
+ basename = File.basename(filename).gsub(/\.[^.]+?$/, '')
+ if $stubpath == 'auto' then
+ basename = File.dirname($0) + '/' + basename
+ else
+ basename = $stubpath + '/' + basename unless $stubpath.empty?
+ end
+ if filename == 'texmfstart' then
+ program = 'ruby'
+ command = 'kpsewhich --format=texmfscripts --progname=context texmfstart.rb'
+ filename = `#{command}`.chomp.gsub(/\\/, '/')
+ if filename.empty? then
+ report("failure: #{command}")
+ return
+ elsif not remove then
+ if windows then
+ ['bat','exe'].each do |suffix|
+ if FileTest.file?("#{basename}.#{suffix}") then
+ report("windows stub '#{basename}.#{suffix}' skipped (already present)")
+ return
+ end
+ end
+ elsif linux && FileTest.file?(basename) then
+ report("unix stub '#{basename}' skipped (already present)")
+ return
+ end
+ end
+ else
+ program = nil
+ if filename =~ /[\\\/]/ && filename =~ /\.(#{$scriptlist})$/ then
+ program = $applications[$1]
+ end
+ filename = "\"#{filename}\"" if filename =~ /\s/
+ program = 'texmfstart' if $indirect || ! program || program.empty?
+ end
+ begin
+ callname = $predefined[filename.sub(/\.*?$/,'')] || filename
+ if remove then
+ if windows && (File.delete(basename+'.bat') rescue false) then
+ report("windows stub '#{basename}.bat' removed (calls #{callname})")
+ elsif linux && (File.delete(basename) rescue false) then
+ report("unix stub '#{basename}' removed (calls #{callname})")
+ end
+ else
+ if windows && f = open(basename+'.bat','w') then
+ f.binmode
+ f.write("@echo off\015\012")
+ f.write("#{program} #{callname} %*\015\012")
+ f.close
+ report("windows stub '#{basename}.bat' made (calls #{callname})")
+ elsif linux && f = open(basename,'w') then
+ f.binmode
+ f.write("#!/bin/sh\012")
+ f.write("#{program} #{callname} \"$@\"\012")
+ f.close
+ report("unix stub '#{basename}' made (calls #{callname})")
+ end
+ end
+ rescue
+ report("failed to make stub '#{basename}' #{$!}")
+ return false
+ else
+ return true
+ end
+end
+
+def process(&block)
+ if $iftouched then
+ files = $directives['iftouched'].split(',')
+ oldname, newname = files[0], files[1]
+ if oldname && newname && File.needsupdate(oldname,newname) then
+ report("file #{oldname}: #{File.timestamp(oldname)}")
+ report("file #{newname}: #{File.timestamp(newname)}")
+ report("file is touched, processing started")
+ yield
+ File.syncmtimes(oldname,newname)
+ else
+ report("file #{oldname} is untouched")
+ end
+ elsif $ifchanged then
+ filename = $directives['ifchanged']
+ checkname = filename + ".md5"
+ oldchecksum, newchecksum = "old", "new"
+ begin
+ newchecksum = MD5.new(IO.read(filename)).hexdigest.upcase
+ rescue
+ newchecksum = "new"
+ else
+ begin
+ oldchecksum = IO.read(checkname).chomp
+ rescue
+ oldchecksum = "old"
+ end
+ end
+ if $verbose then
+ report("old checksum #{filename}: #{oldchecksum}")
+ report("new checksum #{filename}: #{newchecksum}")
+ end
+ if oldchecksum != newchecksum then
+ report("file is changed, processing started")
+ begin
+ File.open(checkname,'w') do |f|
+ f << newchecksum
+ end
+ rescue
+ end
+ yield
+ else
+ report("file #{filename} is unchanged")
+ end
+ else
+ yield
+ end
+end
+
+def checkenvironment(tree)
+ report('')
+ ENV['TMP'] = ENV['TMP'] || ENV['TEMP'] || ENV['TMPDIR'] || ENV['HOME']
+ case RUBY_PLATFORM
+ when /(mswin|bccwin|mingw|cygwin)/i then ENV['TEXOS'] = ENV['TEXOS'] || 'texmf-mswin'
+ when /(linux)/i then ENV['TEXOS'] = ENV['TEXOS'] || 'texmf-linux'
+ when /(darwin|rhapsody|nextstep)/i then ENV['TEXOS'] = ENV['TEXOS'] || 'texmf-macosx'
+ # when /(netbsd|unix)/i then # todo
+ else # todo
+ end
+ ENV['TEXOS'] = "#{ENV['TEXOS'].sub(/^[\\\/]*/, '').sub(/[\\\/]*$/, '')}"
+ ENV['TEXPATH'] = tree.sub(/\/+$/,'') # + '/'
+ ENV['TEXMFOS'] = "#{ENV['TEXPATH']}/#{ENV['TEXOS']}"
+ report('')
+ report("preset : TEXPATH => #{ENV['TEXPATH']}")
+ report("preset : TEXOS => #{ENV['TEXOS']}")
+ report("preset : TEXMFOS => #{ENV['TEXMFOS']}")
+ report("preset : TMP => #{ENV['TMP']}")
+ report('')
+end
+
+def loadfile(filename)
+ begin
+ IO.readlines(filename).each do |line|
+ case line.chomp
+ when /^[\#\%]/ then
+ # comment
+ when /^(.*?)\s*(\>|\=|\<)\s*(.*)\s*$/ then
+ # = assign | > prepend | < append
+ key, how, value = $1, $2, $3
+ begin
+ # $SAFE = 0
+ value.gsub!(/\%(.*?)\%/) do
+ ENV[$1] || ''
+ end
+ # value.gsub!(/\;/,$separator) if key =~ /PATH/i then
+ case how
+ when '=', '<<' then ENV[key] = value
+ when '?', '??' then ENV[key] = ENV[key] || value
+ when '<', '+=' then ENV[key] = (ENV[key] || '') + $separator + value
+ when '>', '=+' then ENV[key] = value + $separator + (ENV[key] ||'')
+ end
+ rescue
+ report("user set failed : #{key} (#{$!})")
+ else
+ report("user set : #{key} => #{ENV[key]}")
+ end
+ end
+ end
+ rescue
+ report("error in reading file '#{filename}'")
+ end
+end
+
+def loadtree(tree)
+ begin
+ unless tree.empty? then
+ if File.directory?(tree) then
+ setuptex = File.join(tree,'setuptex.tmf')
+ else
+ setuptex = tree.dup
+ end
+ if FileTest.file?(setuptex) then
+ report("tex tree definition: #{setuptex}")
+ checkenvironment(File.dirname(setuptex))
+ loadfile(setuptex)
+ else
+ report("no setup file '#{setuptex}'")
+ end
+ end
+ rescue
+ # maybe tree is empty or boolean (no arg given)
+ end
+end
+
+def loadenvironment(environment)
+ begin
+ unless environment.empty? then
+ filename = if $path.empty? then environment else File.expand_path(File.join($path,environment)) end
+ if FileTest.file?(filename) then
+ report("environment : #{environment}")
+ loadfile(filename)
+ else
+ report("no environment file '#{environment}'")
+ end
+ end
+ rescue
+ report("problem while loading '#{environment}'")
+ end
+end
+
+def show_environment
+ if $showenv then
+ keys = ENV.keys.sort
+ size = 0
+ keys.each do |k|
+ size = k.size if k.size > size
+ end
+ report('')
+ keys.each do |k|
+ report("#{k.rjust(size)} => #{ENV[k]}")
+ end
+ report('')
+ end
+end
+
+def execute(arguments)
+
+ arguments = arguments.split(/\s+/) if arguments.class == String
+
+ $directives = hashed(arguments)
+
+ $help = $directives['help'] || false
+ $batch = $directives['batch'] || false
+ $filename = $directives['file'] || ''
+ $program = $directives['program'] || 'context'
+ $direct = $directives['direct'] || false
+ $edit = $directives['edit'] || false
+ $page = $directives['page'] || 1
+ $browser = $directives['browser'] || false
+ $report = $directives['report'] || false
+ $verbose = $directives['verbose'] || false
+ $arguments = $directives['arguments'] || ''
+ $execute = $directives['execute'] || $directives['exec'] || false
+ $locate = $directives['locate'] || false
+
+ $autotree = if $directives['autotree'] then (ENV['TEXMFSTART_TREE'] || ENV['TEXMFSTARTTREE'] || '') else '' end
+
+ $path = $directives['path'] || ''
+ $tree = $directives['tree'] || $autotree || ''
+ $environment = $directives['environment'] || ''
+
+ $make = $directives['make'] || false
+ $remove = $directives['remove'] || $directives['delete'] || false
+ $unix = $directives['unix'] || false
+ $windows = $directives['windows'] || $directives['mswin'] || false
+ $stubpath = $directives['stubpath'] || ''
+ $indirect = $directives['indirect'] || false
+
+ $before = $directives['before'] || ''
+ $after = $directives['after'] || ''
+
+ $iftouched = $directives['iftouched'] || false
+ $ifchanged = $directives['ifchanged'] || false
+
+ $openoffice = $directives['oo'] || false
+
+ $crossover = false if $directives['clear']
+
+ $showenv = $directives['showenv'] || false
+ $verbose = true if $showenv
+
+ $serve = $directives['serve'] || false
+
+ $verbose = true if (ENV['_CTX_VERBOSE_'] =~ /(y|yes|t|true|on)/io) && ! $locate && ! $report
+
+ set_applications($page)
+
+ # private:
+
+ $selfmerge = $directives['selfmerge'] || false
+ $selfcleanup = $directives['selfclean'] || $directives['selfcleanup'] || false
+
+ ENV['_CTX_VERBOSE_'] = 'yes' if $verbose
+
+ if $openoffice then
+ if ENV['OOPATH'] then
+ if FileTest.directory?(ENV['OOPATH']) then
+ report("using open office python")
+ if $mswindows then
+ $applications['python'] = $applications['py'] = "\"#{File.join(ENV['OOPATH'],'program','python.bat')}\""
+ else
+ $applications['python'] = $applications['py'] = File.join(ENV['OOPATH'],'python')
+ end
+ report("python path #{$applications['python']}")
+ else
+ report("environment variable 'OOPATH' does not exist")
+ end
+ else
+ report("environment variable 'OOPATH' is not set")
+ end
+ end
+
+ if $selfmerge then
+ output("ruby libraries are cleaned up") if SelfMerge::cleanup
+ output("ruby libraries are merged") if SelfMerge::merge
+ elsif $selfcleanup then
+ output("ruby libraries are cleaned up") if SelfMerge::cleanup
+ elsif $serve then
+ if ENV['KPSEMETHOD'] && ENV['KPSEPORT'] then
+ # # kpse_merge_done: require 'base/kpseremote'
+ begin
+ KpseRemote::start_server
+ rescue
+ end
+ else
+ usage
+ puts("")
+ puts("message : set 'KPSEMETHOD' and 'KPSEPORT' variables")
+ end
+ elsif $help || ! $filename || $filename.empty? then
+ usage
+ loadtree($tree)
+ loadenvironment($environment)
+ show_environment()
+ elsif $batch && $filename && ! $filename.empty? then
+ # todo, take commands from file and avoid multiple starts and checks
+ else
+ report("texmfstart version #{$version}")
+ loadtree($tree)
+ loadenvironment($environment)
+ show_environment()
+ if $make || $remove then
+ if $filename == 'all' then
+ makelist = $makelist
+ else
+ makelist = [$filename]
+ end
+ makelist.each do |filename|
+ if $windows then
+ make(filename,true,false,$remove)
+ elsif $unix then
+ make(filename,false,true,$remove)
+ else
+ make(filename,$mswindows,!$mswindows,$remove)
+ end
+ end
+ elsif $browser && $filename =~ /^http\:\/\// then
+ launch($filename)
+ else
+ begin
+ process do
+ if $direct || $filename =~ /^bin\:/ then
+ direct($filename)
+ elsif $edit && ! $editor.empty? then
+ edit($filename)
+ else # script: or no prefix
+ command = find(shortpathname($filename),$program)
+ if command then
+ register("THREAD",File.dirname(File.expand_path(command)))
+ run(command)
+ else
+ report('unable to locate program')
+ end
+ end
+ end
+ rescue
+ report('fatal error in starting process')
+ end
+ end
+ end
+
+end
+
+execute(ARGV)
+
+exit (if ($?.to_i rescue 0) > 0 then 1 else 0 end)
diff --git a/Master/bin/sparc-solaris/texsis b/Master/bin/sparc-solaris/texsis
index eb4e1e5aff7..f68cc91498e 120000
--- a/Master/bin/sparc-solaris/texsis
+++ b/Master/bin/sparc-solaris/texsis
@@ -1 +1 @@
-pdfetex \ No newline at end of file
+pdftex \ No newline at end of file
diff --git a/Master/bin/sparc-solaris/textools b/Master/bin/sparc-solaris/textools
new file mode 100755
index 00000000000..7445eac371c
--- /dev/null
+++ b/Master/bin/sparc-solaris/textools
@@ -0,0 +1,2 @@
+#!/bin/sh
+texmfstart textools.rb "$@"
diff --git a/Master/bin/sparc-solaris/texutil b/Master/bin/sparc-solaris/texutil
index afced152700..607154af059 120000..100755
--- a/Master/bin/sparc-solaris/texutil
+++ b/Master/bin/sparc-solaris/texutil
@@ -1 +1,2 @@
-texexec \ No newline at end of file
+#!/bin/sh
+texmfstart texutil.rb "$@"
diff --git a/Master/bin/sparc-solaris/tftopl b/Master/bin/sparc-solaris/tftopl
index 9dee6f0f50e..4d2160bdc33 100755
--- a/Master/bin/sparc-solaris/tftopl
+++ b/Master/bin/sparc-solaris/tftopl
Binary files differ
diff --git a/Master/bin/sparc-solaris/tie b/Master/bin/sparc-solaris/tie
index 5ae3e114094..692f85abb5b 100755
--- a/Master/bin/sparc-solaris/tie
+++ b/Master/bin/sparc-solaris/tie
Binary files differ
diff --git a/Master/bin/sparc-solaris/tmftools b/Master/bin/sparc-solaris/tmftools
new file mode 100755
index 00000000000..7531a966390
--- /dev/null
+++ b/Master/bin/sparc-solaris/tmftools
@@ -0,0 +1,2 @@
+#!/bin/sh
+texmfstart tmftools.rb "$@"
diff --git a/Master/bin/sparc-solaris/ttf2afm b/Master/bin/sparc-solaris/ttf2afm
index 0c6435753ff..ba4d830a7d1 100755
--- a/Master/bin/sparc-solaris/ttf2afm
+++ b/Master/bin/sparc-solaris/ttf2afm
Binary files differ
diff --git a/Master/bin/sparc-solaris/ttf2pk b/Master/bin/sparc-solaris/ttf2pk
index fa6b1438141..15c895f4ffb 100755
--- a/Master/bin/sparc-solaris/ttf2pk
+++ b/Master/bin/sparc-solaris/ttf2pk
Binary files differ
diff --git a/Master/bin/sparc-solaris/ttf2tfm b/Master/bin/sparc-solaris/ttf2tfm
index a9089ab3909..0eee371d5ee 100755
--- a/Master/bin/sparc-solaris/ttf2tfm
+++ b/Master/bin/sparc-solaris/ttf2tfm
Binary files differ
diff --git a/Master/bin/sparc-solaris/ttftotype42 b/Master/bin/sparc-solaris/ttftotype42
new file mode 100755
index 00000000000..9e1e6f04c87
--- /dev/null
+++ b/Master/bin/sparc-solaris/ttftotype42
Binary files differ
diff --git a/Master/bin/sparc-solaris/uniqleaf b/Master/bin/sparc-solaris/uniqleaf
deleted file mode 120000
index afced152700..00000000000
--- a/Master/bin/sparc-solaris/uniqleaf
+++ /dev/null
@@ -1 +0,0 @@
-texexec \ No newline at end of file
diff --git a/Master/bin/sparc-solaris/updmap b/Master/bin/sparc-solaris/updmap
index c66303fdeee..0f8cc469a83 100755
--- a/Master/bin/sparc-solaris/updmap
+++ b/Master/bin/sparc-solaris/updmap
@@ -122,7 +122,7 @@ export PATH
test -n "${ZSH_VERSION+set}" && alias -g '${1+"$@"}'='"$@"'
# the version string
-version=1122009795 # seconds since `00:00:00 1970-01-01 UTC'
+version=1167072206 # seconds since `00:00:00 1970-01-01 UTC'
# date '+%s' (with GNU date)
###############################################################################
@@ -1052,7 +1052,8 @@ syncWithTrees()
###############################################################################
# normalizeLines()
# remove comments, whitespace is exactly one space, no empty lines,
-# no whitespace at end of line, one space before and after "
+# no whitespace at end of line, one space before and after ",
+# no CR's (as in skaknew).
###############################################################################
normalizeLines()
{
@@ -1062,7 +1063,9 @@ normalizeLines()
-e '/^ *$/d' \
-e 's@ $@@' \
-e 's@ *" *@ " @g' \
- -e 's@" \([^"]*\) "@"\1"@g' | sort | uniq
+ -e 's@" \([^"]*\) "@"\1"@g' \
+ | tr -d '\r' \
+ | sort | uniq
}
###############################################################################
diff --git a/Master/bin/sparc-solaris/utf8mex b/Master/bin/sparc-solaris/utf8mex
index eb4e1e5aff7..f68cc91498e 120000
--- a/Master/bin/sparc-solaris/utf8mex
+++ b/Master/bin/sparc-solaris/utf8mex
@@ -1 +1 @@
-pdfetex \ No newline at end of file
+pdftex \ No newline at end of file
diff --git a/Master/bin/sparc-solaris/vftovp b/Master/bin/sparc-solaris/vftovp
index 66ead68dd36..7f0b3a53971 100755
--- a/Master/bin/sparc-solaris/vftovp
+++ b/Master/bin/sparc-solaris/vftovp
Binary files differ
diff --git a/Master/bin/sparc-solaris/vpe b/Master/bin/sparc-solaris/vpe
new file mode 100755
index 00000000000..9eb52b69e3c
--- /dev/null
+++ b/Master/bin/sparc-solaris/vpe
@@ -0,0 +1,421 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' && eval 'exec perl -S $0 $argv:q'
+ if 0;
+use strict;
+#
+# vpe.pl
+#
+# Copyright (C) 2000 Heiko Oberdiek.
+#
+# This program may be distributed and/or modified under the
+# conditions of the LaTeX Project Public License, either version 1.2
+# of this license or (at your option) any later version.
+# The latest version of this license is in
+# http://www.latex-project.org/lppl.txt
+# and version 1.2 or later is part of all distributions of LaTeX
+# version 1999/12/01 or later.
+#
+# See file "vpe.txt" for a list of files that belong to this project.
+#
+# This file "vpe.pl" may be renamed to "vpe"
+# for installation purposes.
+#
+my $file = "vpe.pl";
+my $program = uc($&) if $file =~ /^\w+/;
+my $version = "0.1";
+my $date = "2000/09/15";
+my $author = "Heiko Oberdiek";
+my $copyright = "Copyright (c) 2000 by $author.";
+#
+# History:
+# 2000/09/15 v0.1: First release.
+#
+
+### program identification
+my $title = "$program $version, $date - $copyright\n";
+
+### editor call
+# %F: file name
+# %L: line number
+my $EditorCall = "xterm -e joe +%d %s";
+$EditorCall = $ENV{TEXEDIT} if $ENV{TEXEDIT};
+$EditorCall = $ENV{VPE} if $ENV{VPE};
+
+### error strings
+my $Error = "!!! Error:"; # error prefix
+
+my $usage = <<"END_OF_USAGE";
+${title}
+Depending on the name of the script `vpe' works in four modes:
+
+* [vpe] Syntax: vpe <pdf file>[.pdf]
+ The pdf file is scanned for actions created by VTeX,
+ that start an editor with the source file at the
+ specified line under Windows.
+ A symbol link is made from the source file name
+ extended by the extension `.vpe' to this script.
+ The line number is encoded in the path and the
+ action is changed to start this script.
+
+* [sty] Internal for vpe.sty:
+ Syntax: vpe --sty [--progname=...] <latex file> <vpe file>
+
+* [system] Internal for vpe.sty:
+ Syntax: vpe --system <vpe file>
+
+* [launch] Syntax: <source file name>.vpe
+ The script decodes the line number in the path of
+ the source file name and starts an editor with
+ this file at that line number.
+
+Options:
+ --help: print usage.
+ --verbose: print additional informations during running.
+ --force: force symbol links
+ --delete: delete symbol links
+ --sty: internal for `vpe.sty' (get absolute file name and lines)
+ --system: internal for `vpe.sty' (get system info linux or win)
+ --progname: latex, pdflatex, elatex, pdfelatex
+END_OF_USAGE
+
+### options
+$::opt_verbose = 0;
+$::opt_help = 0;
+$::opt_force = 0;
+$::opt_delete = 0;
+$::opt_sty = 0;
+$::opt_system = 0;
+$::opt_progname = "latex";
+use Getopt::Long;
+GetOptions(
+ "help!",
+ "verbose!",
+ "force!",
+ "delete!",
+ "sty!",
+ "system!",
+ "progname=s",
+) or die $usage;
+if ($::opt_help) {
+ die $usage;
+}
+
+if ($::opt_sty and $::opt_system) {
+ die "$usage" .
+ "$Error Options --sty and --system cannot used together!\n";
+}
+
+###################
+### launch mode ###
+###################
+if ($0 =~ /\.vpe/) {
+
+ @ARGV == 0 or
+ die "$usage$Error Too many arguments [launch mode]!\n";
+
+ my $file = "";
+ $0 =~ m|(^[\./]+\./)(.+)\.vpe$| or
+ die "$Error Cannot extract line number ($0)!\n";
+ my $str = $1;
+ $file = "/$2";
+
+ my $line = "";
+ while ($str ne "") {
+ $str =~ m|^(/*)(\.?)\./(.*)$| or
+ die "$Error Parse error!\n";
+ $line .= length($1) + (($2 eq ".") ? 5 : 0);
+ $str = $3;
+ }
+
+ my $callstr = $EditorCall;
+ $EditorCall =~ s/%s/$file/;
+ $EditorCall =~ s/%d/$line/;
+ print "File: $file, line: $line\n" if $::opt_verbose;
+ exec($EditorCall);
+ exit 1;
+}
+
+###
+### used by both sty and system mode:
+###
+my $system = "linux";
+$system = "" if $^O =~ /os2/i;
+$system = "" if $^O =~ /mac/i;
+$system = "win" if $^O =~ /dos/i;
+$system = "win" if $^O =~ /win/i;
+
+################
+### sty mode ###
+################
+if ($::opt_sty) {
+
+ @ARGV == 2 or
+ die "$usage$Error Wrong arguments [sty mode]!\n";
+
+ my $vpefile = $ARGV[1];
+ print "VPE file: $vpefile\n" if $::opt_verbose;
+
+ my $file = `kpsewhich -progname=$::opt_progname $ARGV[0]`;
+ chomp $file;
+ if (!($file =~ m|^/| or $file =~ m|^\w:|)) {
+ use Cwd;
+ $file = cwd() . "/" . $file;
+ $file =~ s|/[^/]+/\.\./|/|g;
+ $file =~ s|/\./|/|g;
+ }
+ -f $file or
+ die "$Error Cannot find file `$file' [sty mode]!\n";
+ print "File: $file\n" if $::opt_verbose;
+
+ my $last = 0;
+ if (open(IN, $file)) {
+ while (<IN>) {
+ $last++;
+ }
+ }
+ if ($last == 0) {
+ $last = 10000;
+ }
+ print "Last line: $last\n" if $::opt_verbose;
+
+ open(OUT, ">>$vpefile") or
+ die "$Error Cannot open file `$vpefile`!\n";
+ print OUT "\\vpeentry{$file}{$last}\n";
+
+ exit 1;
+}
+
+###################
+### system mode ###
+###################
+if ($::opt_system) {
+
+ @ARGV == 1 or
+ die "$usage$Error Wrong arguments [system mode]!\n";
+
+ my $vpefile = $ARGV[0];
+ print "VPE file: $vpefile\n" if $::opt_verbose;
+
+ open(OUT, ">>$vpefile") or
+ die "$Error Cannot open file `$vpefile`!\n";
+ print OUT "\\vpesystem{$system}\n";
+
+ exit 1;
+}
+
+################
+### vpe mode ###
+################
+if (@ARGV < 1) {
+ die "$usage$Error Missing pdf file [vpe mode]!\n";
+}
+if (@ARGV > 2) {
+ die "$usage$Error Too many arguments [vpe mode]!\n";
+}
+
+my $pdffile = $ARGV[0];
+if (!-f $pdffile) {
+ my $name = $pdffile;
+ $pdffile .= ".pdf";
+ -f $pdffile or
+ die "$Error File `$name' not found [vpe mode]!\n";
+}
+
+open(IN, "+<$pdffile") or
+ die "$Error Cannot open `$pdffile' [vpe mode]!\n";
+binmode(IN);
+my %symlinks = ();
+while (<IN>) {
+
+ if (m|/F\([\./]*(/.*)\.vpe\)|) {
+ $symlinks{$1} = 1;
+ next;
+ }
+
+ my $do = 0;
+ my ($action, $file, $line, $type);
+ # my $color; # only for debugging
+
+ if (m|^
+ /A \s* << \s*
+ /Type \s* /Action \s*
+ /S \s* /Launch \s*
+ /Win \s* << \s*
+ /F \s* \(aftcomp.exe\) \s*
+ /P \s* \("(.*)\" \s+ \d+\-(\d+)\) \s*
+ >> \s*
+ >> \s*
+ $
+ |x
+ ) {
+ $action = $_;
+ $file = $1;
+ $line = $2;
+ # $color = "/C[0 0 1]"; # only for debugging
+ $type = "aftcomp";
+ $do = 1;
+ }
+
+ if (m|^
+ /A \s* << \s*
+ /Type \s* /Action \s*
+ /S \s* /Launch \s*
+ /Win \s* << \s*
+ /F \s* \(repos.exe\) \s*
+ /P \s* \(
+ "(.*)" \s*
+ "(\d+)" \s*
+ "(.*)" \s*
+ "(\d+)"
+ \) \s*
+ >> \s*
+ >> \s*
+ $
+ |x
+ ) {
+ $action = $_;
+ if ($3 eq "") {
+ $file = $1;
+ $line = $2;
+ }
+ else {
+ # ???
+ $file = $1;
+ $line = $2;
+ }
+ # $color = "/C[1 0 0]"; # only for debugging
+ $type = "repos";
+ $do = 1;
+ }
+
+ if ($do) {
+ my $length = length($action);
+ print "* File: $file, line: $line, type: $type\n" if $::opt_verbose;
+
+ if (!($file =~ m|^/|)) {
+ print STDERR "$Error File `$file' lacks of absolute path!\n";
+ next;
+ }
+
+ if (!$::opt_delete) {
+ if ($line <= 0) {
+ $line = 1;
+ }
+
+ my $newaction = "";
+ {
+ my $digit = substr($line, 0, 1);
+ if ($digit <= 5) {
+ $newaction .= "/" x $digit;
+ }
+ else {
+ $newaction .= "/" x ($digit - 5) . ".";
+ }
+ $newaction .= "./";
+ my $rest = $line;
+ while (($rest = substr($rest, 1)) ne "") {
+ $digit = substr($rest, 0, 1);
+ if ($digit < 5) {
+ $newaction .= "/" x $digit;
+ }
+ else {
+ $newaction .= "/" x ($digit - 5) . ".";
+ }
+ $newaction .= "./";
+ }
+ }
+ $newaction .= substr($file, 1) . ".vpe";
+ $newaction = # $color . # only for debugging
+ "/A<</Type/Action/S/Launch/F($newaction)>>";
+ $newaction .= " " x ($length - length($newaction) - 1);
+ if (length($newaction) > $length) {
+ print STDERR "$Error Action too long!\n";
+ next;
+ }
+
+ seek(IN, -length($action), 1);
+ print IN $newaction;
+ }
+
+ $symlinks{$file} = 1;
+ }
+}
+
+if (keys(%symlinks)) {
+
+ my $this = $0;
+ if (!$::opt_delete) {
+ if (!-f $0 or !-x $0) {
+ $this = `which $0`;
+ ($this ne "") or die "$Error Cannot find this script!\n";
+ }
+ if (!($this =~ m|^/|)) {
+ use Cwd;
+ $this = cwd() . "/" . $this;
+ }
+ $this =~ s|/[^/]+/\.\./|/|g;
+ $this =~ s|/\./|/|g;
+ }
+
+ if ($::opt_delete) {
+ print "Delete symlinks:\n";
+ }
+ else {
+ if ($::opt_force) {
+ print "Forced symlinks to $this:\n";
+ }
+ else {
+ print "Symlinks to $this:\n";
+ }
+ }
+
+ foreach (keys(%symlinks)) {
+ my $sym = $_ . ".vpe";
+ print " $sym [";
+
+ if ($::opt_delete) {
+ if (!-l $sym) {
+ print "ok, not existing]\n";
+ next;
+ }
+ unlink($sym);
+ if (!-l $sym) {
+ print "ok, deleted]\n";
+ next;
+ }
+ print "failed]\n";
+ next;
+ }
+ if ($::opt_force) {
+ if (-l $sym) {
+ unlink($sym);
+ if (-l $sym) {
+ print "deletion failed]\n";
+ next;
+ }
+ if (symlink($this, $sym)) {
+ print "ok, deleted and created]\n";
+ next;
+ }
+ print "deleted, creation failed]\n";
+ next;
+ }
+ if (symlink($this, $sym)) {
+ print "ok, created]\n";
+ next;
+ }
+ print "creation failed]\n";
+ next;
+ }
+ if (-f $sym) {
+ print "exists]\n";
+ next;
+ }
+ if (symlink($this, $sym)) {
+ print "ok, created]\n";
+ next;
+ }
+ print "failed]\n";
+ next;
+ }
+}
+__END__
diff --git a/Master/bin/sparc-solaris/vptovf b/Master/bin/sparc-solaris/vptovf
index 2be54ffe304..f7b0a9aae91 100755
--- a/Master/bin/sparc-solaris/vptovf
+++ b/Master/bin/sparc-solaris/vptovf
Binary files differ
diff --git a/Master/bin/sparc-solaris/weave b/Master/bin/sparc-solaris/weave
index 6e2941f00de..d37a3c56b72 100755
--- a/Master/bin/sparc-solaris/weave
+++ b/Master/bin/sparc-solaris/weave
Binary files differ
diff --git a/Master/bin/sparc-solaris/xdvi-motif.bin b/Master/bin/sparc-solaris/xdvi-motif.bin
index cae7d6a5579..5fffdb0f5bf 100755
--- a/Master/bin/sparc-solaris/xdvi-motif.bin
+++ b/Master/bin/sparc-solaris/xdvi-motif.bin
Binary files differ
diff --git a/Master/bin/sparc-solaris/xdvipdfmx b/Master/bin/sparc-solaris/xdvipdfmx
new file mode 100755
index 00000000000..33ea638500d
--- /dev/null
+++ b/Master/bin/sparc-solaris/xdvipdfmx
Binary files differ
diff --git a/Master/bin/sparc-solaris/xelatex b/Master/bin/sparc-solaris/xelatex
new file mode 120000
index 00000000000..ef9fe406fd6
--- /dev/null
+++ b/Master/bin/sparc-solaris/xelatex
@@ -0,0 +1 @@
+xetex \ No newline at end of file
diff --git a/Master/bin/sparc-solaris/xeplain b/Master/bin/sparc-solaris/xeplain
new file mode 120000
index 00000000000..ef9fe406fd6
--- /dev/null
+++ b/Master/bin/sparc-solaris/xeplain
@@ -0,0 +1 @@
+xetex \ No newline at end of file
diff --git a/Master/bin/sparc-solaris/xetex b/Master/bin/sparc-solaris/xetex
new file mode 100755
index 00000000000..48ff02f5664
--- /dev/null
+++ b/Master/bin/sparc-solaris/xetex
Binary files differ
diff --git a/Master/bin/sparc-solaris/xmltex b/Master/bin/sparc-solaris/xmltex
index eb4e1e5aff7..f68cc91498e 120000
--- a/Master/bin/sparc-solaris/xmltex
+++ b/Master/bin/sparc-solaris/xmltex
@@ -1 +1 @@
-pdfetex \ No newline at end of file
+pdftex \ No newline at end of file
diff --git a/Master/bin/sparc-solaris/xmltools b/Master/bin/sparc-solaris/xmltools
new file mode 100755
index 00000000000..03086d0436b
--- /dev/null
+++ b/Master/bin/sparc-solaris/xmltools
@@ -0,0 +1,2 @@
+#!/bin/sh
+texmfstart xmltools.rb "$@"