summaryrefslogtreecommitdiff
path: root/Master/texmf
diff options
context:
space:
mode:
authorPeter Breitenlohner <peb@mppmu.mpg.de>2012-08-08 14:43:05 +0000
committerPeter Breitenlohner <peb@mppmu.mpg.de>2012-08-08 14:43:05 +0000
commitc46cd43491e2f371ad919380950f383cf25f0a76 (patch)
tree719e3208838452c1e9ef7cdd27b2df5ac65601b0 /Master/texmf
parent7c673255c363c3edabb7684db79429502460e9f4 (diff)
Move remaining tetex/ scripts to texlive/linked_scripts/
git-svn-id: svn://tug.org/texlive/trunk@27343 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf')
-rwxr-xr-xMaster/texmf/scripts/tetex/fmtutil-sys.sh29
-rwxr-xr-xMaster/texmf/scripts/tetex/fmtutil.sh1017
-rwxr-xr-xMaster/texmf/scripts/tetex/texconfig-dialog.sh486
-rwxr-xr-xMaster/texmf/scripts/tetex/texconfig-sys.sh31
-rwxr-xr-xMaster/texmf/scripts/tetex/texconfig.sh1432
-rwxr-xr-xMaster/texmf/scripts/tetex/texlinks.sh335
6 files changed, 3330 insertions, 0 deletions
diff --git a/Master/texmf/scripts/tetex/fmtutil-sys.sh b/Master/texmf/scripts/tetex/fmtutil-sys.sh
new file mode 100755
index 00000000000..bfb52f94e1f
--- /dev/null
+++ b/Master/texmf/scripts/tetex/fmtutil-sys.sh
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+# fmtutil-sys: Thomas Esser, public domain.
+
+# wrapper script for fmtutil with TEXMFVAR and TEXMFCONFIG set to
+# TEXMFSYSVAR / TEXMFSYSCONFIG
+
+test -f /bin/ksh && test -z "$RUNNING_KSH" \
+ && { UNAMES=`uname -s`; test "x$UNAMES" = xULTRIX; } 2>/dev/null \
+ && { RUNNING_KSH=true; export RUNNING_KSH; exec /bin/ksh $0 ${1+"$@"}; }
+unset RUNNING_KSH
+
+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
+
+# hack around a bug in zsh:
+test -n "${ZSH_VERSION+set}" && alias -g '${1+"$@"}'='"$@"'
+export PATH
+
+v=`kpsewhich -var-value TEXMFSYSVAR`
+c=`kpsewhich -var-value TEXMFSYSCONFIG`
+
+TEXMFVAR="$v"
+TEXMFCONFIG="$c"
+export TEXMFVAR TEXMFCONFIG
+
+exec fmtutil ${1+"$@"}
diff --git a/Master/texmf/scripts/tetex/fmtutil.sh b/Master/texmf/scripts/tetex/fmtutil.sh
new file mode 100755
index 00000000000..06ef11380b4
--- /dev/null
+++ b/Master/texmf/scripts/tetex/fmtutil.sh
@@ -0,0 +1,1017 @@
+#!/bin/sh
+# fmtutil - utility to maintain format files.
+# Public domain. Originally written by Thomas Esser.
+# Run with --help for usage.
+
+# program history:
+# further changes in texk/tetex/ChangeLog.
+# 2007-01-04 patch by JK to support $engine subdir (enabled by default)
+# 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 Ma 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
+# Fr Dez 31 16:51:29 CET 2004 option catcfg added (for being called by texconfig)
+# Do Dez 30 21:53:27 CET 2004 rename variable verbose to verboseFlag
+# Sa Dez 25 12:44:23 CET 2004 implementation adopted for teTeX-3.0 (tcfmgr)
+# Do Okt 28 11:09:36 CEST 2004 added --refresh
+# Fr Sep 17 19:25:28 CEST 2004 save $0 in a variable before calling a function
+# Sun May 9 23:24:06 CEST 2004 changes for new web2c: format names
+# are now *.fmt, nothing else, disable
+# "plain" symlinks
+# Thu May 6 14:16:19 CEST 2004: "mv ...</dev/null" to avoid interaction.
+# Sun Mar 21 19:44:36 CET 2004: support aleph
+# Thu Dec 25 22:11:53 CET 2003: add version string
+# Thu Dec 25 12:56:14 CET 2003: new listcfg_loop lists only supported formats
+# Sun Dec 21 10:25:37 CET 2003 "mktexfmt pdflatex" did not work (if called
+# as mktexfmt, an extention was mandatory)
+# Mon Sep 15 13:07:31 CEST 2003 add tmpdir to TEXINPUTS
+# Sun Aug 3 11:09:46 CEST 2003 special case for mptopdf
+# Sun Apr 20 10:27:09 CEST 2003 allow " " as well as tab in config file
+# Wed Feb 19 21:14:52 CET 2003 add eomega support
+# Sat Feb 15 22:01:35 CET 2003 let mf-nowin work without mf
+# Wed Dec 25 09:47:44 CET 2002 bugfix for localized pool files
+# Fri Oct 25 02:29:06 CEST 2002: now more careful about find_hyphenfile()
+# Tue Oct 22 22:46:48 CEST 2002: -jobname, oft extension
+# Fri Oct 4 22:33:17 CEST 2002: add more cli stuff: enablefmt
+# disablefmt listcfg
+# Sun Jul 7 21:28:37 CEST 2002: look at log file for possible problems,
+# and issue a warning
+# Tue Jun 4 21:52:57 CEST 2002: trap / cleanup code from updmap
+# Tue Jun 4 19:32:44 CEST 2002: be smarter about stdout / stderr
+# Tue Apr 9 22:46:34 CEST 2002: pass -progname=mpost for metafun
+# Tue Apr 2 00:37:39 CEST 2002: added mktexfmt functionality
+# Tue Jun 5 14:45:57 CEST 2001: added support for mf / mpost
+###############################################################################
+
+test -f /bin/ksh && test -z "$RUNNING_KSH" \
+ && { UNAMES=`uname -s`; test "x$UNAMES" = xULTRIX; } 2>/dev/null \
+ && { RUNNING_KSH=true; export RUNNING_KSH; exec /bin/ksh $0 ${1+"$@"}; }
+unset RUNNING_KSH
+
+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
+
+# hack around a bug in zsh:
+test -n "${ZSH_VERSION+set}" && alias -g '${1+"$@"}'='"$@"'
+
+progname=fmtutil
+argv0=$0
+version='$Id: fmtutil 25899 2012-04-09 23:09:26Z karl $'
+
+cnf=fmtutil.cnf # name of the config file
+export PATH
+
+###############################################################################
+# cleanup()
+# clean up the temp area and exit with proper exit status
+###############################################################################
+cleanup()
+{
+ rc=$1
+ # for debugging, exit $rc here so $tmpdir with its logs sticks around.
+ $needsCleanup && test -n "$tmpdir" && test -d "$tmpdir" \
+ && { cd / && rm -rf "$tmpdir"; }
+ (exit $rc); exit $rc
+}
+
+###############################################################################
+# help() and version()
+# display help (or version) message and exit
+###############################################################################
+help()
+{
+ cat <<eof
+$version
+Usage: fmtutil [OPTION]... CMD [ARG]...
+Usage: mktexfmt FORMAT.fmt|BASE.base|MEM.mem|FMTNAME.EXT
+
+Rebuild and manage TeX formats, Metafont bases and MetaPost mems.
+
+If the command name ends in mktexfmt, only one format can be created.
+The only options supported are --help and --version, and the command
+line must consist of either a format name, with its extension, or a
+plain name that is passed as the argument to --byfmt (see below). The
+full name of the generated file (if any) is written to stdout, and
+nothing else.
+
+If not operating in mktexfmt mode, the command line can be more general,
+and multiple formats can be generated, as follows.
+
+Optional behavior:
+ --cnffile FILE read FILE instead of fmtutil.cnf.
+ --fmtdir DIRECTORY
+ --no-engine-subdir don't use engine-specific subdir of the fmtdir
+ --no-error-if-no-format exit successfully if no format is selected
+ --quiet be silent
+ --test (not implemented, just for compatibility)
+ --dolinks (not implemented, just for compatibility)
+ --force (not implemented, just for compatibility)
+
+Valid commands for fmtutil:
+ --all recreate all format files
+ --missing create all missing format files
+ --refresh recreate only existing format files
+ --byengine ENGINENAME (re)create formats using ENGINENAME
+ --byfmt FORMATNAME (re)create format for FORMATNAME
+ --byhyphen HYPHENFILE (re)create formats that depend on HYPHENFILE
+ --enablefmt FORMATNAME enable formatname in config file
+ --disablefmt FORMATNAME disable formatname in config file
+ --listcfg list (enabled and disabled) configurations,
+ filtered to available formats
+ --catcfg output the content of the config file
+ --showhyphen FORMATNAME print name of hyphenfile for format FORMATNAME
+ --edit no-op in TeX Live
+ --version show version info
+ --help show this message
+
+The default config file is named fmtutil.cnf, and
+running kpsewhich fmtutil.cnf should show the active file.
+The command kpsewhich --engine=/ --all foo.fmt should show the
+locations of any and all foo.fmt files.
+
+For more information about fmt generation in TeX Live, try
+tlmgr --help or see http://tug.org/texlive/doc/tlmgr.html.
+The \`generate' action in tlmgr does the work.
+
+Report bugs to: tex-k@tug.org
+TeX Live home page: <http://tug.org/texlive/>
+eof
+ cleanup 0
+}
+
+versionfunc()
+{
+ cat <<eof
+$progname version $version
+eof
+ cleanup 0
+}
+
+###############################################################################
+# setupTmpDir()
+# set up a temp directory and a trap to remove it
+###############################################################################
+setupTmpDir()
+{
+ $needsCleanup && return
+
+ trap 'cleanup 1' 1 2 3 7 13 15
+ needsCleanup=true
+ (umask 077; mkdir "$tmpdir") \
+ || abort "could not create directory \`$tmpdir'"
+}
+
+###############################################################################
+# configReplace(file, pattern, line)
+# The first line in file that matches pattern gets replaced by line.
+# line will be added at the end of the file if pattern does not match.
+###############################################################################
+configReplace()
+{
+ file=$1; pat=$2; line=$3
+
+ if grep "$pat" "$file" >/dev/null; then
+ ed "$file" >/dev/null 2>&1 <<-eof
+ /$pat/
+ c
+ $line
+ .
+ w
+ q
+eof
+ else
+ echo "$line" >> $file
+ fi
+}
+
+###############################################################################
+# setmatch(match)
+# setting the "match state" to true or false. Used to see if there was at
+# least one match.
+###############################################################################
+setmatch()
+{
+ match=$1
+}
+
+###############################################################################
+# getmatch()
+# return success if there was at least one match.
+###############################################################################
+getmatch()
+{
+ test "x$match" = xtrue
+}
+
+###############################################################################
+# initTexmfMain()
+# get $MT_TEXMFMAIN from $TEXMFMAIN
+###############################################################################
+initTexmfMain()
+{
+ case $MT_TEXMFMAIN in
+ "") MT_TEXMFMAIN=`kpsewhich --var-value=TEXMFMAIN`;;
+ esac
+ export MT_TEXMFMAIN
+}
+
+###############################################################################
+# cache_vars()
+# locate files / kpathsea variables and export variables to environment
+# this speeds up future calls to e.g. mktexupd
+###############################################################################
+cache_vars()
+{
+ : ${MT_VARTEXFONTS=`kpsewhich --expand-var='$VARTEXFONTS' | sed 's%^!!%%'`}
+ : ${MT_MKTEXNAM=`kpsewhich --format='web2c files' mktexnam`}
+ : ${MT_MKTEXNAM_OPT=`kpsewhich --format='web2c files' mktexnam.opt`}
+ : ${MT_MKTEXDIR=`kpsewhich --format='web2c files' mktexdir`}
+ : ${MT_MKTEXDIR_OPT=`kpsewhich --format='web2c files' mktexdir.opt`}
+ : ${MT_MKTEXUPD=`kpsewhich --format='web2c files' mktexupd`}
+ : ${MT_MKTEX_CNF=`kpsewhich --format='web2c files' mktex.cnf`}
+ : ${MT_MKTEX_OPT=`kpsewhich --format='web2c files' mktex.opt`}
+ export MT_VARTEXFONTS MT_MKTEXNAM MT_MKTEXNAM_OPT MT_MKTEXDIR
+ export MT_MKTEXDIR_OPT MT_MKTEXUPD MT_MKTEX_CNF MT_MKTEX_OPT
+}
+
+###############################################################################
+# abort(errmsg)
+# print `errmsg' to stderr and exit with error code 1
+###############################################################################
+abort()
+{
+ echo "$progname: $1." >&2
+ cleanup 1
+}
+
+###############################################################################
+# maybe_abort(errmsg)
+# print `errmsg' to stderr and
+# unless noAbortFlag is set exit with error code 1
+###############################################################################
+maybe_abort()
+{
+ echo "$progname: $1." >&2
+ $noAbortFlag || cleanup 1
+}
+
+###############################################################################
+# verboseMsg(msg)
+# print `msg' to stderr is $verbose is true
+###############################################################################
+verboseMsg() {
+ $verboseFlag && verbose echo ${1+"$@"}
+}
+
+###############################################################################
+# byebye()
+# report any failures and exit the program
+###############################################################################
+byebye()
+{
+ if $has_warnings; then
+ {
+ cat <<eof
+
+###############################################################################
+$progname: Warning! Some warnings have been issued.
+Visit the log files in directory
+ $destdir
+for details.
+###############################################################################
+
+This is a summary of all \`warning' messages:
+$log_warning_msg
+eof
+ } >&2
+ fi
+
+ if $has_errors; then
+ {
+ cat <<eof
+
+###############################################################################
+$progname: Error! Not all formats have been built successfully.
+Visit the log files in directory
+ $destdir
+for details.
+###############################################################################
+
+This is a summary of all \`failed' messages:
+$log_failure_msg
+eof
+ } >&2
+ cleanup 1
+ else
+ cleanup 0
+ fi
+}
+
+###############################################################################
+# init_log_warning()
+# reset the list of warning messages
+###############################################################################
+init_log_warning()
+{
+ log_warning_msg=
+ has_warnings=false
+}
+
+###############################################################################
+# init_log_failure()
+# reset the list of failure messages
+###############################################################################
+init_log_failure()
+{
+ log_failure_msg=
+ has_errors=false
+}
+
+###############################################################################
+# log_warning(errmsg)
+# report and save warning message `errmsg'
+###############################################################################
+log_warning()
+{
+ echo "Warning: $@" >&2
+ if test -z "$log_warning_msg"; then
+ log_warning_msg="$@"
+ else
+ OLDIFS=$IFS; IFS=
+ log_warning_msg="$log_warning_msg
+$@"
+ IFS=$OLDIFS
+ fi
+ has_warnings=true
+}
+
+###############################################################################
+# log_failure(errmsg)
+# report and save failure message `errmsg'
+###############################################################################
+log_failure()
+{
+ echo "Error: $@" >&2
+ if test -z "$log_failure_msg"; then
+ log_failure_msg="$@"
+ else
+ OLDIFS=$IFS; IFS=
+ log_failure_msg="$log_failure_msg
+$@"
+ IFS=$OLDIFS
+ fi
+ has_errors=true
+}
+
+###############################################################################
+# verbose (cmd)
+# execute cmd. Redirect output depending on $mktexfmtMode.
+###############################################################################
+verbose()
+{
+ $mktexfmtMode && ${1+"$@"} >&2 || ${1+"$@"}
+}
+
+###############################################################################
+# mktexdir(args)
+# call mktexdir script, disable all features (to prevent sticky directories)
+###############################################################################
+mktexdir()
+{
+ initTexmfMain
+ MT_FEATURES=none "$MT_TEXMFMAIN/web2c/mktexdir" "$@" >&2
+}
+
+###############################################################################
+# tcfmgr(args)
+# call tcfmgr script
+###############################################################################
+tcfmgr()
+{
+ initTexmfMain
+ "$MT_TEXMFMAIN/texconfig/tcfmgr" "$@"
+}
+
+###############################################################################
+# mktexupd(args)
+# call mktexupd script
+###############################################################################
+mktexupd()
+{
+ initTexmfMain
+ "$MT_TEXMFMAIN/web2c/mktexupd" "$@"
+}
+
+###############################################################################
+# main()
+# parse commandline arguments, initialize variables,
+# switch into temp. direcrory, execute desired command
+###############################################################################
+main()
+{
+ destdir= # global variable: where do we put the format files?
+ cnf_file= # global variable: full name of the config file
+ cmd= # desired action from command line
+ needsCleanup=false
+ need_find_hyphenfile=false
+ cfgparam=
+ cfgmaint=
+ verboseFlag=true
+ noAbortFlag=false
+ # eradicate double slashes to avoid kpathsea expansion.
+ tmpdir=`echo ${TMPDIR-${TEMP-${TMP-/tmp}}}/$progname.$$ | sed s,//,/,g`
+
+ # mktexfmtMode: if called as mktexfmt, set to true. Will echo the
+ # first generated filename after successful generation to stdout then
+ # (and nothing else), since kpathsea can only deal with one.
+ mktexfmtMode=false
+ case $argv0 in
+ mktexfmt|*/mktexfmt)
+ mktexfmtMode=true
+ fullfmt=$1; shift
+ case $fullfmt in
+ ""|--help) help ;;
+ --version) versionfunc ;;
+ --*) abort "unknown option $fullfmt, try --help" ;;
+ *.fmt|*.mem|*.base)
+ set x --byfmt `echo $fullfmt | sed 's@\.[a-z]*$@@'` ${1+"$@"}
+ shift
+ ;;
+ *.*) abort "unknown format type: $fullfmt" ;;
+ *) set x --byfmt $fullfmt; shift ;;
+ esac
+ ;;
+ esac
+
+ use_engine_dir=true # whether to use web2c/$engine subdirs
+ while
+ case $1 in
+ --cnffile)
+ shift; cnf_file=$1; cfgparam=1;;
+ --cnffile=*)
+ cnf_file=`echo "$1" | sed 's/--cnffile=//'`; cfgparam=1; shift ;;
+ --fmtdir)
+ shift; destdir=$1;;
+ --fmtdir=*)
+ destdir=`echo "$1" | sed 's/--fmtdir=//'`; shift ;;
+ --no-engine-subdir)
+ use_engine_dir=false;;
+ --all|-a)
+ cmd=all;;
+ --edit|-e)
+ cmd=edit; cfgmaint=1;;
+ --missing|-m)
+ cmd=missing;;
+ --refresh|-r)
+ cmd=refresh;;
+ --byengine)
+ shift; cmd=byengine; arg=$1;;
+ --byengine=*)
+ cmd=byengine; arg=`echo "$1" | sed 's/--byengine=//'`; shift ;;
+ --byfmt|-f)
+ shift; cmd=byfmt; arg=$1;;
+ --byfmt=*)
+ cmd=byfmt; arg=`echo "$1" | sed 's/--byfmt=//'`; shift ;;
+ --byhyphen|-h)
+ shift; cmd=byhyphen; arg=$1;;
+ --byhyphen=*)
+ cmd=byhyphen; arg=`echo "$1" | sed 's/--byhyphen=//'`; shift ;;
+ --showhyphen|-s)
+ shift; cmd=showhyphen; arg=$1;;
+ --showhyphen=*)
+ cmd=showhyphen; arg=`echo "$1" | sed 's/--showhyphen=//'`; shift ;;
+ --help|-help)
+ cmd=help;;
+ --version)
+ cmd=version;;
+ --enablefmt)
+ shift; cmd=enablefmt; arg=$1; cfgmaint=1;;
+ --enablefmt=*)
+ cmd=enablefmt; arg=`echo "$1" | sed 's/--enablefmt=//'`; cfgmaint=1; shift;;
+ --disablefmt)
+ shift; cmd=disablefmt; arg=$1; cfgmaint=1;;
+ --disablefmt=*)
+ cmd=disablefmt; arg=`echo "$1" | sed 's/--disablefmt=//'`; cfgmaint=1; shift;;
+ --catcfg)
+ cmd=catcfg;;
+ --listcfg)
+ cmd=listcfg;;
+ --no-error-if-no-format)
+ noAbortFlag=true;;
+ --quiet|-q|--silent)
+ verboseFlag=false;;
+ --test|--dolinks|--force)
+ ;;
+ "") break;;
+ *) abort "unknown option \`$1'; try $progname --help if you need it";;
+ esac
+ do test $# -gt 0 && shift; done
+
+ case "$cmd" in
+ "") abort "missing command; try $progname --help if you need it";;
+ help) help;;
+ version) versionfunc;;
+ esac
+
+ if test -n "$cfgparam"; then
+ test -f "$cnf_file" || abort "config file \`$cnf_file' not found (ls-R missing?)"
+ fi
+
+ if test -n "$cfgmaint"; then
+ if test -z "$cfgparam"; then
+ setupTmpDir
+ co=`tcfmgr --tmp $tmpdir --cmd co --file $cnf`
+ test $? = 0 || cleanup 1
+ set x $co; shift
+ id=$1; cnf_file=$3; orig=$4
+ verboseMsg "$progname: initial config file is \`$orig'"
+ fi
+ else
+ if test -z "$cfgparam"; then
+ cnf_file=`tcfmgr --cmd find --file $cnf`
+ test -f "$cnf_file" || abort "config file \`$cnf' not found"
+ fi
+ fi
+
+ # these commands need no temp directory, so do them here:
+ case "$cmd" in
+ catcfg)
+ grep -v '^ *#' "$cnf_file" | sed 's@^ *@@; s@ *$@@' | grep . | sort
+ cleanup $? ;;
+ edit)
+ echo "$0: fmtutil --edit is disabled in TeX Live;" >&2
+ echo "$0: use a file fmtutil-local.cnf instead." >&2
+ echo "$0: See tlmgr --help or http://tug.org/texlive/doc/tlmgr.html." >&2
+ cleanup 0 ;;
+ enablefmt|disablefmt)
+ $cmd $arg ;; # does not return
+ listcfg)
+ listcfg_loop
+ cleanup $? ;;
+ showhyphen)
+ show_hyphen_file "$arg"
+ cleanup $? ;;
+ esac
+
+ if test -n "$cfgmaint"; then
+ if test -z "$cfgparam"; then
+ ci=`tcfmgr --tmp $tmpdir --cmd ci --id $id`
+ if test $? = 0; then
+ if test -n "$ci"; then
+ verboseMsg "$progname: configuration file updated: \`$ci'"
+ else
+ verboseMsg "$progname: configuration file unchanged."
+ fi
+ else
+ abort "failed to update configuration file."
+ fi
+ fi
+ cleanup $?
+ fi
+
+ # set up destdir:
+ if test -z "$destdir"; then
+ : ${MT_TEXMFVAR=`kpsewhich -var-value=TEXMFVAR`}
+ destdir=$MT_TEXMFVAR/web2c
+ fi
+ test -d "$destdir" || mktexdir "$destdir" >/dev/null 2>&1
+ test -d "$destdir" || abort "format directory \`$destdir' does not exist"
+ test -w "$destdir" || abort "format directory \`$destdir' is not writable"
+
+ thisdir=`pwd`
+
+ : ${KPSE_DOT=$thisdir}
+ export KPSE_DOT
+
+ # 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
+
+ # make local paths absolute:
+ case "$destdir" in
+ /*) ;;
+ *) destdir="$thisdir/$destdir";;
+ esac
+ case "$cnf_file" in
+ /*) ;;
+ *) cnf_file="$thisdir/$cnf_file";;
+ esac
+
+ cache_vars
+ init_log_failure
+ init_log_warning
+ # execute the desired command:
+ case "$cmd" in
+ all)
+ recreate_all;;
+ missing)
+ create_missing;;
+ refresh)
+ recreate_existing;;
+ byengine)
+ recreate_by_engine "$arg";;
+ byfmt)
+ recreate_by_fmt "$arg";;
+ byhyphen)
+ recreate_by_hyphenfile "$arg";;
+ esac
+
+ byebye
+}
+
+###############################################################################
+# parse_line(config_line) sets global variables:
+# format: name of the format, e.g. pdflatex
+# engine: name of the TeX engine, e.g. tex, etex, pdftex
+# texargs: flags for initex and name of the ini file (e.g. -mltex frlatex.ini)
+# fmtfile: name of the format file (without directory, but with extension)
+#
+# Support for building internationalized formats sets:
+# pool: base name of pool file (to support translated pool files)
+# tcx: translation file used when creating the format
+#
+# Example (for fmtutil.cnf):
+# mex-pl tex mexconf.tex nls=tex-pl,il2-pl mex.ini
+#
+# The nls parameter (pool,tcx) can only be specified as the first argument
+# inside the 4th field in fmtutil.cnf.
+#
+# exit code: returns error code if the ini file is not installed
+###############################################################################
+parse_line()
+{
+ case $1 in
+ '#!') disabled=true; shift;;
+ *) disabled=false;;
+ esac
+ format=$1
+ engine=$2
+ hyphenation=$3
+ shift; shift; shift
+
+ # handle nls support: pool + tcx
+ pool=; tcx=
+ case $1 in
+ nls=*)
+ pool=`echo $1 | sed 's@nls=@@; s@,.*@@'`
+ tcx=`echo $1 | sed 's@nls=[^,]*@@; s@^,@@'`
+ shift # nls stuff is not handled by the engine directly,
+ # so we shift this away
+ ;;
+ esac
+
+ texargs="$@"
+
+ case "$engine" in
+ mpost) fmtfile="$format.mem"; kpsefmt=mp; texengine=metapost;;
+ mf|mfw|mf-nowin) fmtfile="$format.base"; kpsefmt=mf; texengine=metafont;;
+ *) fmtfile="$format.fmt"; kpsefmt=tex; texengine=$engine;;
+ esac
+
+ # remove any * for the sake of the kpsewhich lookup.
+ eval lastarg=\$$#
+ inifile=`echo $lastarg | sed 's%^\*%%'`
+
+ # See if we can find $inifile for return code:
+ kpsewhich -progname=$format -format=$kpsefmt $inifile >/dev/null 2>&1
+}
+
+###############################################################################
+# find_hyphenfile(format, hyphenation) searches for hyphenation along
+# searchpath of format
+# exit code: returns error is file is not found
+###############################################################################
+find_hyphenfile()
+{
+ format="$1"; hyphenation="`echo $2 | sed 's/,/ /g'`"
+ case $hyphenation in
+ -) ;;
+ *) kpsewhich -progname="$format" -format=tex $hyphenation;;
+ esac
+}
+
+###############################################################################
+# find_info_for_name(format)
+# Look up the config line for format `format' and call parse_line to set
+# global variables.
+###############################################################################
+find_info_for_name()
+{
+ format="$1"
+
+ # set x `awk '$1 == format {print; exit}' format="$format" "$cnf_file"`; shift
+ set x `egrep "^$format( | )" "$cnf_file" | sed q`; shift
+ test $# = 0 && abort "no info for format \`$format'"
+ parse_line "$@"
+}
+
+###############################################################################
+# run_initex()
+# Calls initex. Assumes that global variables are set by parse_line.
+###############################################################################
+run_initex()
+{
+
+ # install a pool file and set tcx flag if requested in lang= option:
+ rm -f *.pool
+ poolfile=
+ tcxflag=
+ test -n "$pool" \
+ && poolfile=`(kpsewhich -progname=$engine $pool.pool) 2>/dev/null`
+ if test -n "$poolfile" && test -f "$poolfile"; then
+ verboseMsg "$progname: attempting to create localized format using pool=$pool and tcx=$tcx."
+ cp "$poolfile" $engine.pool
+ test -n "$tcx" && tcxflag=-translate-file=$tcx
+ localpool=true
+ else
+ localpool=false
+ fi
+
+ jobswitch="-jobname=$format"
+ case "$format" in
+ metafun) prgswitch=-progname=mpost;;
+ mptopdf|cont-??) prgswitch=-progname=context;;
+ *) prgswitch=-progname=$format;;
+ esac
+
+ rm -f $fmtfile
+
+ # Check for infinite recursion before running the iniTeX:
+ # We do this check only if we are running in mktexfmt mode
+ # otherwise double format definitions will create an infinite loop, too
+ $mktexfmtMode || mktexfmt_loop=
+ case :$mktexfmt_loop: in
+ *:"$format/$engine":*)
+ abort "Infinite recursion detected, giving up!" ;;
+ esac
+ mktexfmt_loop=$mktexfmt_loop:$format/$engine
+ export mktexfmt_loop
+
+ verboseMsg "$progname: running \`$engine -ini $tcxflag $jobswitch $prgswitch $texargs' ..."
+
+ # run in a subshell to get a local effect of TEXPOOL manipulation:
+ (
+ # If necessary, set TEXPOOL. Use absolute path, because of KPSE_DOT.
+ $localpool && { TEXPOOL="`pwd`:$TEXPOOL"; export TEXPOOL; }
+ verbose $engine -ini $tcxflag $jobswitch $prgswitch $texargs
+ ) </dev/null
+
+ if test $use_engine_dir; then
+ fulldestdir="$destdir/$texengine"
+ else
+ fulldestdir="$destdir"
+ fi
+ mkdir -p "$fulldestdir"
+ if test -f "$fmtfile"; then
+ grep '^! ' $format.log >/dev/null 2>&1 &&
+ log_warning "\`$engine -ini $tcxflag $jobswitch $prgswitch $texargs' possibly failed."
+
+ # We don't want user-interaction for the following "mv" commands:
+ mv "$format.log" "$fulldestdir/$format.log" </dev/null
+ #
+ destfile=$fulldestdir/$fmtfile
+ if mv "$fmtfile" "$destfile" </dev/null; then
+ verboseMsg "$progname: $destfile installed."
+ #
+ # As a special special case, we create mplib-luatex.mem for use by
+ # the mplib embedded in luatex if it doesn't already exist. (We
+ # never update it if it does exist.)
+ #
+ # This is used by the luamplib package. This way, an expert user
+ # who wants to try a new version of luatex (hence with a new
+ # version of mplib) can manually update mplib-luatex.mem without
+ # having to tamper with mpost itself.
+ #
+ if test "x$format" = xmpost && test "x$engine" = xmpost; then
+ mplib_mem_name=mplib-luatex.mem
+ mplib_mem_file=$fulldestdir/$mplib_mem_name
+ if test \! -f $mplib_mem_file; then
+ verboseMsg "$progname: copying $destfile to $mplib_mem_file"
+ if cp "$destfile" "$mplib_mem_file" </dev/null; then
+ mktexupd "$fulldestdir" "$mplib_mem_name"
+ else
+ log_warning "cp $destfile $mplib_mem_file failed."
+ fi
+ else
+ verboseMsg "$progname: $mplib_mem_file already exists, not updating."
+ fi
+ fi
+ #
+ # Echo the (main) output filename for our caller.
+ $mktexfmtMode && $mktexfmtFirst \
+ && echo "$destfile" && mktexfmtFirst=false
+ #
+ mktexupd "$fulldestdir" "$fmtfile"
+ fi
+ else
+ log_failure "\`$engine -ini $tcxflag $jobswitch $prgswitch $texargs' failed"
+ fi
+}
+
+###############################################################################
+# recreate_loop()
+# for each line in config file: check match-condition and recreate format
+# if there is a match
+###############################################################################
+recreate_loop()
+{
+ OIFS=$IFS
+ IFS='
+'
+ set `echo x; sed '/^#/d; /^[ ]*$/d' "$cnf_file"`; shift
+ IFS=$OIFS
+ for line
+ do
+ parse_line $line || continue
+ check_match || continue
+ run_initex
+ done
+}
+
+###############################################################################
+# listcfg_loop()
+# prints all format definitions in config files (enabled and disabled ones)
+# for supported formats (i.e. for those which have an existing ini file)
+###############################################################################
+listcfg_loop()
+{
+ OIFS=$IFS
+ IFS='
+'
+ set `echo x; sed '/^#$/d; /^#[^!]/d; /^[ ]*$/d' "$cnf_file"`; shift
+ IFS=$OIFS
+ for line
+ do
+ parse_line $line && echo "$line"
+ done
+}
+
+###############################################################################
+# check_match()
+# recreate all formats
+###############################################################################
+check_match()
+{
+ $need_find_hyphenfile && \
+ this_hyphenfile="`find_hyphenfile "$format" "$hyphenation"`"
+
+ eval $match_cmd && setmatch true
+}
+
+###############################################################################
+# recreate_by_fmt(fmtname)
+# recreate all versions of fmtname
+###############################################################################
+recreate_by_fmt()
+{
+ fmtname=$1
+ match_cmd="test x\$format = x$fmtname"
+ recreate_loop
+}
+
+###############################################################################
+# create_missing()
+# create all missing format files
+###############################################################################
+create_missing()
+{
+ # match_cmd='test ! -f $destdir/$fmtfile'
+ match_cmd='test ! -f "`kpsewhich -engine=$texengine -progname=$format $fmtfile`"'
+ recreate_loop
+}
+
+###############################################################################
+# recreate_existing()
+# recreate only existing format files
+###############################################################################
+recreate_existing()
+{
+ match_cmd='test -f "`kpsewhich -engine=$texengine -progname=$format $fmtfile`"'
+ recreate_loop
+}
+
+###############################################################################
+# recreate_all()
+# recreate all formats
+###############################################################################
+recreate_all()
+{
+ match_cmd=true
+ recreate_loop
+}
+
+###############################################################################
+# recreate_by_hyphenfile(hyphenfile)
+# recreate all formats that depend on hyphenfile
+###############################################################################
+recreate_by_hyphenfile()
+{
+ hyphenfile=$1
+
+ case $hyphenfile in
+ /*)
+ :
+ ;;
+ ./*)
+ hyphenfile="$KPSE_DOT/"`echo "$hyphenfile" | sed 's@..@@'`
+ ;;
+ *)
+ hyphenfile="$KPSE_DOT/$hyphenfile"
+ ;;
+ esac
+ need_find_hyphenfile=true
+ match_cmd="echo \"\$this_hyphenfile\" | grep $hyphenfile >/dev/null"
+
+ # No match before the loop:
+ setmatch false
+
+ recreate_loop
+
+ # Now check if there was at least one match:
+ getmatch || maybe_abort "no format depends on hyphen file \`$hyphenfile'"
+}
+
+###############################################################################
+# recreate_by_engine(enginename)
+# recreate all formats that are based on enginename
+###############################################################################
+recreate_by_engine()
+{
+ enginename=$1
+
+ match_cmd="test x\$engine = x$enginename"
+
+ # No match before the loop:
+ setmatch false
+
+ recreate_loop
+
+ # Now check if there was at least one match:
+ getmatch || maybe_abort "no format depends on engine \`$enginename'"
+}
+
+
+
+###############################################################################
+# show_hyphen_file(format)
+# prints full name of the hyphenfile for format
+#
+# exit code: returns error code if the ini file is not installed or if
+# the hyphen file cannot be found
+###############################################################################
+show_hyphen_file()
+{
+ fmtname=$1
+
+ find_info_for_name "$fmtname" || abort "no info for format \`$fmtname'"
+ if test "x$hyphenation" = x-; then
+ echo -
+ cleanup 0
+ fi
+ find_hyphenfile "$format" "$hyphenation" \
+ || abort "hyphenfile \`$hyphenation' not found"
+}
+
+###############################################################################
+# disablefmt(format)
+# disables format in configuration file
+###############################################################################
+disablefmt()
+{
+ grep "^$1[ ]" $cnf_file >/dev/null || { (exit 0); return 0; }
+
+ ed $cnf_file >/dev/null 2>&1 <<-eof
+ g/^$1[ ]/s/^/#! /
+ w
+ q
+eof
+ (exit 0); return 0
+}
+
+###############################################################################
+# enablefmt(format)
+# enables format in configuration file
+###############################################################################
+enablefmt()
+{
+ grep "^#![ ]*$1[ ]" $cnf_file >/dev/null || { (exit 0); return 0; }
+ ed $cnf_file >/dev/null 2>&1 <<-eof
+ g/^#![ ]*$1[ ]/s/..[ ]*//
+ w
+ q
+eof
+ (exit 0); return 0
+}
+
+main ${1+"$@"}
+cleanup 0
diff --git a/Master/texmf/scripts/tetex/texconfig-dialog.sh b/Master/texmf/scripts/tetex/texconfig-dialog.sh
new file mode 100755
index 00000000000..e1868d91574
--- /dev/null
+++ b/Master/texmf/scripts/tetex/texconfig-dialog.sh
@@ -0,0 +1,486 @@
+#!/bin/sh
+
+# TeX-Config version 3.0
+# Thomas Esser, te@dbs.uni-hannover.de. Public domain.
+
+# invoke the right shell:
+
+test -f /bin/ksh && test -z "$RUNNING_KSH" \
+ && { UNAMES=`uname -s`; test "x$UNAMES" = xULTRIX; } 2>/dev/null \
+ && { RUNNING_KSH=true; export RUNNING_KSH; exec /bin/ksh $0 ${1+"$@"}; }
+unset RUNNING_KSH
+
+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+"$@"}'='"$@"'
+
+# the version string
+version='$Id: texconfig-dialog 23826 2011-09-05 17:59:15Z karl $'
+
+: ${PAGER=more}
+progname=texconfig-dialog
+tmpdir=${TMPDIR-${TEMP-${TMP-/tmp}}}/tcdtmp.$$
+log=$tmpdir/log
+tmpmenu=$tmpdir/tmpmenu
+needsCleanup=false
+
+###############################################################################
+# cleanup()
+# clean up the temp area and exit with proper exit status
+###############################################################################
+cleanup()
+{
+ rc=$1
+ $needsCleanup && test -n "$tmpdir" && test -d "$tmpdir" \
+ && { cd / && rm -rf "$tmpdir"; }
+ termCtl reset
+ (exit $rc); exit $rc
+}
+
+###############################################################################
+# setupTmpDir()
+# set up a temp directory and a trap to remove it
+###############################################################################
+setupTmpDir()
+{
+ case $needsCleanup in
+ true) return;;
+ esac
+
+ trap 'cleanup 1' 1 2 3 7 13 15
+ needsCleanup=true
+ (umask 077; mkdir "$tmpdir") \
+ || abort "could not create directory \`$tmpdir'"
+}
+
+###############################################################################
+# abort(errmsg)
+# print `errmsg' to stderr and exit with error code 1
+###############################################################################
+abort()
+{
+ echo "$progname: $1." >&2
+ cleanup 1
+}
+
+logexec()
+{
+ (echo; echo ">>> Executing \`$@' <<<") >> $log
+ "$@" 2>&1 | tee -a $log
+}
+
+###############################################################################
+# runDialog(args, ...)
+# execute the right dialog program with the right default parameters
+###############################################################################
+runDialog()
+{
+ if test -n "$DIALOG_PROG"; then
+ termCtl clear
+ $DIALOG_PROG --title "TeX setup utility" ${1+"$@"}
+ runDialogRc=$?
+ termCtl clear
+ else
+ abort "could not find dialog or whiptail program to run"
+ fi
+ (exit $runDialogRc)
+ return $runDialogRc
+}
+
+###############################################################################
+# findDialog(void)
+# set DIALOG_PROG to the system dialog program, or the empty string.
+###############################################################################
+findDialog()
+{
+ for bin in whiptail dialog
+ do
+ binLoc=`texconfig findprog $bin`
+ case $binLoc in
+ "") DIALOG_PROG="";;
+ *) DIALOG_PROG=$binLoc; break;;
+ esac
+ done
+}
+
+###############################################################################
+# mktexdir(args)
+# call mktexdir script, disable all features (to prevent sticky directories)
+###############################################################################
+mktexdir()
+{
+ MT_FEATURES=none "$TEXMFMAIN/web2c/mktexdir" "$@" >&2
+}
+
+###############################################################################
+# termCtl(arg)
+# some convenience utilities for terminal control
+###############################################################################
+termCtl()
+{
+ case $1 in
+ clear)
+ test -n "$NO_CLEAR" && return
+ tty >/dev/null 2>&1 && clear
+ ;;
+ reset)
+ test -n "$NO_CLEAR" && return
+ reset 2>/dev/null
+ stty sane 2>/dev/null
+ reset 2>/dev/null
+ termCtl clear
+ ;;
+ readln)
+ echo
+ echo "press return to continue..."
+ read a
+ ;;
+ esac
+}
+
+###############################################################################
+# menuMain(void)
+# the main menu
+###############################################################################
+menuMain()
+{
+ cat <<-'eof'
+ The interactive texconfig utility will be started now. Make sure
+ your screen has at least 24 rows and 80 columns. If texconfig
+ crashes now, you can still set up your teTeX system using the
+ batch mode of texconfig. Try 'texconfig help' to get a list
+ of options.
+
+ The interactive mode works best with a real vt100 terminal or
+ inside an xterm window.
+eof
+ termCtl readln
+
+ while :; do
+ logMessage='view logfile'
+
+ runDialog \
+ --menu "
+Hint: all output of external commands (e.g. tex) is logged into
+a file. You can look at this file using "LOG". If cursor keys make
+trouble, you may have more luck with +/- and TAB.
+" \
+ 23 80 14 \
+ EXIT 'exit' \
+ PAPER 'default paper: A4 or letter (us)' \
+ MODE 'default metafont mode and resolution' \
+ REHASH 'rebuild filename databases' \
+ FORMATS 'edit format definitions' \
+ HYPHENATION 'customize hyphenation' \
+ DVIPS 'dvips configuration' \
+ FAQ 'view frequently asked questions + answers' \
+ CONF 'show configuration' \
+ LOG "$logMessage" \
+ 2>"$tmpmenu" || break
+
+ case `cat "$tmpmenu"` in
+ EXIT)
+ break
+ ;;
+ PAPER)
+ menuPaper
+ ;;
+ MODE)
+ menuMode
+ ;;
+ REHASH)
+ logexec texconfig rehash
+ termCtl readln
+ ;;
+ FORMATS)
+ texconfig formats
+ termCtl readln
+ ;;
+ HYPHENATION)
+ menuHyphenation
+ ;;
+ DVIPS)
+ menuDvips
+ ;;
+ FAQ)
+ texconfig faq
+ termCtl readln
+ ;;
+ CONF)
+ logexec texconfig conf
+ termCtl readln
+ ;;
+ LOG)
+ <"$log" eval $PAGER
+ termCtl readln
+ ;;
+ esac
+ done
+}
+
+menuGetMode()
+{
+ # we need eval to get the command line right... :-(
+ eval \
+ runDialog \
+ --menu \""
+Chosse a mode to be used when metafont generates font bitmaps. The resolution is the most important point, but there might
+be differences between modes of the same resolution. See the comments in the file modes.mf for more details.
+\"" \
+ 23 80 14 \
+ `texconfig mode-list` 2>"$tmpmenu"
+}
+
+menuMode()
+{
+ menuGetMode
+ mode=`cat "$tmpmenu"`
+
+ if test -n "$mode"; then
+ logexec texconfig mode "$mode"
+ termCtl readln
+ fi
+}
+
+menuDvips()
+{
+ menuDvipsDest=ps
+
+ while :; do
+ case $menuDvipsDest in
+ ps)
+ menuDvipsPrinterOpt=
+ menuDvipsMsg="
+dvips GLOBAL section. Define the most common default settings (config.ps).
+To define settings for a specific printer, first ADD a printer definition,
+then CHANGE it.
+"
+ ;;
+ *)
+ menuDvipsPrinterOpt="-P $menuDvipsDest"
+ menuDvipsMsg="
+dvips settings for printer $menuDvipsDest (config.$menuDvipsDest). Define
+local settings for this printer. To switch back to global settings mode,
+select GLOBAL.
+"
+ ;;
+ esac
+
+ runDialog \
+ --menu "$menuDvipsMsg
+You can use dvips for non PostScript printers, if you can setup your
+printing system to convert PostScript to a format that your printer can
+handle. Maybe, you can use GhostScript to do the conversion (if your
+printer is supported)." \
+ 23 80 9 \
+ RETURN 'back to the main menu' \
+ DEST 'define default destination of the generated Postscript' \
+ MODE 'change metafont mode/resolution' \
+ OFFSET 'shift output by some offset' \
+ PAPER 'define the default paper' \
+ GLOBAL 'change global settings (config.ps)' \
+ CHANGE 'change printer settings (config.$PRINTER)' \
+ ADD 'add a printer configuration' \
+ DEL 'remove a printer configuration' \
+ 2>"$tmpmenu" || break
+
+ menuDvipsAns=`cat "$tmpmenu"`
+ case $menuDvipsAns in
+ RETURN)
+ break
+ ;;
+ DEST)
+ runDialog --inputbox "Enter the command to print.
+
+In general, you need a command like 'lpr' or 'lpr -Pfoo'.
+
+NOTE: If you just press return, printing will be disabled and the output saved to a file by default.
+" 23 80 2>"$tmpmenu"
+ if test $? = 0; then
+ menuDvipsAns=`cat "$tmpmenu"`
+ case $menuDvipsAns in
+ "")
+ menuDvipsPrintOpt=-
+ ;;
+ *)
+ menuDvipsPrintOpt=$menuDvipsAns
+ ;;
+ esac
+ logexec texconfig dvips $menuDvipsPrinterOpt printcmd "$menuDvipsPrintOpt"
+ termCtl readln
+ fi
+ ;;
+ MODE)
+ menuGetMode
+ mode=`cat "$tmpmenu"`
+
+ if test -n "$mode"; then
+ logexec texconfig dvips $menuDvipsPrinterOpt mode "$mode"
+ termCtl readln
+ fi
+ ;;
+ OFFSET)
+ runDialog --inputbox "Enter a dimension pair (a rightwards offset and a downwards
+offset), e.g. 2mm,-0.5in (right 2mm and up .5in):" 23 80 2>"$tmpmenu"; menuDvipsAns=`cat "$tmpmenu"`
+ case $menuDvipsAns in
+ "") : ;;
+ *)
+ logexec texconfig dvips $menuDvipsPrinterOpt offset "$menuDvipsAns"
+ termCtl readln
+ ;;
+ esac
+ ;;
+ PAPER)
+ eval runDialog \
+ --menu \'\\n\\nChoose the default papersize definition for dvips.\\n\\n\' \
+ 23 80 8 `texconfig dvips paper-list` \
+ 2>"$tmpmenu"
+ paper=`cat "$tmpmenu"`
+ if test -n "$paper"; then
+ logexec texconfig dvips paper "$paper"
+ termCtl readln
+ fi
+ ;;
+ GLOBAL)
+ menuDvipsDest=ps
+ ;;
+ CHANGE)
+ runDialog --inputbox "Printer name (for future settings of DEST / MODE / OFFSET)" 23 80 2>"$tmpmenu"
+ menuDvipsAns=`cat $tmpmenu`
+ case $menuDvipsAns in
+ "") : ;;
+ *) menuDvipsDest=$menuDvipsAns;;
+ esac
+ ;;
+ ADD)
+ runDialog --inputbox "Printer name (for printer to add)" 23 80 2>"$tmpmenu"
+ menuDvipsAns=`cat $tmpmenu`
+ case $menuDvipsAns in
+ "") : ;;
+ *)
+ logexec texconfig dvips add $menuDvipsAns
+ termCtl readln
+ ;;
+ esac
+ ;;
+ DEL)
+ runDialog --inputbox "Printer name (for printer to delete)" 23 80 2>"$tmpmenu"
+ menuDvipsAns=`cat $tmpmenu`
+ case $menuDvipsAns in
+ "") : ;;
+ *)
+ logexec texconfig dvips del $menuDvipsAns
+ termCtl readln
+ ;;
+ esac
+ ;;
+ esac
+ done
+}
+
+menuPaper()
+{
+ runDialog \
+ --menu "
+Select your default paper format.
+" \
+ 23 80 14 \
+ RETURN 'return to the main menu' \
+ A4 'ISO A4 (210x297mm)' \
+ LETTER 'US (8.5x11in)' 2>"$tmpmenu"
+
+ p=`cat "$tmpmenu"`
+ case $p in
+ A4)
+ logexec texconfig paper a4
+ termCtl readln
+ ;;
+ LETTER)
+ logexec texconfig paper letter
+ termCtl readln
+ ;;
+ esac
+}
+
+menuHyphenation()
+{
+ runDialog \
+ --menu "
+Choose format to set up hyphenation for.
+" \
+ 23 80 14 \
+ `texconfig hyphen-list | sed 's@\(.*\)@\1 \1@'` 2>"$tmpmenu"
+ p=`cat "$tmpmenu"`
+ case $p in
+ "")
+ return
+ ;;
+ *)
+ texconfig hyphen "$p"
+ termCtl readln
+ esac
+}
+
+# main()
+
+case $1 in
+ help|--help)
+ cat <<-eof
+ Usage: $progname [--help|--version]
+eof
+ exit 0
+ ;;
+ --version)
+ cat <<-eof
+ $progname version $version.
+eof
+ exit 0
+ ;;
+esac
+
+
+: ${TEXMFCONFIG=`kpsewhich -var-value=TEXMFCONFIG`}
+: ${TEXMFVAR=`kpsewhich -var-value=TEXMFVAR`}
+: ${TEXMFMAIN=`kpsewhich -var-value=TEXMFMAIN`}
+export TEXMFCONFIG TEXMFVAR TEXMFMAIN
+
+setupTmpDir
+echo "$progname: started `date`" > $log
+findDialog
+
+test -d "$TEXMFCONFIG" \
+ || mktexdir "$TEXMFCONFIG" >/dev/null 2>&1 \
+ || echo "$progname: directory \`$TEXMFCONFIG' (from TEXMFCONFIG variable) does not exist and cannot be created" >&2
+
+canWriteConfig=false
+if test -d "$TEXMFCONFIG"; then
+ if test -w "$TEXMFCONFIG"; then
+ canWriteConfig=true
+ else
+ echo "$progname: directory \`$TEXMFCONFIG' (from TEXMFCONFIG variable) is not writable."
+ echo "$progname: configuration data cannot be changed." >&2
+ fi
+fi
+
+test -d "$TEXMFVAR" \
+ || mktexdir "$TEXMFVAR" >/dev/null 2>&1 \
+ || echo "$progname: directory \`$TEXMFVAR' (from TEXMFVAR variable) does not exist and cannot be created" >&2
+
+canWriteVardata=false
+if test -d "$TEXMFVAR"; then
+ if test -w "$TEXMFVAR"; then
+ canWriteVardata=true
+ else
+ echo "$progname: directory \`$TEXMFVAR' (from TEXMFVAR variable) is not writable."
+ echo "$progname: cached variable runtime data files cannot be written." >&2
+ fi
+fi
+
+menuMain
+cleanup 0
diff --git a/Master/texmf/scripts/tetex/texconfig-sys.sh b/Master/texmf/scripts/tetex/texconfig-sys.sh
new file mode 100755
index 00000000000..ff549003ad2
--- /dev/null
+++ b/Master/texmf/scripts/tetex/texconfig-sys.sh
@@ -0,0 +1,31 @@
+#!/bin/sh
+# $Id: texconfig-sys 20962 2011-01-07 11:45:38Z peter $
+
+# texconfig-sys: Thomas Esser, public domain.
+
+# wrapper script for texconfig with TEXMFVAR and TEXMFCONFIG set to
+# TEXMFSYSVAR / TEXMFSYSCONFIG
+
+test -f /bin/ksh && test -z "$RUNNING_KSH" \
+ && { UNAMES=`uname -s`; test "x$UNAMES" = xULTRIX; } 2>/dev/null \
+ && { RUNNING_KSH=true; export RUNNING_KSH; exec /bin/ksh $0 ${1+"$@"}; }
+unset RUNNING_KSH
+
+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+"$@"}'='"$@"'
+
+v=`kpsewhich -var-value TEXMFSYSVAR`
+c=`kpsewhich -var-value TEXMFSYSCONFIG`
+
+TEXMFVAR="$v"
+TEXMFCONFIG="$c"
+export TEXMFVAR TEXMFCONFIG
+
+exec texconfig ${1+"$@"}
diff --git a/Master/texmf/scripts/tetex/texconfig.sh b/Master/texmf/scripts/tetex/texconfig.sh
new file mode 100755
index 00000000000..c9cc73c8305
--- /dev/null
+++ b/Master/texmf/scripts/tetex/texconfig.sh
@@ -0,0 +1,1432 @@
+#!/bin/sh
+
+# TeXConfig version 3.0
+# Originally written by Thomas Esser. Public domain.
+# Now maintained as part of TeX Live; correspondence to tex-live@tug.org.
+
+# invoke the right shell:
+
+test -f /bin/ksh && test -z "$RUNNING_KSH" \
+ && { UNAMES=`uname -s`; test "x$UNAMES" = xULTRIX; } 2>/dev/null \
+ && { RUNNING_KSH=true; export RUNNING_KSH; exec /bin/ksh $0 ${1+"$@"}; }
+unset RUNNING_KSH
+
+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+"$@"}'='"$@"'
+
+# initializations...
+progname=texconfig
+
+# the version string
+version='$Id$'
+
+envVars="
+ AFMFONTS BIBINPUTS BSTINPUTS CMAPFONTS CWEBINPUTS ENCFONTS GFFONTS
+ GLYPHFONTS INDEXSTYLE LIGFONTS MFBASES MFINPUTS MFPOOL MFTINPUTS
+ MISCFONTS MPINPUTS MPMEMS MPPOOL MPSUPPORT OCPINPUTS OFMFONTS
+ OPENTYPEFONTS OPLFONTS OTPINPUTS OVFFONTS OVPFONTS PDFTEXCONFIG PKFONTS
+ PSHEADERS SFDFONTS T1FONTS T1INPUTS T42FONTS TEXBIB TEXCONFIG TEXDOCS
+ TEXFONTMAPS TEXFONTS TEXFORMATS TEXINDEXSTYLE TEXINPUTS TEXMFCNF
+ TEXMFDBS TEXMFINI TEXMFSCRIPTS TEXPICTS TEXPKS TEXPOOL TEXPSHEADERS
+ TEXSOURCES TFMFONTS TRFONTS TTFONTS VFFONTS WEB2C WEBINPUTS
+"
+tmpdir=${TMPDIR-${TEMP-${TMP-/tmp}}}/tctmp.$$
+needsCleanup=false
+lastUpdatedFile=
+
+#
+###############################################################################
+# setupFMT(void) - find a suitable version of fmt / adjust
+#
+setupFMT()
+{
+ case $FMT in
+ "")
+ FMT=fmt
+ test ! -x /bin/fmt && test ! -f /usr/bin/fmt &&
+ { test -x /bin/adjust || test -x /usr/bin/adjust; } && FMT=adjust
+ ;;
+ *)
+ return
+ ;;
+ esac
+}
+
+###############################################################################
+# myFmt(args) - run $FMT
+#
+myFmt()
+{
+ setupFMT
+ $FMT ${1+"$@"}
+}
+
+###############################################################################
+# echoShowVariable(args ...)
+# show environment variables which names are as args and their values
+#
+echoShowVariable()
+{
+ for esv
+ do
+ var=$esv
+ eval val=\"\${$var+=}\${$var- is unset}\"
+ echo "$var$val"
+ done | grep -v 'is unset$'
+}
+
+###############################################################################
+# echoShowKpseVariable(args ...)
+# show kpathsea variables which names are as args and their values
+#
+echoShowKpseVariable()
+{
+ for eskv
+ do
+ var=$eskv
+ val=`kpsewhich -var-value="$eskv"`
+ echo "$var=$val"
+ done
+}
+
+###############################################################################
+# echoLocateBinary(args ...) - show where programs actually exist
+#
+echoLocateBinary()
+{
+ for elb
+ do
+ elbLoc=`checkForBinary "$elb"`
+ if test -n "$ELB_PATH_ONLY"; then
+ test -n "$elbLoc" && echo "$elbLoc"
+ else
+ case $elbLoc in
+ "") echo "$elb: not found";;
+ *) echo "$elb: $elbLoc";;
+ esac
+ fi
+ done
+}
+
+###############################################################################
+# echoLocateCfgfile(args ...) - show where files actually exist
+#
+echoLocateCfgfile()
+{
+ for elc
+ do
+ case $elc in
+ texmf.cnf) elcLoc=`kpsewhich $elc`;;
+ *) elcLoc=`tcfmgr --cmd find --file "$elc"`;;
+ esac
+ case $elcLoc in
+ "") echo "$elc: not found";;
+ *) echo "$elcLoc";;
+ esac
+ done
+}
+
+###############################################################################
+# checkForBinary(prog) - echo full path of prog
+#
+checkForBinary()
+{
+ cfbBinary=$1
+
+ OLDIFS=$IFS
+ IFS=:
+ set x `echo "$PATH" | sed 's/^:/.:/; s/:$/:./; s/::/:.:/g'`; shift
+ found=false
+ for pathElem
+ do
+ case $pathElem in
+ "") continue;;
+ *) test -f "$pathElem/$cfbBinary" && { echo "$pathElem/$cfbBinary"; found=true; break; }
+ esac
+ done
+ IFS=$OLDIFS
+ case $found in
+ true) (exit 0); return 0;;
+ false) (exit 1); return 1;;
+ esac
+}
+
+###############################################################################
+# cleanup() - clean up the temp area and exit with proper exit status
+#
+cleanup()
+{
+ rc=$1
+ $needsCleanup && test -n "$tmpdir" && test -d "$tmpdir" \
+ && { cd / && rm -rf "$tmpdir"; }
+ (exit $rc); exit $rc
+}
+
+###############################################################################
+# setupTmpDir() - set up a temp directory and a trap to remove it
+#
+setupTmpDir()
+{
+ case $needsCleanup in
+ true) return;;
+ esac
+
+ trap 'cleanup 1' 1 2 3 7 13 15
+ needsCleanup=true
+ (umask 077; mkdir "$tmpdir") \
+ || abort "could not create directory \`$tmpdir'"
+}
+
+###############################################################################
+# setupTexmfmain() - get value for MT_TEXMFMAIN (with caching)
+#
+setupTexmfmain()
+{
+ case $MT_TEXMFMAIN in
+ "") MT_TEXMFMAIN=`kpsewhich -var-value=TEXMFMAIN`;;
+ *) return;;
+ esac
+}
+
+###############################################################################
+# setupTexmfmain() - get value for MT_TEXMFDIST (with caching)
+#
+setupTexmfdist()
+{
+ case $MT_TEXMFDIST in
+ "") MT_TEXMFDIST=`kpsewhich -var-value=TEXMFDIST`;;
+ *) return;;
+ esac
+}
+
+###############################################################################
+# setupTexmfvar() - get value for MT_TEXMFVAR (with caching)
+#
+setupTexmfvar()
+{
+ case $MT_TEXMVAR in
+ "") MT_TEXMVAR=`kpsewhich -var-value=TEXMFVAR`;;
+ *) return;;
+ esac
+}
+
+###############################################################################
+# setupSystexmf() - get value for MT_SYSTEXMF (with caching)
+#
+setupSystexmf()
+{
+ case $MT_SYSTEXMF in
+ "") MT_SYSTEXMF=`kpsewhich -var-value=SYSTEXMF`;;
+ *) return;;
+ esac
+}
+
+###############################################################################
+# abort(errmsg)
+# print `errmsg' to stderr and exit with error code 1
+#
+abort()
+{
+ echo "$progname: $1." >&2
+ cleanup 1
+}
+
+###############################################################################
+# mktexdir(args)
+# call mktexdir script, disable all features (to prevent sticky directories)
+#
+mktexdir()
+{
+ setupTexmfmain
+ MT_FEATURES=none "$MT_TEXMFMAIN/web2c/mktexdir" "$@" >&2
+}
+
+###############################################################################
+# tcfmgr(args) - call tcfmgr script
+#
+tcfmgr()
+{
+ setupTexmfmain
+ "$MT_TEXMFMAIN/texconfig/tcfmgr" "$@"
+}
+
+###############################################################################
+# mktexupd(args) - call mktexupd script
+#
+mktexupd()
+{
+ setupTexmfmain
+ "$MT_TEXMFMAIN/web2c/mktexupd" "$@"
+}
+
+###############################################################################
+# getRelDir(file)
+# matches file against SYSTEXMF. Returns relative directory of file within
+# a texmf tree in variable relPart.
+#
+getRelDir()
+{
+ file=$1
+ relPart=
+
+ setupSystexmf
+ OLDIFS=$IFS
+ IFS='
+'
+ set x `echo "$MT_SYSTEXMF" | tr : '
+'`; shift
+ IFS=$OLDIFS
+
+ # now loop over all components of SYSTEXMF
+ for dir
+ do
+ test -n "$dir" || continue
+ case "$file" in
+ $dir/*)
+ relPart=`echo "$file" | sed "s%$dir/*%%"`
+ break
+ ;;
+ esac
+ done
+
+ # now check for success / failure
+ case $relPart in
+ ""|$file)
+ # empty or full filename -> getRelDir failed!
+ (exit 1); return 1
+ ;;
+ *)
+ # relPart should just have the "dirname" part:
+ relPart=`echo "$relPart" | sed 's%/*[^/]*$%%'`
+ (exit 0); return 0
+ ;;
+ esac
+}
+
+###############################################################################
+# configReplace(file pattern line)
+# The first line in file that matches pattern gets replaced by line.
+# line will be added at the end of the file if pattern does not match.
+#
+configReplace()
+{
+ configReplaceFile=$1; configReplacePat=$2; configReplaceLine=$3
+
+ if grep "$configReplacePat" "$configReplaceFile" >/dev/null; then
+ ed "$configReplaceFile" >/dev/null 2>&1 <<-eof
+ /$configReplacePat/c
+ $configReplaceLine
+ .
+ w
+ q
+eof
+ else
+ echo "$configReplaceLine" >> $configReplaceFile
+ fi
+}
+
+###############################################################################
+# fmgrConfigReplace (file regex value)
+# replaces line matching regex by value in file
+#
+fmgrConfigReplace()
+{
+ fmgrConfigReplaceChanged=false
+
+ moreArgs=""
+ while
+ case $1 in
+ --*) moreArgs="$moreArgs $1 $2";;
+ *) break;;
+ esac
+ do shift; shift; done
+ fmgrConfigReplaceFile=$1
+ fmgrConfigReplaceRegex=$2
+ fmgrConfigReplaceValue=$3
+
+ setupTmpDir
+ co=`tcfmgr $moreArgs --tmp $tmpdir --cmd co --file $fmgrConfigReplaceFile`
+ if test $? != 0; then
+ echo "$progname: fmgrConfigReplace co failed for \`$fmgrConfigReplaceFile'" >&2
+ (exit 1); return 1
+ fi
+ set x $co; shift
+ fmgrConfigReplaceID=$1; fmgrConfigReplaceCfgFile=$3; fmgrConfigReplaceOrigFile=$4
+ configReplace "$fmgrConfigReplaceCfgFile" "$fmgrConfigReplaceRegex" "$fmgrConfigReplaceValue"
+ ci=`tcfmgr --tmp $tmpdir --cmd ci --id "$fmgrConfigReplaceID"`
+ if test $? != 0; then
+ echo "$progname: fmgrConfigReplace ci failed for \`$fmgrConfigReplaceFile'" >&2
+ (exit 1); return 1
+ fi
+ case $ci in
+ "") :;;
+ $lastUpdatedFile)
+ fmgrConfigReplaceChanged=true;;
+ *) echo "$progname: updated configuration saved as file \`$ci'" >&2
+ fmgrConfigReplaceChanged=true
+ lastUpdatedFile=$ci;;
+ esac
+ (exit 0); return 0
+}
+
+###############################################################################
+# setupDvipsPaper(paper)
+# rearranges config.ps to make paper the first paper definition
+#
+setupDvipsPaper()
+{
+ setupDvipsPaperChanged=false
+ setupDvipsPaperFile=config.ps
+ setupDvipsPaperDftPaper=$1
+
+ setupTmpDir
+ co=`tcfmgr --tmp $tmpdir --cmd co --file $setupDvipsPaperFile`
+ if test $? != 0; then
+ echo "$progname: setupDvipsPaper co failed for \`$setupDvipsPaperFile'" >&2
+ (exit 1); return 1
+ fi
+ set x $co; shift
+ setupDvipsPaperID=$1; setupDvipsPaperCfgFile=$3; setupDvipsPaperOrigFile=$4
+
+ ed "$setupDvipsPaperCfgFile" > /dev/null 2>&1 <<-eof
+ /@ /ka
+ \$a
+ @
+ .
+ /@ $setupDvipsPaperDftPaper /;/@ /-1m'a-1
+ \$d
+ w
+ q
+eof
+
+ ci=`tcfmgr --tmp $tmpdir --cmd ci --id "$setupDvipsPaperID"`
+ if test $? != 0; then
+ echo "$progname: setupDvipsPaper ci failed for \`$setupDvipsPaperFile'" >&2
+ (exit 1); return 1
+ fi
+ case $ci in
+ "") :;;
+ $lastUpdatedFile)
+ setupDvipsPaperChanged=true;;
+ *) echo "$progname: updated configuration saved as file \`$ci'" >&2
+ setupDvipsPaperChanged=true
+ lastUpdatedFile=$ci;;
+ esac
+ (exit 0); return 0
+}
+
+###############################################################################
+# setupModesMfFile(void) - find modes.mf file (with caching)
+#
+setupModesMfFile()
+{
+ case $modesMfFile in
+ "")
+ modesMfFile=`tcfmgr --cmd find --file modes.mf`
+ ;;
+ *)
+ return
+ ;;
+ esac
+}
+
+###############################################################################
+# locateConfigPsFile(void) - find config.ps file (with caching)
+#
+locateConfigPsFile()
+{
+ case $configPsFile in
+ "")
+ configPsFile=`tcfmgr --cmd find --file config.ps`
+ ;;
+ *)
+ return
+ ;;
+ esac
+}
+
+###############################################################################
+# listMfModes(file) - list modes from modes.mf file
+#
+listMfModes()
+{
+ grep mode_def "$modesMfFile" |
+ sed -e "s/mode_def //" \
+ -e "s/ .*%[^ ]* / '/" \
+ -e "s/\$/' /" |
+ egrep -v "^(help|%)" | sort
+}
+
+###############################################################################
+# listDvipsPapers(void) - list paper definitions from config.ps
+#
+listDvipsPapers()
+{
+ grep '@ ' $configPsFile | sed "s/..//;s/ / '/;s/\$/' /"
+}
+
+###############################################################################
+# getFormatsForHyphen(void)
+# list all formats which have customizable hyphenation
+#
+getFormatsForHyphen()
+{
+ fmtutil --catcfg | awk '$3 != "-" {print $1}' | sort
+}
+
+###############################################################################
+# getRes(mode) - print resolution (both X and Y axis) to metafont mode
+#
+getRes()
+{
+ getResMode=$1
+ (
+ cd $tmpdir
+ cat >mftmp.mf <<-'eof'
+ let myexit = primitive_end_;
+ mode_setup;
+ string xdpi;
+ xdpi := decimal round pixels_per_inch;
+ message "XDPI = " & xdpi;
+ string ydpi;
+ ydpi := decimal round (pixels_per_inch * aspect_ratio);
+ message "YDPI = " & ydpi;
+ fontmaking := 0;
+ myexit;
+eof
+ mf '\mode='"$getResMode"'; \input ./mftmp' </dev/null \
+ | awk '$1 == "XDPI" || $1 == "YDPI" { print $3 }'
+ )
+}
+
+###############################################################################
+# checkElemInList(elem, list)
+# check if element exists in list
+###############################################################################
+checkElemInList()
+{
+ checkElemInListElem=$1; shift
+ checkElemInListFound=false
+ for checkElemInListIter
+ do
+ case "x$checkElemInListElem" in
+ x$checkElemInListIter)
+ checkElemInListFound=true
+ break
+ ;;
+ esac
+ done
+ case $checkElemInListFound in
+ true) (exit 0); return 0;;
+ esac
+ (exit 1); return 1
+}
+
+
+# show version information from the distribution, if we have any.
+showDistVersionInfo()
+{
+ # TeX Live file.
+ test -f $MT_TEXMFMAIN/../release-texlive.txt \
+ && sed 1q $MT_TEXMFMAIN/../release-texlive.txt
+
+ # no harm in continuing to look for the teTeX files.
+ test -f $MT_TEXMFMAIN/release-tetex-src.txt \
+ && "teTeX-src release: `cat $MT_TEXMFMAIN/release-tetex-src.txt`"
+ test -f $MT_TEXMFDIST/release-tetex-texmf.txt \
+ && "teTeX-texmf release: `cat $MT_TEXMFDIST/release-tetex-texmf.txt`"
+}
+
+#
+###############################################################################
+# tcBatch(args)
+# handle batch mode
+###############################################################################
+tcBatch()
+{
+ help="texconfig supports adjusting and updating many aspects of
+the TeX installation.
+
+Usage: $progname conf (show configuration information)
+ $progname dvipdfmx paper PAPER (dvipdfmx paper size)
+ $progname dvipdfm paper PAPER (dvipdfm paper size)
+ $progname dvips [OPTION...] (dvips options)
+ $progname faq (show teTeX faq)
+ $progname findprog PROG... (show locations of PROGs, a la which)
+ $progname font vardir DIR
+ $progname font ro
+ $progname font rw
+ $progname formats (edit fmtutil.cnf)
+ $progname help (or --help; show this help)
+ $progname hyphen FORMAT (edit hyphenation config for FORMAT)
+ $progname init [FORMAT]... (rebuild FORMATs, or all formats
+ plus run texlinks and updmap)
+ $progname mode MODE (set Metafont MODE)
+ $progname paper PAPER (set default paper size to PAPER)
+ $progname pdftex [OPTION]... (pdftex options)
+ $progname rehash (rebuild ls-R files with mktexlsr)
+ $progname version (or --version; show version info)
+ $progname xdvi paper PAPER (xdvi paper size)
+
+Get more help with:
+ $progname dvipdfmx
+ $progname dvipdfm
+ $progname dvips
+ $progname font
+ $progname hyphen
+ $progname mode
+ $progname paper
+ $progname pdftex
+ $progname xdvi
+
+Report bugs to: tex-k@tug.org
+TeX Live home page: <http://tug.org/texlive/>
+"
+
+ case $1 in
+ # texconfig conf
+ conf|confall)
+ setupTexmfmain
+ setupTexmfdist
+ echo '=========================== version information =========================='
+ showDistVersionInfo
+ echo
+ echo '==================== binaries found by searching $PATH ==================='
+ echo "PATH=$PATH"
+ echoLocateBinary kpsewhich updmap fmtutil texconfig tex pdftex mktexpk dvips dvipdfm
+ echo
+ echo '=========================== active config files =========================='
+ 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
+ echo "$m: `kpsewhich $m`"
+ done
+ echo
+ echo '=========================== kpathsea variables ==========================='
+ echoShowKpseVariable TEXMFMAIN TEXMFDIST TEXMFLOCAL TEXMFSYSVAR TEXMFSYSCONFIG TEXMFVAR TEXMFCONFIG TEXMFHOME VARTEXFONTS TEXMF SYSTEXMF TEXMFDBS WEB2C TEXPSHEADERS TEXCONFIG ENCFONTS TEXFONTMAPS
+
+ echo
+ echo '==== kpathsea variables from environment only (ok if no output here) ===='
+ echoShowVariable $envVars
+ ;;
+
+ # texconfig dvipdfm
+ dvipdfm)
+ help="Usage: $progname dvipdfm paper PAPER
+
+Valid PAPER settings:
+ letter legal ledger tabloid a4 a3"
+ case $2 in
+ # texconfig dvipdfm paper
+ paper-list)
+ for p in letter legal ledger tabloid a4 a3; do echo $p; done
+ ;;
+ paper)
+ case $3 in
+ letter|legal|ledger|tabloid|a4|a3)
+ fmgrConfigReplace config '^p' "p $3";;
+ "") echo "$help" >&2; rc=1;;
+ *)
+ echo "$progname: unknown PAPER \`$3' given as argument for \`$progname dvipdfm paper'" >&2
+ echo "$progname: try \`$progname dvipdfm paper' for help" >&2
+ rc=1 ;;
+ esac ;;
+ # texconfig dvipdfm ""
+ "")
+ echo "$help" >&2; rc=1 ;;
+ # texconfig dvipdfm <unknown>
+ *)
+ echo "$progname: unknown option \`$2' given as argument for \`$progname dvipdfm'" >&2
+ echo "$progname: try \`$progname dvipdfm' for help" >&2
+ rc=1
+ ;;
+ esac
+ ;;
+
+ # texconfig dvipdfmx
+ dvipdfmx)
+ help="Usage: $progname dvipdfmx paper PAPER
+
+Valid PAPER settings:
+ letter legal ledger tabloid a4 a3"
+ case $2 in
+ # texconfig dvipdfmx paper
+ paper-list)
+ for p in letter legal ledger tabloid a4 a3; do echo $p; done
+ ;;
+ paper)
+ case $3 in
+ letter|legal|ledger|tabloid|a4|a3)
+ fmgrConfigReplace dvipdfmx.cfg '^p' "p $3";;
+ "") echo "$help" >&2; rc=1;;
+ *)
+ echo "$progname: unknown PAPER \`$3' given as argument for \`$progname dvipdfmx paper'" >&2
+ echo "$progname: try \`$progname dvipdfmx paper' for help" >&2
+ rc=1 ;;
+ esac ;;
+ # texconfig dvipdfmx ""
+ "")
+ echo "$help" >&2; rc=1 ;;
+ # texconfig dvipdfmx <unknown>
+ *)
+ echo "$progname: unknown option \`$2' given as argument for \`$progname dvipdfmx'" >&2
+ echo "$progname: try \`$progname dvipdfmx' for help" >&2
+ rc=1
+ ;;
+ esac
+ ;;
+
+ # texconfig dvips
+ dvips)
+ shift
+ help="Usage: $progname dvips add PRINTER
+ $progname dvips del PRINTER
+ $progname dvips paper PAPER
+ $progname dvips [-P PRINTER] mode MODE
+ $progname dvips [-P PRINTER] offset OFFSET
+ $progname dvips [-P PRINTER] printcmd CMD"
+ case $1 in
+ -P)
+ case $2 in
+ "")
+ echo "$progname: missing arg for parameter -P" >&2
+ rc=1; (exit $rc); return $rc
+ ;;
+ *)
+ otherPrinter=true
+ otherPrinterName=$2
+ otherPrinterFile=`kpsewhich -format='dvips config' "config.$otherPrinterName"`
+ case $otherPrinterFile in
+ "")
+ echo "$progname: configuration file \`config.$otherPrinterName' for printer \`$otherPrinterName' not found" >&2
+ rc=1; (exit $rc); return $rc
+ ;;
+ *) shift; shift;;
+ esac
+ ;;
+ esac
+ ;;
+ *)
+ otherPrinter=false
+ ;;
+ esac
+ case $otherPrinter in
+ true)
+ tcBatchDvipsPrinter=$otherPrinterName
+ moreFmgrArgs="--reldir dvips/config --infile $otherPrinterFile"
+ ;;
+ *)
+ tcBatchDvipsPrinter=ps
+ ;;
+ esac
+ case $1 in
+ add)
+ case $2 in
+ "")
+ echo "Usage: $progname dvips add PRINTER" >&2
+ rc=1
+ ;;
+ *)
+ printerName=$2
+ pFile=`kpsewhich -format='dvips config' "config.$printerName"`
+ case $pFile in
+ "")
+ setupTmpDir
+ tcfRet=`tcfmgr --emptyinfile --reldir dvips/config --cmd co --tmp $tmpdir --file "config.$printerName"`
+ if test $? != 0; then
+ echo "$progname: failed to add new configuration file \`config.$printerName'" >&2
+ rc=1
+ else
+ set x $tcfRet; shift
+ tcBatchDvipsAddID=$1; tcBatchDvipsAddFile=$3
+ echo "% file config.$printerName; added by texconfig" > "$tcBatchDvipsAddFile"
+ tcfRet=`tcfmgr --tmp $tmpdir --id "$tcBatchDvipsAddID" --cmd ci`
+ if test $? != 0; then
+ echo "$progname: failed to add new configuration file \`config.$printerName'" >&2
+ rc=1
+ else
+ echo "$progname: file $tcfRet added" >&2
+ fi
+ fi
+ ;;
+ *)
+ echo "$progname: configuration file for printer \`$printerName' already exists (\`$pFile')" >&2
+ rc=1
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+ del)
+ case $2 in
+ "")
+ echo "Usage: $progname dvips del PRINTER" >&2
+ rc=1
+ ;;
+ *)
+ printerName=$2
+ pFile=`kpsewhich -format='dvips config' "config.$printerName"`
+ case $pFile in
+ "")
+ echo "$progname: configuration file for printer \`$printerName' (config.$printerName) not found" >&2
+ rc=1
+ ;;
+ *)
+ if rm "$pFile"; then
+ echo "$progname: file \`$pFile' removed" >&2
+ else
+ echo "$progname: failed to remove file \`$pFile'" >&2
+ rc=1
+ fi
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+ paper-list)
+ locateConfigPsFile
+ listDvipsPapers
+ ;;
+ paper)
+ case $2 in
+ "")
+ echo "Usage: $progname dvips paper PAPER" >&2
+ echo >&2; echo "Valid PAPER settings:" >&2
+ locateConfigPsFile
+ listDvipsPapers | sed 's@ .*@@; s@^@ @' | myFmt
+ rc=1
+ ;;
+ *)
+ tcBatchDvipsPaper=$2
+ locateConfigPsFile
+ case "$configPsFile" in
+ "")
+ echo "$progname: file config.ps not found" >&2; rc=1
+ ;;
+ *)
+ if grep "@ $tcBatchDvipsPaper " $configPsFile >/dev/null 2>&1; then
+ setupDvipsPaper "$tcBatchDvipsPaper"
+ else
+ echo "$progname: paper \`$tcBatchDvipsPaper' not found in file \`$configPsFile'" >&2; rc=1
+ fi
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+ mode)
+ case $2 in
+ "")
+ echo "Usage: $progname dvips mode MODE
+
+Valid MODE settings:"
+ setupModesMfFile
+ listMfModes | sed 's@ .*@@; s@^@ @' | myFmt
+ rc=1
+ ;;
+ *)
+ tcBatchDvipsMode=$2
+ setupTmpDir
+ setupModesMfFile
+ if checkElemInList "$tcBatchDvipsMode" `listMfModes | sed 's@ .*@@'`; then
+ set x `getRes "$tcBatchDvipsMode"`; shift
+ resX=$1; resY=$2
+ fmgrConfigReplace $moreFmgrArgs config.$tcBatchDvipsPrinter '^M' "M $tcBatchDvipsMode"
+ fmgrConfigReplace $moreFmgrArgs config.$tcBatchDvipsPrinter '^D' "D $resX"
+ fmgrConfigReplace $moreFmgrArgs config.$tcBatchDvipsPrinter '^X' "X $resX"
+ fmgrConfigReplace $moreFmgrArgs config.$tcBatchDvipsPrinter '^Y' "Y $resY"
+ else
+ echo "$progname: unknown MODE \`$tcBatchDvipsMode' given as argument for \`$progname dvips mode'" >&2
+ echo "$progname: try \`$progname dvips mode' for help" >&2
+ rc=1
+ fi
+ ;;
+ esac
+ ;;
+ offset)
+ offset=$2
+ case $offset in
+ "")
+ echo "Usage: $progname dvips offset OFFSET"
+ rc=1
+ ;;
+ *)
+ fmgrConfigReplace $moreFmgrArgs config.$tcBatchDvipsPrinter '^O' "O $offset"
+ esac
+ ;;
+ printcmd)
+ printcmd=$2
+ case $printcmd in
+ "")
+ echo "Usage: $progname dvips printcmd CMD"
+ rc=1
+ ;;
+ -)
+ fmgrConfigReplace $moreFmgrArgs config.$tcBatchDvipsPrinter '^o' o
+ ;;
+ *)
+ fmgrConfigReplace $moreFmgrArgs config.$tcBatchDvipsPrinter '^o' "o |$printcmd"
+ ;;
+ esac
+ ;;
+ "")
+ echo "$help" >&2; rc=1
+ ;;
+ *)
+ echo "$progname: unknown option \`$1' given as argument for \`$progname dvips'" >&2
+ echo "$progname: try \`$progname dvips' for help" >&2
+ rc=1
+ ;;
+ esac
+ ;;
+
+ faq)
+ setupTexmfmain
+ if test -f $MT_TEXMFMAIN/doc/tetex/teTeX-FAQ; then
+ <$MT_TEXMFMAIN/doc/tetex/teTeX-FAQ eval ${PAGER-more}
+ else
+ echo "$progname: faq not found (usually in \$TEXMFMAIN/doc/tetex/teTeX-FAQ)" >&2
+ rc=1
+ fi
+ ;;
+
+ findprog)
+ shift
+ ELB_PATH_ONLY=1 echoLocateBinary "$@"
+ ;;
+
+ # handle "texconfig font"
+ font)
+ help="Usage: $progname font vardir DIR
+ $progname font ro
+ $progname font rw
+
+The vardir option changes the VARTEXFONTS variable in the texmf.cnf file.
+
+The rw option makes the VARTEXFONTS directory (and subtrees pk, tfm,
+source) world writable and sets the features appendonlydir:varfonts
+in mktex.cnf.
+
+The ro option makes the VARTEXFONTS directory (and subtrees pk, tfm,
+source) writable for the owner only and sets the feature texmfvar in
+mktex.cnf.
+
+For more information about these \`features', consult the teTeX manual
+(e.g. by running \`texdoc TETEXDOC')."
+
+ case $2 in
+ vardir)
+ case $3 in
+ "")
+ echo "$help" >&2
+ rc=1
+ ;;
+ *)
+ tcBatchFontVardir=$3
+ tfc=`kpsewhich texmf.cnf`
+ if test -n "$tfc"; then
+ if test -w "$tfc"; then
+ configReplace "$tfc" '^VARTEXFONTS' "VARTEXFONTS = $tcBatchFontVardir"
+ else
+ echo "$progname: setting up vardir failed. Reason: no permission to write file \`$tfc'" >&2
+ rc=1
+ fi
+ else
+ echo "$progname: setting up vardir failed. Reason: failed to find file texmf.cnf" >&2
+ rc=1
+ fi
+ ;;
+ esac
+ ;;
+ rw)
+ MT_VARTEXFONTS=`kpsewhich -var-value VARTEXFONTS`
+ if test -z "$MT_VARTEXFONTS"; then
+ echo "$progname: failed to set \`font rw'; reason: could not determine VARTEXFONTS variable." >&2; rc=1
+ return
+ fi
+ test -d "$MT_VARTEXFONTS" || mktexdir "$MT_VARTEXFONTS"
+ if test ! -d "$MT_VARTEXFONTS"; then
+ echo "$progname: failed to set \`font rw'; reason: directory \`$MT_VARTEXFONTS' does not exist." >&2; rc=1
+ return
+ fi
+ chmod 1777 "$MT_VARTEXFONTS" || {
+ echo "$progname: failed to modify permissions in \`$MT_VARTEXFONTS'." >&2; rc=1
+ return;
+ }
+ (
+ cd "$MT_VARTEXFONTS" || exit
+ echo "$progname: modifying permissions in \`$MT_VARTEXFONTS' ..." >&2
+ for d in pk tfm source; do
+ test -d "$d" && find $d -type d -exec chmod 1777 '{}' \;
+ done
+ echo "$progname: all permissions set." >&2
+ )
+ setupTmpDir
+ fmgrConfigReplace mktex.cnf '^: ..MT_FEATURES=' ": \${MT_FEATURES=appendonlydir:varfonts}"
+ ;;
+ ro)
+ MT_VARTEXFONTS=`kpsewhich -var-value VARTEXFONTS`
+ if test -z "$MT_VARTEXFONTS"; then
+ echo "$progname: failed to set \`font ro'; reason: could not determine VARTEXFONTS variable." >&2; rc=1
+ return
+ fi
+ test -d "$MT_VARTEXFONTS" || mktexdir "$MT_VARTEXFONTS"
+ if test ! -d "$MT_VARTEXFONTS"; then
+ echo "$progname: failed to set \`font ro'; reason: directory \`$MT_VARTEXFONTS' does not exist." >&2; rc=1
+ return
+ fi
+ chmod 755 "$MT_VARTEXFONTS" || {
+ echo "$progname: failed to modify permissions in \`$MT_VARTEXFONTS'." >&2; rc=1
+ return;
+ }
+ (
+ cd "$MT_VARTEXFONTS" || exit
+ echo "$progname: modifying permissions in \`$MT_VARTEXFONTS' ..." >&2
+ for d in pk tfm source; do
+ test -d "$d" && find "$d" -type d -exec chmod 755 '{}' \;
+ done
+ echo "$progname: all permissions set." >&2
+ )
+ setupTmpDir
+ fmgrConfigReplace mktex.cnf '^: ..MT_FEATURES=' ": \${MT_FEATURES=texmfvar}"
+ ;;
+ "") echo "$help" >&2; rc=1;;
+ *) echo "$progname: unknown option \`$2' given as argument for \`$progname font'" >&2
+ echo "$progname: try \`$progname font' for help" >&2
+ rc=1
+ ;;
+ esac
+ ;;
+
+ formats)
+ cat >&2 <<EOM
+texconfig formats is no longer supported, because manual edits of
+fmtutil.cnf will be overwritten by the new TeX Live package manager,
+tlmgr, which regenerates that file as needed upon package changes.
+Thus, to add or remove formats, the recommended method is to use tlmgr
+to add or remove the appropriate package.
+
+If you need to make manual additions, you can edit the file
+fmtutil-local.cnf under TEXMFLOCAL. Further information with
+tlmgr --help and at http://tug.org/texlive/tlmgr.html.
+
+Exiting.
+EOM
+ exit 1 # but leave the real code for posterity
+
+ setupTmpDir
+ echo "$progname: analyzing old configuration..." >&2
+ fmtutil --catcfg > $tmpdir/pre
+ fmtutil --edit
+ echo "$progname: analyzing new configuration..." >&2
+ fmtutil --catcfg > $tmpdir/post
+
+ if cmp $tmpdir/pre $tmpdir/post >/dev/null 2>&1; then
+ echo "$progname: no new/updated formats available ..." >&2
+ else
+ echo "$progname: updating formats ..." >&2
+ comm -13 $tmpdir/pre $tmpdir/post > $tmpdir/addOrChange
+ for i in `awk '{print $1}' $tmpdir/addOrChange`; do
+ fmtutil --byfmt "$i" || rc=1
+ done
+ texlinks --multiplatform || rc=1
+ fi
+ ;;
+
+ help|--help|-h)
+ echo "$help"
+ ;;
+
+ # "hyphen FORMAT"
+ hyphen)
+ cat >&2 <<EOM
+texconfig hyphen is no longer supported, because manual edits of
+language.dat (or language.def) will be overwritten by the new TeX Live
+package manager, tlmgr, which regenerates those configuration files as
+needed upon package changes. Thus, to add or remove hyphenation
+patterns, the recommended method is to use tlmgr to add or remove the
+appropriate package.
+
+If you need to make manual additions, you can edit the files
+language-local.dat and language-local.def under TEXMFLOCAL. Further
+information with tlmgr --help and at http://tug.org/texlive/tlmgr.html.
+
+Exiting.
+EOM
+ exit 1 # but leave the real code for posterity
+
+ tcBatchHyphenFormat=$2
+ formatsForHyphen=`getFormatsForHyphen`
+ formatsForHyphenFmt=`echo "$formatsForHyphen" | myFmt | sed 's@^@ @'`
+ help="Usage: $progname hyphen FORMAT
+
+Valid FORMATs are:
+$formatsForHyphenFmt"
+ case $tcBatchHyphenFormat in
+ "")
+ echo "$help" >&2; rc=1
+ ;;
+ *)
+ if checkElemInList "$tcBatchHyphenFormat" $formatsForHyphen; then
+
+ tcBatchHyphenFile=`fmtutil --showhyphen "$tcBatchHyphenFormat"`
+ case $tcBatchHyphenFile in
+ "")
+ echo "$progname: could not find hyphen setup file for format \`$tcBatchHyphenFormat'" >&2
+ rc=1
+ return
+ ;;
+ esac
+
+ getRelDir "$tcBatchHyphenFile"
+ case $relPart in
+ "")
+ # edit tcBatchHyphenFile directly
+ tcBatchHFID=
+ setupTmpDir
+ tcBatchHFEdit=$tcBatchHyphenFile
+ tcBatchHFOrig=$tmpdir/hforig
+ cp "$tcBatchHyphenFile" "$tcBatchHFOrig"
+ ;;
+ *)
+ # use tcfmgr
+ tcBatchHyphenFileBasename=`echo "$tcBatchHyphenFile" | sed 's@.*/@@'`
+ setupTmpDir
+ co=`tcfmgr --tmp $tmpdir --cmd co --file "$tcBatchHyphenFileBasename" --reldir "$relPart" --infile "$tcBatchHyphenFile"`
+ if test $? != 0; then
+ echo "$progname: failed to check out file \`$tcBatchHyphenFile'" >&2
+ rc=1
+ return 1
+ else
+ set x $co; shift
+ tcBatchHFID=$1; tcBatchHFEdit=$3; tcBatchHFOrig=$4
+ fi
+ ;;
+ esac
+ ${VISUAL-${EDITOR-vi}} "$tcBatchHFEdit"
+ if cmp "$tcBatchHFEdit" "$tcBatchHFOrig" >/dev/null 2>&1; then
+ echo "$progname: configuration unchanged." >&2
+ else
+ case $tcBatchHFID in
+ "")
+ tcBatchHFOut=$tcBatchHFEdit
+ echo "$progname: updated configuration saved as file \`$tcBatchHFOut'" >&2
+ lastUpdatedFile=$ci
+ ;;
+ *)
+ ci=`tcfmgr --tmp $tmpdir --cmd ci --id "$tcBatchHFID"`
+ if test $? != 0; then
+ echo "$progname: failed to check in file \`$tcBatchHyphenFileBasename'" >&2
+ rc=1
+ return
+ else
+ tcBatchHFOut=$ci
+ echo "$progname: updated configuration saved as file \`$tcBatchHFOut'" >&2
+ lastUpdatedFile=$ci
+ fi
+ ;;
+ esac
+ fmtutil --byhyphen "$tcBatchHFOut"
+ fi
+ else
+ echo "$progname: invalid format \`$tcBatchHyphenFormat' specified as argument for \`$progname hyphen'" >&2
+ echo "$progname: for getting help, try \`$progname hyphen'" >&2
+ rc=1
+ fi
+ ;;
+ esac
+ ;;
+
+ hyphen-list)
+ getFormatsForHyphen
+ ;;
+
+ init)
+ case $2 in
+ "")
+ if fmtutil --all \
+ && texlinks --multiplatform \
+ && updmap; then
+ :
+ else
+ rc=1
+ fi
+ ;;
+ *)
+ shift 1
+ for i in "$@"; do
+ fmtutil --byfmt "$i" || rc=1
+ done
+ ;;
+ esac
+ ;;
+
+ mode-list)
+ setupModesMfFile
+ listMfModes
+ ;;
+
+ mode)
+ case $2 in
+ "")
+ echo "Usage: $progname mode MODE
+
+Valid MODE settings:"
+ setupModesMfFile
+ listMfModes | sed 's@ .*@@; s@^@ @' | myFmt
+ rc=1
+ ;;
+ *)
+ tcBatchMode=$2
+ setupModesMfFile
+ if checkElemInList $tcBatchMode `listMfModes | sed 's@ .*@@'`; then
+
+ # modify mktex.cnf
+ setupTmpDir
+ fmgrConfigReplace mktex.cnf '^: ..MODE=' ": \${MODE=$tcBatchMode}"
+ set x `getRes "$tcBatchMode"`; shift
+ tcBatchRes=$1
+ fmgrConfigReplace mktex.cnf '^: ..BDPI=' ": \${BDPI=$tcBatchRes}"
+
+ if checkForBinary dvips >/dev/null && tcfmgr --cmd find --file config.ps >/dev/null 2>&1; then
+ tcBatch dvips mode "$tcBatchMode"
+ fi
+ if checkForBinary pdftex >/dev/null && tcfmgr --cmd find --file pdftexconfig.tex >/dev/null 2>&1; then
+ tcBatch pdftex mode "$tcBatchMode"
+ fi
+ else
+ echo "$progname: unknown mode \`$tcBatchMode' specified as argument for \`$progname mode'" >&2; rc=1
+ fi
+ ;;
+ esac
+ ;;
+
+ paper)
+ help="Usage: $progname paper PAPER
+
+Valid PAPER settings:
+ letter a4"
+
+ p=$2; pXdvi=$2; pDvips=$2
+ case $2 in
+ letter)
+ pXdvi=us;;
+ a4)
+ pXdvi=a4;;
+ "") echo "$help" >&2; rc=1; return;;
+ *)
+ echo "$progname: unknown PAPER \`$2' given as argument for \`$progname paper'" >&2
+ echo "$progname: try \`$progname paper' for help" >&2
+ rc=1
+ return;;
+ esac
+ if checkForBinary dvips >/dev/null && tcfmgr --cmd find --file config.ps >/dev/null 2>&1; then
+ tcBatch dvips paper $pDvips
+ fi
+ if checkForBinary dvipdfm >/dev/null && tcfmgr --cmd find --file config >/dev/null 2>&1; then
+ tcBatch dvipdfm paper $p
+ fi
+ if checkForBinary dvipdfmx >/dev/null && tcfmgr --cmd find --file dvipdfmx.cfg >/dev/null 2>&1; then
+ tcBatch dvipdfmx paper $p
+ fi
+ if checkForBinary xdvi >/dev/null && tcfmgr --cmd find --file XDvi >/dev/null 2>&1; then
+ tcBatch xdvi paper $pXdvi
+ fi
+ if checkForBinary pdftex >/dev/null && tcfmgr --cmd find --file pdftexconfig.tex >/dev/null 2>&1; then
+ tcBatch pdftex paper $p
+ fi
+ ;;
+
+ pdftex)
+ help="Usage: $progname pdftex paper PAPER
+
+Valid PAPER settings:
+ a4 letter"
+ case $2 in
+
+ mode)
+ case $3 in
+ "")
+ echo "Usage: $progname pdftex mode MODE"
+ rc=1
+ ;;
+ *)
+ tcBatchPdftexMode=$3
+ setupTmpDir
+ setupModesMfFile
+ if checkElemInList "$tcBatchPdftexMode" `listMfModes | sed 's@ .*@@'`; then
+ set x `getRes "$tcBatchPdftexMode"`; shift
+ fmgrConfigReplace pdftexconfig.tex 'pdfpkresolution' "\\pdfpkresolution=$1"
+ if $fmgrConfigReplaceChanged; then
+ fmtutil --refresh
+ fi
+ else
+ echo "$progname: unknown MODE \`$tcBatchPdftexMode' given as argument for \`$progname pdftex mode'" >&2
+ rc=1
+ fi
+ ;;
+ esac
+ ;;
+
+ paper)
+ case $3 in
+ letter)
+ w="8.5 true in"; h="11 true in"
+ setupTmpDir
+ fmgrConfigReplace pdftexconfig.tex pdfpagewidth '\pdfpagewidth='"$w"
+ wChanged=$fmgrConfigReplaceChanged
+ fmgrConfigReplace pdftexconfig.tex pdfpageheight '\pdfpageheight='"$h"
+ if $wChanged || $fmgrConfigReplaceChanged; then
+ fmtutil --refresh
+ fi
+ ;;
+ a4)
+ w="210 true mm"; h="297 true mm"
+ fmgrConfigReplace pdftexconfig.tex pdfpagewidth '\pdfpagewidth='"$w"
+ wChanged=$fmgrConfigReplaceChanged
+ fmgrConfigReplace pdftexconfig.tex pdfpageheight '\pdfpageheight='"$h"
+ if $wChanged || $fmgrConfigReplaceChanged; then
+ fmtutil --refresh
+ fi
+ ;;
+ "") echo "$help" >&2; rc=1;;
+ *)
+ echo "$progname: unknown PAPER \`$3' given as argument for \`$progname pdftex paper'" >&2
+ echo "$progname: try \`$progname pdftex paper' for help" >&2
+ rc=1 ;;
+ esac ;;
+ "")
+ echo "$help" >&2; rc=1;;
+ *)
+ echo "$progname: unknown option \`$2' given as argument for \`$progname pdftex'" >&2
+ echo "$progname: try \`$progname pdftex' for help" >&2
+ rc=1
+ ;;
+ esac
+ ;;
+
+ rehash)
+ mktexlsr
+ ;;
+
+ #
+ version|--version)
+ echo "$progname version $version"
+ setupTexmfmain
+ setupTexmfdist
+ showDistVersionInfo
+ (exit 0); exit 0;;
+
+ # handle "xdvi paper PAPER"
+ xdvi)
+ tcBatchXdviPapers='us "8.5x11"
+usr "11x8.5"
+legal "8.5x14"
+foolscap "13.5x17.0"
+a1 "59.4x84.0cm"
+a2 "42.0x59.4cm"
+a3 "29.7x42.0cm"
+a4 "21.0x29.7cm"
+a5 "14.85x21.0cm"
+a6 "10.5x14.85cm"
+a7 "7.42x10.5cm"
+a1r "84.0x59.4cm"
+a2r "59.4x42.0cm"
+a3r "42.0x29.7cm"
+a4r "29.7x21.0cm"
+a5r "21.0x14.85cm"
+a6r "14.85x10.5cm"
+a7r "10.5x7.42cm"
+b1 "70.6x100.0cm"
+b2 "50.0x70.6cm"
+b3 "35.3x50.0cm"
+b4 "25.0x35.3cm"
+b5 "17.6x25.0cm"
+b6 "13.5x17.6cm"
+b7 "8.8x13.5cm"
+b1r "100.0x70.6cm"
+b2r "70.6x50.0cm"
+b3r "50.0x35.3cm"
+b4r "35.3x25.0cm"
+b5r "25.0x17.6cm"
+b6r "17.6x13.5cm"
+b7r "13.5x8.8cm"
+c1 "64.8x91.6cm"
+c2 "45.8x64.8cm"
+c3 "32.4x45.8cm"
+c4 "22.9x32.4cm"
+c5 "16.2x22.9cm"
+c6 "11.46x16.2cm"
+c7 "8.1x11.46cm"
+c1r "91.6x64.8cm"
+c2r "64.8x45.8cm"
+c3r "45.8x32.4cm"
+c4r "32.4x22.9cm"
+c5r "22.9x16.2cm"
+c6r "16.2x11.46cm"
+c7r "11.46x8.1cm"'
+ help="Usage: $progname xdvi paper PAPER
+
+Valid PAPER settings:
+ a1 a1r a2 a2r a3 a3r a4 a4r a5 a5r a6 a6r a7 a7r
+ b1 b1r b2 b2r b3 b3r b4 b4r b5 b5r b6 b6r b7 b7r
+ c1 c1r c2 c2r c3 c3r c4 c4r c5 c5r c6 c6r c7 c7r
+ foolscap legal us usr"
+ case $2 in
+ paper-list)
+ echo "$tcBatchXdviPapers"
+ ;;
+ paper)
+ case $3 in
+ a1|a1r|a2|a2r|a3|a3r|a4|a4r|a5|a5r|a6|a6r|a7|a7r|b1|b1r|b2|b2r|b3|b3r|b4|b4r|b5|b5r|b6|b6r|b7|b7r|c1|c1r|c2|c2r|c3|c3r|c4|c4r|c5|c5r|c6|c6r|c7|c7r|foolscap|legal|us|usr)
+ fmgrConfigReplace XDvi paper: "*paper: $3"
+ ;;
+ "") echo "$help" >&2; rc=1;;
+ *)
+ echo "$progname: unknown PAPER \`$3' given as argument for \`$progname xdvi paper'" >&2
+ echo "$progname: try \`$progname xdvi paper' for help" >&2
+ rc=1 ;;
+ esac ;;
+ "")
+ echo "$help" >&2; rc=1;;
+ *)
+ echo "$progname: unknown option \`$2' given as argument for \`$progname xdvi'" >&2
+ echo "$progname: try \`$progname xdvi' for help" >&2
+ rc=1
+ ;;
+ esac
+ ;;
+ *)
+ echo "$progname: unknown option \`$1' given as argument for \`$progname'" >&2
+ echo "$progname: try \`$progname help' for help" >&2
+ rc=1
+ esac
+}
+
+###############################################################################
+# tcInteractive(void)
+# handle interactive mode
+###############################################################################
+tcInteractive()
+{
+ texconfig-dialog
+}
+
+###############################################################################
+# main()
+###############################################################################
+rc=0
+case $# in
+ 0) tcInteractive;;
+ *) tcBatch "$@";;
+esac
+
+cleanup $rc
diff --git a/Master/texmf/scripts/tetex/texlinks.sh b/Master/texmf/scripts/tetex/texlinks.sh
new file mode 100755
index 00000000000..09b3488d263
--- /dev/null
+++ b/Master/texmf/scripts/tetex/texlinks.sh
@@ -0,0 +1,335 @@
+#!/bin/sh
+# $Id: texlinks 18035 2010-04-28 17:41:52Z mpg $
+
+# Thomas Esser, 1999, 2002, 2003. public domain.
+
+# texlinks: script to maintain symlinks from format to engine. Interprets
+# the lines given in fmtutil.cnf.
+
+# History:
+# (Further changes in ChangeLog.)
+# Tue Oct 9 14:23:01 BST 2007
+# Added unlink option (-u) to aid OpenBSD package uninstall
+# Edd Barrett <vext01@gmail.com>
+# Sun Aug 28 21:41:06 CEST 2005
+# remove special cases for csplain,cslatex,pdfcslatex,pdfcsplain
+# Fr Apr 8 19:15:05 CEST 2005
+# cleanup now has an argument for the return code
+# So Mar 27 18:52:06 CEST 2005
+# honor $TMPDIR, $TEMP and $TMP, not just $TMP
+# Mon May 10 20:52:48 CEST 2004
+# kpseaccess instead of access
+# Thu Dec 25 22:11:53 CET 2003, te:
+# add version string
+# Tue Apr 9 22:46:34 CEST 2002, te:
+# do not create symlinks for cont-??, metafun and mptopdf
+
+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+"$@"}'='"$@"'
+
+version='$Id: texlinks 18035 2010-04-28 17:41:52Z mpg $'
+progname=texlinks
+cnf=fmtutil.cnf # name of the config file
+
+usage='Usage: texlinks [OPTION]... [DIRECTORY]...
+
+Create symbolic links format -> engine according to fmtutil setup.
+
+Mandatory arguments to long options are mandatory for short options too.
+ -e, --exeext EXT append EXT to symlink targets (default: none)
+ -f, --cnffile FILE use FILE as config file (default: fmtutil.cnf)
+ -m, --multiplatform operate in all platform specific directories
+ (default: operate only in directory for this platform)
+ -q, --quiet silently skip existing scripts / binaries
+ (default: issue warning)
+ -s, --silent same as -q
+ -u, --unlink remove symlinks created by texlinks
+ -v, --verbose enable verbose messages (default: off)
+ -h, --help show this help text
+ --version show version string
+
+The DIRECTORY arguments are an optional list of directories in which to
+operate. If no directories are specified and --multiplatform is
+likewise not specified, the directory of this script itself is used.
+With --multiplatform, all child dirs of an upper-level bin/ dir are used.
+
+Report bugs to: tex-k@tug.org
+TeX Live home page: <http://tug.org/texlive/>
+'
+
+###############################################################################
+# abort(errmsg)
+# print `errmsg' to stderr and exit with error code 1
+###############################################################################
+abort() { errmsg "texlinks: $1."; cleanup 1; }
+
+# error message to stderr:
+errmsg() { echo "$@" >&2; }
+
+# give message to stderr only if "verbose" mode is on:
+verbose_echo() { $verbose && errmsg "$@"; }
+
+# in verbose mode: show command that is executed:
+verbose_do() { verbose_echo "$@"; "$@"; }
+
+###############################################################################
+# cleanup()
+# clean up the temp area and exit with proper exit status
+###############################################################################
+cleanup()
+{
+ rc=$1
+ $needsCleanup && test -n "$tmpdir" && test -d "$tmpdir" \
+ && { rm -f "$tmpdir"/*; cd /; rmdir "$tmpdir"; }
+ exit $rc
+}
+
+###############################################################################
+# setupTmpDir()
+# set up a temp directory and a trap to remove it
+###############################################################################
+setupTmpDir()
+{
+ $needsCleanup && return
+
+ trap 'cleanup 1' 1 2 3 7 13 15
+ needsCleanup=true
+ (umask 077; mkdir "$tmpdir") \
+ || abort "could not create directory \`$tmpdir'"
+}
+
+
+# search a binary along $PATH:
+check_for_binary()
+{
+ testbin=$1
+ set x `echo "$PATH" | sed 's/^:/.:/; s/:$/:./; s/::/:.:/g; s/:/ /g'`; shift
+ for i
+ do
+ if [ -x "$i/$testbin" ]; then
+ echo "$i/$testbin"
+ return 0
+ fi
+ done
+ return 1
+}
+
+
+###############################################################################
+# install_link(dest src)
+# create a symlink like ln -s dest src, but make sure that src is not
+# an existing binary, possibly adding the executable extension if
+# passed on the command.
+###############################################################################
+install_link()
+{
+ # make symlink src -> dest
+ dest=$1; src=$2
+
+ case $src in
+ */mf)
+ if test "$dest" = mf-nowin; then
+ if test -f $selfautoloc/mfw; then
+ dest=mfw # name for windows-enabled mf, once upon a time
+ verbose_echo "both mfw and mf-nowin exists, $src linked to $dest"
+ fi
+ if test -f $selfautoloc/mf && test -f $selfautoloc/mf-nowin; then
+ # have both mf and mf-nowin binaries. no link.
+ verbose_echo "skipped metafont symlink $src -> $dest (special case)"
+ return
+ fi
+ fi
+ ;;
+ esac
+
+ # append .exe if supplied (for cygwin).
+ test -n "$exeext" && dest="$dest$exeext"
+
+ case $src in
+ */cont-??|*/mptopdf)
+ # context includes wrapper scripts that create/run these.
+ verbose_echo "skipped ConTeXtish symlink $src -> $dest (special case)"
+ ;;
+ *)
+ test "x$src" != "x`(ls -ld $src | awk '{print $NF}') 2>/dev/null`" &&
+ rm -f "$src"
+
+ if test -f "$src"; then
+ case $silent in
+ true)
+ ;;
+ *)
+ errmsg "install_link $src -> $dest failed: file already exists."
+ ;;
+ esac
+ else
+ verbose_do ln -s "$dest" "$src"
+ fi
+ ;;
+ esac
+}
+
+###############################################################################
+# search_symlinkdir()
+# look if $PATH has only symlinks to the real binaries and find that
+# directory. Also check if this directory is writable.
+###############################################################################
+search_symlinkdir()
+{
+ kpsewhich=`check_for_binary kpsewhich`
+ test -z "$kpsewhich" && return 1
+ symlinkdir=`echo $kpsewhich | sed 's@/*kpsewhich$@@'`
+ kpseaccess -w "$symlinkdir" || return 1
+ touch "$symlinkdir/tl$$"
+ if test -f "$selfautoloc/tl$$"; then
+ rm -f "$symlinkdir/tl$$"
+ return 1
+ else
+ rm -f "$symlinkdir/tl$$"
+ return 0
+ fi
+}
+
+###############################################################################
+# upd_symlinkdir()
+# if $PATH has only symlinks to the real binaries, update that directory
+# that holds the symlinks
+###############################################################################
+upd_symlinkdir()
+{
+ search_symlinkdir || return 0
+ for i in `sed 's@ .*@@' cnf_file_ln.$$`; do
+ install_link "$selfautoloc/$i" "$symlinkdir/$i"
+ done
+}
+
+###############################################################################
+# rm_link()
+# Delete a previously installed link
+###############################################################################
+rm_link()
+{
+ link=$1;
+ if test -e $link; then
+ if test -h $link; then
+ verbose_do rm -Rf $link
+ else
+ verbose_echo "kept $link, since not a symlink"
+ fi
+ else
+ verbose_echo "skipped $link, non-existent"
+ fi
+}
+
+###############################################################################
+# main()
+# parse commandline arguments, initialize variables,
+# switch into temp. direcrory, execute desired command
+###############################################################################
+main()
+{
+ cnf_file= # global variable: full name of the config file
+ dirs=
+ needsCleanup=false
+
+ exeext=
+ multiplatform=false
+ verbose=false
+ unlink=false
+ silent=false
+ thisdir=`pwd`
+ : ${KPSE_DOT=$thisdir}; export KPSE_DOT
+ selfautoloc=`kpsewhich --expand-var='$SELFAUTOLOC'`
+ while
+ case $1 in
+ --h*|-h)
+ echo "$usage"; exit 0;;
+ --version)
+ echo "$progname version $version"; exit 0;;
+ --cnffile|-f)
+ shift; cnf_file=$1;;
+ --e*|-e) shift; exeext=$1;;
+ --m*|-m) multiplatform=true;;
+ --s*|-s|--q*|-q) silent=true;;
+ --u*|-u) unlink=true;;
+ --v*|-v) verbose=true;;
+ -*) errmsg "fmtutil: unknown option \`$1' ignored.";;
+ *) break;;
+ esac
+ do test $# -gt 0 && shift; done
+ dirs="$*"
+
+ # if no cnf_file from command-line, look it up with kpsewhich:
+ test -z "$cnf_file" && cnf_file=`kpsewhich --format='web2c files' $cnf`
+ test -f "$cnf_file" || abort "config file \`$cnf' not found"
+
+
+ tmpdir=${TMPDIR-${TEMP-${TMP-/tmp}}}/texlinks.$$
+ setupTmpDir
+ cd "$tmpdir" || cleanup 1
+
+ sed '/^[ ]*#/d; /^[ ]*$/d' $cnf_file \
+ | awk '{print $1, $2}' > cnf_file_ln.$$
+
+ if test -z "$dirs"; then
+ if test $multiplatform = true; then
+ case $selfautoloc in
+ */bin) dirs=$selfautoloc;;
+ *) parent=`kpsewhich --expand-var='$SELFAUTODIR'`
+ dirs=`find $parent -type f -name kpsewhich -print \
+ | sed 's@/kpsewhich$@@'`;;
+ esac
+ else
+ dirs=$selfautoloc
+ fi
+ fi
+
+ for d in $dirs; do
+ kpseaccess -w $d \
+ || { errmsg "$d: no write permissions. Skipping..."; continue; }
+ # cnf_file_ln.$$ has lines with "format engine" pairs
+ set x `cat cnf_file_ln.$$`; shift
+ while test $# != 0; do
+ fmt=$1; engine=$2; shift; shift
+
+ # Some broken shells destroy the positional arguments when calling a
+ # shellfunction. Therefore, we save and restore them "by hand" in the
+ # main_args_while variable.
+ main_args_while="$@"
+
+ test "x$fmt" = "x$engine" && continue
+ if test -f "$d/$engine$exeext"; then
+ case $unlink in
+ true)
+ rm_link "$d/$fmt";;
+ *)
+ install_link "$engine" "$d/$fmt";;
+ esac
+ else
+ verbose_echo "skipped $d/$engine, engine does not exist"
+ fi
+
+ # restore positional arguments:
+ set x $main_args_while; shift
+
+ done
+ done
+ upd_symlinkdir
+}
+
+main ${1+"$@"}
+
+# set successful return code
+cleanup 0