summaryrefslogtreecommitdiff
path: root/Master/bin/i386-linux/makempx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/bin/i386-linux/makempx')
-rwxr-xr-xMaster/bin/i386-linux/makempx181
1 files changed, 181 insertions, 0 deletions
diff --git a/Master/bin/i386-linux/makempx b/Master/bin/i386-linux/makempx
new file mode 100755
index 00000000000..8aaa9bac1dc
--- /dev/null
+++ b/Master/bin/i386-linux/makempx
@@ -0,0 +1,181 @@
+#!/bin/sh
+# $Id: makempx.in,v 1.18 2005/06/22 17:33:26 olaf Exp $
+# Make an MPX file from the labels in a MetaPost source file,
+# using mpto and either dvitomp (TeX) or dmp (troff).
+# From John Hobby's original (though there's not much of it left by now).
+# Public domain.
+#
+#
+version=0.9
+
+: ${DMP=dmp}
+: ${DVITOMP=dvitomp}
+: ${MAKEMPX_BINDIR=`echo $0 | sed 's%/[^/]*$%%'`}
+: ${MPTEXPRE=mptexpre.tex}
+: ${MPTOTEX='mpto -tex'}
+: ${MPTOTR='mpto -troff'}
+: ${NEWER=newer}
+# This is oriented towards GNU roff: old value was
+# 'eqn -Tpost -d\$\$ | troff -Tpost'
+: ${TROFF='eqn -Tps -d\$\$ | troff -Tps'}
+
+# convert relative path to absolute in $MAKEMPX_BINDIR:
+case "$MAKEMPX_BINDIR" in
+ /*) ;;
+ *) MAKEMPX_BINDIR=`pwd`/$MAKEMPX_BINDIR;;
+esac
+
+PATH=$MAKEMPX_BINDIR:/bin:/usr/bin:$PATH
+
+# These names are documented in the MetaPost manual, so it's
+# unwise to change them.
+ERRLOG=mpxerr.log # file for an error log if necessary
+TEXERR=mpxerr.tex # file for erroneous TeX if any
+DVIERR=mpxerr.dvi # troublesome dvi file if any
+TROFF_INERR=mpxerr # file for erroneous troff input, if any
+TROFF_OUTERR=mpxerr.t # file for troublesome troff output, if any
+
+
+usage="Usage: $0 [-tex|-tex=<program>|-troff] MPFILE MPXFILE.
+ If MPXFILE is older than MPFILE, translate the labels from the MetaPost
+ input file MPFIle to low-level commands in MPXFILE, by running
+ $MPTOTEX, $TEX, and $DVITOMP
+ by default; or, if -troff is specified,
+ $MPTOTR, $TROFF, and $DMP.
+
+ The current directory is used for writing temporary files. Errors are
+ left in mpxerr.{tex,log,dvi}.
+
+ If the file named in \$MPTEXPRE (mptexpre.tex by default) exists, it is
+ prepended to the output in tex mode.
+
+Email bug reports to metapost@tug.org."
+
+
+mode=tex
+
+while test $# -gt 0; do
+ case "$1" in
+ -help|--help)
+ echo "$usage"; exit 0;;
+ -version|--version)
+ echo "`basename $0` $version"
+ echo "There is NO warranty. This script is public domain.
+Primary author: John Hobby."
+ exit 0;;
+ -troff|--troff) mode=troff;;
+ -tex|--tex) mode=tex;;
+ -tex=*|--tex=*) mode=tex; TEX=`echo "$1" | sed 's/^-*tex=//'`;;
+ -*)
+ echo "$0: Invalid option: $1." >&2
+ echo "Try \``basename $0` --help' for more information." >&2
+ exit 1;;
+ *)
+ if test -z "$MPFILE"; then
+ MPFILE=$1 # input file
+ elif test -z "$MPXFILE"; then
+ MPXFILE=$1 # output file
+ else
+ echo "$0: Extra argument $1." >&2
+ echo "Try \``basename $0` --help' for more information." >&2
+ exit 1
+ fi;;
+ esac
+ shift
+done
+
+if test -z "$MPFILE" || test -z "$MPXFILE"; then
+ echo "$0: Need exactly two file arguments." >&2
+ echo "Try \``basename $0` --help' for more information." >&2
+ exit 1
+fi
+
+trap "rm -f mpx$$.* \"$ERRLOG\"; exit 4" 1 2 3 15
+
+# If MPX file is up-to-date, do nothing.
+if $NEWER "$MPFILE" "$MPXFILE"; then
+
+ # Have to remake.
+ # Step 0: Check typesetter mode for consistency.
+ case "$mode" in
+ tex) MPTO="$MPTOTEX";;
+ troff) MPTO="$MPTOTR";;
+ *) echo "$0: Unknown typesetter mode: $mode" >&2
+ exit 1;;
+ esac
+
+ # Step 1: Extract typesetter source from MetaPost source.
+ if $MPTO "$MPFILE" >mpx$$.tex 2>"$ERRLOG"; then :;
+ # success
+ else
+ # failure
+ echo "$0: Command failed: $MPTO $MPFILE" >&2
+ cat "$ERRLOG" >&2
+ rm -f mpx$$.tex
+ exit 1
+ fi
+ if test "$mode" = troff; then
+ mv -f mpx$$.tex mpx$$.i
+ fi
+
+ # Step 2: Run typesetter.
+ if test "$mode" = tex; then
+ if test -r "$MPTEXPRE"; then
+ # Prepend user file.
+ cat "$MPTEXPRE" mpx$$.tex >mpx$$.tmp
+ mv mpx$$.tmp mpx$$.tex
+ fi
+
+ test -z "$TEX" && \
+ TEX=`sed -n '1s/%\&[ ]*\([^ ]*\).*$/\1 --parse-first-line/p;q' mpx$$.tex`
+ test -z "$TEX" && TEX='tex --parse-first-line'
+
+ if $TEX --interaction=batchmode mpx$$.tex </dev/null >/dev/null; then
+ WHATEVER_TO_MPX="$DVITOMP"
+ INFILE=mpx$$.dvi
+ INERROR=$DVIERR
+ else
+ # failure
+ mv -f mpx$$.tex "$TEXERR"
+ mv -f mpx$$.log "$ERRLOG"
+ echo "$0: Command failed: $TEX $TEXERR; see $ERRLOG" >&2
+ exit 2
+ fi
+ elif test "$mode" = troff; then
+ if cat mpx$$.i | eval $TROFF >mpx$$.t; then
+ # success, prepare for step 3.
+ WHATEVER_TO_MPX="$DMP"
+ INFILE=mpx$$.t
+ INERROR=$TROFF_OUTERR
+ else
+ # failure
+ mv -f mpx$$.i "$TROFF_INERR"
+ echo "$0: Command failed: cat $TROFF_INERR | $TROFF" >&2
+ rm -f mpx$$.t
+ exit 2
+ fi
+ else
+ echo "$0: Unknown typesetter mode: $mode; how did this happen?" >&2
+ exit 2
+ fi
+
+ # Step 3: Translate typesetter output to a MetaPost MPX.
+ if $WHATEVER_TO_MPX "$INFILE" "$MPXFILE" >"$ERRLOG"; then
+ : # success
+ else
+ # failure
+ mv -f "$INFILE" "$INERROR"
+ test $mode = troff && mv -f mpx$$.i "$TROFF_INERR"
+ echo "$0: Command failed: $WHATEVER_TO_MPX $INERROR $MPXFILE" >&2
+ # Better to remove $MPXFILE if something went wrong rather than
+ # leaving behind an unfinished or unusable version since $NEWER
+ # might think that all is fine if $MPXFILE exists.
+ rm -f "$MPXFILE"
+ cat "$ERRLOG" >&2
+ exit 3
+ fi
+
+ rm -f "$ERRLOG" mpx$$.*
+fi
+
+exit 0