--- rc.config.tetex +++ rc.config.tetex Thu Mar 2 14:31:12 2000 @@ -0,0 +1,7 @@ +## +## The automatical font generation of the TeX/LaTeX systems do +## locate the bitmap font into the directory /var/cache/fonts/. +## If CLEAR_TEXMF_FONTS is set to "yes" then this directory +## will be cleared from fonts not used in the last 20 days. +## +CLEAR_TEXMF_FONTS="no" --- tetex.cron +++ tetex.cron Thu Mar 2 14:31:12 2000 @@ -0,0 +1,29 @@ +#!/bin/bash +# +# Remove pk files older than 20 days +# Remove tfm files older than 60 days +# Don't remove source files +# Call mktexlsr +# + +. /etc/rc.config +test -r /etc/rc.config.d/tetex.rc.config && . /etc/rc.config.d/tetex.rc.config + +VARTEXFONTS=$(kpsewhich --expand-var '$VARTEXFONTS' 2> /dev/null) + +if test "$CLEAR_TEXMF_FONTS" = "yes" -a -n "$VARTEXFONTS" ; then + OLDIFS=$IFS; IFS=':;' + for p in $VARTEXFONTS ; do + test -d $p/pk/ && find $p/pk/ -type f -and -atime +20 -print0 + test -d $p/tfm/ && find $p/tfm/ -type f -and -atime +60 -print0 + done > >(exec xargs -r -l100 -0 -- rm -f) + IFS=$OLDIFS +fi + +# +# Update the ls-R's +# +mktexlsr > /dev/null + +# +exit 0 --- conf.d/SuSEconfig.tetex +++ conf.d/SuSEconfig.tetex Thu Mar 2 16:41:40 2000 @@ -0,0 +1,261 @@ +#!/bin/bash +# +# Copyright (c) 1997 S.u.S.E. Gmbh Fuerth, Germany. All rights reserved. +# +# Author: Werner Fink , 1997-99 +# + +MKTEXLSR=true +export MKTEXLSR + +type -p mktexlsr &> /dev/null || exit 0 +type -p kpsewhich &> /dev/null || exit 0 +type -p find &> /dev/null || { echo "$0: No find in PATH ... skipping"; exit 0 ; } +type -p sort &> /dev/null || { echo "$0: No sort in PATH ... skipping"; exit 0 ; } +type -p env &> /dev/null || { echo "$0: No env in PATH ... skipping"; exit 0 ; } +type -p sed &> /dev/null || { echo "$0: No sed in PATH ... skipping"; exit 0 ; } + +# +# Re-import the familiar var and conf data +# +: ${TEXMFMAIN=`kpsewhich --expand-var='$TEXMFMAIN' | sed 's@^!*@@'`} +: ${VARTEXMF=` kpsewhich --expand-var='$VARTEXMF' | sed 's@^!*@@'`} +for x in web2c \ + dvips/config \ + pdftex/config \ + xdvi \ + tex/generic/config \ + tex/context/config \ + etex/plain/config +do + y=${TEXMFMAIN}/${x} + z=${VARTEXMF}/${x} + test -L ${y} && continue + test -d ${y%/*}/ || continue + test -d ${z}/ || continue + if test -d ${y}/ ; then + for y in ${TEXMFMAIN}/${x}/* ; do + z=${VARTEXMF}/${x}/${y##*/} + test -f $y || continue + test -f $z || cp -a $y $z + done + rm -rf ${TEXMFMAIN}/${x}/ + fi + ln -sf ${VARTEXMF}/${x} ${TEXMFMAIN}/${x} +done +if test -d /etc/texmf/dvips/ -a -d ${VARTEXMF}/dvips/config/ ; then + for x in /etc/texmf/dvips/* ; do + y=${VARTEXMF}/dvips/config/${x##*/} + test -f $x || continue + test -f $y || cp -a $x $y + done + rm -rf /etc/texmf/dvips/ + ln -sf ${VARTEXMF}/dvips/config /etc/texmf/dvips +fi +unset x y z + +# +# Straightforward ... here we go +# +OLDIFS=$IFS; IFS=':;' +set -- $(kpsewhich --show-path=ls-R 2> /dev/null) +IFS=$OLDIFS +set -- $(find $@ -prune -type d -and -not -fstype nfs 2> /dev/null) +for f in /var/adm/SuSEconfig/run?texhash; do + if test -e $f ; then + for lsr ; do + test $f -nt $lsr/ls-R && mktexlsr $lsr + done + fi +done + +# +# If texmf.cnf has changed it may contains changed memory sizes +# of various programs. +# +type -p readlink &> /dev/null || exit 0 +type -p texconfig &> /dev/null || exit 0 + +: ${WEB2C=` kpsewhich --expand-var='$WEB2C' | sed 's@^!*@@'`} +WEB2C=${WEB2C%%:*} +: ${texmfcnf=`kpsewhich texmf.cnf`} +test -L $texmfcnf && texmfcnf="`readlink $texmfcnf`" + +init=false +for f in ${WEB2C}/*.fmt ${WEB2C}/*.efmt ${WEB2C}/*.mem ${WEB2C}/*.base ; do + test -e $f || continue + test -L $f && continue + test $texmfcnf -nt $f && init=true +done +test $init = true && texconfig init &> /dev/null + +# +# These are required. +# +type -p grep &> /dev/null || exit 0 +type -p md5sum &> /dev/null || exit 0 + +# +# We need a check for a already modified tetex configuration: +# therefore we use md5 check sums. +# +if test -z "$MD5DIR" ; then + LIBDIR=/var/adm/SuSEconfig + MD5DIR=$LIBDIR/md5 +fi +mkdir -p $MD5DIR +test $? -gt 0 && exit 0 + +# +# The main system printer. +# +if test -r /etc/printcap -a -d /var/lib/apsfilter/ ; then + lp=$(grep -E '^lp\|' /etc/printcap) +fi +test -n "$lp" || exit 0 # No (configured) apsfilter system: nothing to do + +# +# The main configuration files of teTeX. +# +cnf_mfont=/etc/texmf/modes.mf + cnf_xdvi=/etc/texmf/XDvi +cnf_dvips=/etc/texmf/config.ps + +md5_mfont=${MD5DIR}${cnf_mfont} + md5_xdvi=${MD5DIR}${cnf_xdvi} +md5_dvips=${MD5DIR}${cnf_dvips} + +# +# Is this a full teTeX system? +# +test -e ${cnf_mfont} || exit 0 # Default MetaFont mode +test -e ${cnf_xdvi} || exit 0 # Default xdvi resolution +test -e ${cnf_dvips} || exit 0 # Default printer mode + +test /etc/printcap -nt ${cnf_mfont} && prtcap_nt_mfont="yes" +test /etc/printcap -nt ${cnf_xdvi} && prtcap_nt_xdvi="yes" +test /etc/printcap -nt ${cnf_dvips} && prtcap_nt_dvips="yes" + +# +# Create m5 backup system +# +test -d ${MD5DIR}/etc/texmf/dvips || mkdir -p ${MD5DIR}/etc/texmf/dvips || exit 1 + +# +# Current md5 sums +# +set -- `cat ${cnf_mfont} | md5sum` ; md5modes="$1" +set -- `cat ${cnf_xdvi} | md5sum` ; md5xdvi="$1" +set -- `cat ${cnf_dvips} | md5sum` ; md5dvips="$1" + +# +# Previous md5 sums +# +omd5modes=0 + omd5xdvi=0 +omd5dvips=0 +if test -r ${md5_mfont} ; then + test ${md5_mfont} -nt ${cnf_mfont} && md5_nt_mfont="yes" + set -- `cat ${md5_mfont}` ; omd5modes="$1" +fi +if test -r ${md5_xdvi} ; then + test ${md5_xdvi} -nt ${cnf_xdvi} && md5_nt_xdvi="yes" + set -- `cat ${md5_xdvi}` ; omd5xdvi="$1" +fi +if test -r ${md5_dvips} ; then + test ${md5_dvips} -nt ${cnf_dvips} && md5_nt_dvips="yes" + set -- `cat ${md5_dvips}` ; omd5dvips="$1" +fi + +# +# Parse the configured system main printer +# Ghostscript/PS <-> Metafont mode and paper size +# (UNTESTED, Sorry I've *not* enough printers around) +# +. /etc/rc.config +case "$lp" in + *-letter-*) XDVISIZE=us ; DVIPSSIZE=letter ;; + *-legal-*) XDVISIZE=legal ; DVIPSSIZE=legal ;; + *-ledger-*) XDVISIZE=a3r ; DVIPSSIZE=ledger ;; + *-tabloid-*) XDVISIZE=a3 ; DVIPSSIZE=tabloid ;; + *-a3-*) XDVISIZE=a3 ; DVIPSSIZE=a3 ;; + *-a4-*) XDVISIZE=a4 ; DVIPSSIZE=a4 ;; + *) XDVISIZE=us ; DVIPSSIZE=letter + test "$LANGUAGE" != "english" && \ + { XDVISIZE=a4 ; DVIPSSIZE=a4 ; } + ;; +esac + +case "$lp" in + *\|PS*) PRINTER=ljfour ;; + *\|bj10e*) PRINTER=bjtenex ;; + *\|bj200*) PRINTER=bjtzzex ;; + *\|bjc600*) PRINTER=canonbjc ;; + *\|bjc800*) PRINTER=canonbjc ;; + *\|bjc610a*) PRINTER=canonbjc ;; +# *\|bjc610b*) PRINTER=canonbjc ;; + *\|cdeskjet*600) PRINTER=ljfour ;; + *\|deskjet*600) PRINTER=ljfour ;; + *\|cdeskjet*) PRINTER=deskjet ;; + *\|deskjet*) PRINTER=deskjet ;; + *\|cdj6*) PRINTER=ljfour ;; + *\|cdj8*) PRINTER=ljfour ;; + *\|hpdj*) PRINTER=ljfour ;; + *\|cdj*600) PRINTER=ljfour ;; + *\|djet*600) PRINTER=ljfour ;; + *\|cdj*) PRINTER=deskjet ;; + *\|djet*) PRINTER=deskjet ;; + *\|laserjet*) PRINTER=cx ;; + *\|ljetplus*) PRINTER=cx ;; + *\|ljet2*) PRINTER=cx ;; + *\|ljet3*) PRINTER=jetiiisi ;; + *\|ljet4l*) PRINTER=cx ;; + *\|ljet4*) PRINTER=ljfour ;; + *\|lj4*) PRINTER=ljfour ;; + *\|lj5*) PRINTER=ljfive ;; +# *\|lj5*) PRINTER=ljfivemp ;; + *\|stcolor*720) PRINTER=esphi ;; + *\|stcolor*) PRINTER=epstylus ;; + *\|st800*720) PRINTER=esphi ;; + *\|st800*) PRINTER=epstylus ;; + *\|stc800*720) PRINTER=esphi ;; + *\|stc800*) PRINTER=epstylus ;; + *\|stc600*) PRINTER=epscszz ;; + *\|stc_h*) PRINTER=esphi ;; + *\|stc*) PRINTER=epstypro ;; + *) PRINTER=ljfour ;; +esac + +# +# Run texconfig if no one has update the teTeX system +# or parts of it. +# + +if test $omd5modes = 0 -o \ + \( $md5modes = $omd5modes -a "$prtcap_nt_mfont" = "yes" -a "$md5_nt_mfont" = "yes" \) +then + env -i MKTEXLSR=true texconfig mode $PRINTER < /dev/null + sleep 1 + set -- `cat ${cnf_mfont} | md5sum` + echo $1 > ${MD5DIR}${cnf_mfont} +fi +if test $omd5xdvi = 0 -o \ + \( $md5xdvi = $omd5xdvi -a "$prtcap_nt_xdvi" = "yes" -a "$md5_nt_xdvi" = "yes" \) +then + env -i MKTEXLSR=true texconfig xdvi $XDVISIZE < /dev/null + sleep 1 + set -- `cat ${cnf_xdvi} | md5sum` + echo $1 > ${MD5DIR}${cnf_xdvi} +fi +if test $omd5dvips = 0 -o \ + \( $md5dvips = $omd5dvips -a "$prtcap_nt_dvips" = "yes" -a "$md5_nt_dvips" = "yes" \) +then + env -i MKTEXLSR=true texconfig dvips mode $PRINTER < /dev/null + env -i MKTEXLSR=true texconfig dvips paper $DVIPSSIZE < /dev/null + sleep 1 + set -- `cat ${cnf_dvips} | md5sum` + echo $1 > ${MD5DIR}${cnf_dvips} +fi + +## +exit 0 --- nfs/README +++ nfs/README Thu Mar 2 14:31:12 2000 @@ -0,0 +1,35 @@ + + TeTeX over NFS for Clients + ========================== + + +Four steps are required: + +* First (of all of the clients): Do not install any teTeX packages + but at least the package te_nfs. + +* Second (on the server): Install the teTeX packages your need + and add the following 4 lines to /etc/export + + /etc/texmf *.your.domain.here(ro,root_squash) + /usr/share/texmf *.your.domain.here(ro,root_squash) + /var/lib/texmf *.your.domain.here(ro,root_squash) + /var/cache/fonts *.your.domain.here(rw,root_squash) + + and call + + killall -HUP rpc.mountd rpc.nfsd + +* Third (of all of the clients): Run the following command: + + tetex-import your.tetex.server.here + + with `your.tetex.server.here' the IP address or full qualified + domain name of your teTeX server. + +* Fourth (of all of the clients): Add the four lines which the + script tetex-import has (hopefully) written to standard out + to the file + + /etc/fstab + --- nfs/tetex-import +++ nfs/tetex-import Thu Mar 2 14:31:12 2000 @@ -0,0 +1,346 @@ +#!/bin/sh +# +# This script imports the teTeX system from the same +# server from which /usr/share/texmf is mounted (nfs). +# This script should work with standard bourne shell. +# +# Copyright (c) 1998,2000 SuSE GmbH Nuernberg, Germany. +# please send bugfixes or comments to feedback@suse.de. +# +# Author: Werner Fink +# + +test `whoami` = root || { echo "Permission denied" 1>&2 ; exit 1; } + +# +# The teTeX system, main date, variable data, fonts cache, +# and configuration data. +# +texroot=/usr/share/texmf +texvars=/var/lib/texmf +texfont=/var/cache/fonts +texconf=/etc/texmf + +# +# Mount options and Internal Field Separator(s) +# +mntopt="exec,nosuid,nodev,hard,bg,intr,rsize=8192,wsize=8192" +action="import" # otherwise "remove" +OLDIFS="$IFS" +NL=' +' + +# +# Remember the options given to us +# +we="${0##*/}" +tab="`echo ${we}:| tr '[:print:]' ' '`" +argv="$@" +args=$# + +# +# Place holder for the nfs server(s) of the teTeX system +# +server="" +rootserv="" +varsserv="" +fontserv="" +confserv="" +etcfstab="" +num=0 + +# +# The current system: architecture, operating system, libc +# + arch="`uname -m| sed 's%i.86%i386%g'`" +system="`uname -s| tr '[:upper:]' '[:lower:]'`" +set -- /lib/libc.so.[0-9] +eval libc=\${${#}##*.} +if test $libc -ge 6 ; then + libc=glibc +else + libc=libc5 +fi +if test $system = linux ; then + binary=$arch-$system-$libc +else + binary=$arch-$system +fi + +# +# Test the teTeX system: Something is already mounted? +# +test_system () +{ + IFS="$NL" + set -- `df -P -t nfs` + IFS="$OLDIFS" + shift + + for line ; do + case "$line" in + *:${texroot}*) rootserv=${line%%:*} ;; + *:${texvars}*) varsserv=${line%%:*} ;; + *:${texfont}*) fontserv=${line%%:*} ;; + *:${texconf}*) confserv=${line%%:*} ;; + *) ;; + esac + done +} + +# +# At the first time we may need a mount point, +# just do it. +# +mount_dir () +{ + origin=$1 + mpoint=$2 + rwro=$3 + + test -d $mpoint || mkdir -p $mpoint + set -- `mount -v -t nfs -o ${rwro},$mntopt $origin $mpoint` + set -- $1 $3 $5 ${6#"("} + if test -n "$1" ; then + etcfstab="${etcfstab}`echo $1 $2 $3 ${4%')'} 0 0`\n" + num=`expr $num + 1` + fi +} + +# +# Try to mount the system from the server +# +mount_system () +{ + test_system + + IFS="$NL" + set -- `showmount -e $server` + IFS="$OLDIFS" + + for line ; do + fs=${server}:${line%%\ *} + case "$line" in + *${texroot}\ *) test -z "$rootserv" && mount_dir ${fs} ${texroot} ro ;; + *${texvars}\ *) test -z "$varsserv" && mount_dir ${fs} ${texvars} ro ;; + *${texfont}\ *) test -z "$fontserv" && mount_dir ${fs} ${texfont} rw ;; + *${texconf}\ *) test -z "$confserv" && mount_dir ${fs} ${texconf} ro ;; + *) ;; + esac + done + + test_system + test -z "$rootserv" && echo "${we}: Warning, can not mount ${texroot}" 1>&2 + test -z "$varsserv" && echo "${we}: Warning, can not mount ${texvars}" 1>&2 + test -z "$fontserv" && echo "${we}: Warning, can not mount ${texfont}" 1>&2 + test -z "$confserv" && echo "${we}: Warning, can not mount ${texconf}" 1>&2 +} + +# +# Umount the teTeX system +# +umount_system () +{ + test_system + test -n "$rootserv" && umount ${texroot} + test -n "$varsserv" && umount ${texvars} + test -n "$fontserv" && umount ${texfont} + test -n "$confserv" && umount ${texconf} +} + +# +# Do not overlink/remove existing files or foreign links. +# +test_file () +{ + tfl=$1 + tfp=$2 + if test -f $tfl -a ! -L $tfl ; then + echo "${we}: File $tfl already exists, skipping" 1>&2 + echo "${tab} $tfp" 1>&2 + return 1 + fi + if test -L $tfl ; then + set -- `ls -iL $tfl $tfp` + if test $1 -ne $3 ; then + echo -e "${we}:\033[1m WARNING symbolic link $tfl does not have the" 1>&2 + echo -e "${tab} source $tfp\033[m" 1>&2 + return 1 + fi + fi + return 0 +} + +# +# Integrate the binaries, manual pages, and info descriptions +# into the normal file system hierarchy. +# +linkin () +{ + relbin=`relpath ${texroot}/teTeX/bin/$binary /usr/bin` + for prg in ${texroot}/teTeX/bin/$binary/* ; do + lprg=/usr/bin/${prg##*/} + test -x $prg || continue + test_file $lprg $prg || continue + rm -f $lprg + ln -sf $relbin/${prg##*/} $lprg + done + relman=`relpath ${texroot}/teTeX/man/man1 /usr/share/man/man1` + for man in ${texroot}/teTeX/man/man1/*.1* ; do + lman=/usr/share/man/man1/${man##*/} + test -f $man || continue + test_file $lman $man || continue + rm -f $lman + ln -sf $relman/${man##*/} $lman + done + relinf=`relpath ${texroot}/teTeX/info /usr/share/info` + for inf in ${texroot}/teTeX/info/*info* ; do + linf=/usr/share/info/${inf##*/} + test -f $inf || continue + test_file $linf $inf || continue + rm -f $linf + ln -sf $relinf/${inf##*/} $linf + done +} + +# +# Deintegrate the binaries, manual pages, and info descriptions. +# +linkout () +{ + for prg in ${texroot}/teTeX/bin/$binary/* ; do + lprg=/usr/bin/${prg##*/} + test -x $prg || continue + test_file $lprg $prg || continue + rm -f $lprg + done + for man in ${texroot}/teTeX/man/man1/*.1* ; do + lman=/usr/share/man/man1/${man##*/} + test -f $man || continue + test_file $lman $man || continue + rm -f $lman + done + for inf in ${texroot}/teTeX/info/*info* ; do + linf=/usr/share/info/${inf##*/} + test -f $inf || continue + test_file $linf $inf || continue + rm -f $linf + done +} + +# +# This calculates the relative path of the source path +# which depends on the destination path. The function +# takes two arguments: +# +# the full directory path to the source file/dir +# the full directory path to the destination file/dir +# +# both without the file or directory name its self. +# +# Author: Werner Fink +# +relpath () +{ + # called by linkin: top down + IFS='/' + orgwords="`echo ${1}`" + locwords="`echo ${2}`" + IFS="$OLDIFS" + + newpath="" + symlink="$2" + relp=0 + deep=0 + set -- `echo $locwords` + for p in $orgwords ; do + deep=`expr $deep + 1` + eval l=\${$deep} + if test "$l" = "$p" -a $relp -eq 0 ; then + : nothing + else + relp=`expr $relp + 1` + newpath="${newpath}/$p" + if test -n "$l" ; then + if test $relp -eq 1 ; then + newpath="..${newpath}" + else + newpath="../${newpath}" + fi + fi + fi + done + if test $deep -lt $# ; then + shift $deep + while test $# -gt 0 ; do + newpath="../${newpath}" + shift + done + fi + echo $newpath +} + +# +# Usage +# +usage () +{ + echo "${we}: Usage:" 1>&2 + echo "${tab} ${we} [-i|-d] -[o ]" 1>&2 +} + +# +# Option handling goes here +# +set -- $argv +while test -n "$1" ; do + case "$1" in + -o) test -z "$2" && { usage ; exit 1; } + mntopt="$2" ;; + -m) test -z "$2" && { usage ; exit 1; } + binary="$2" ;; + -i) action="import" ;; + -d) action="remove" ;; + -h) usage ; exit 0 ;; + -*) usage ; exit 1 ;; + *) server="$1" ;; + esac + shift +done + +test -z "$server" && { usage ; exit 1; } + +if test "$action" = "import" ; then + mount_system + linkin + if test -n "${etcfstab}" ; then + echo -e "\033[1m${we}: Please add the following $num lines to /etc/fstab\033[m" 1>&2 + echo + echo -e "${etcfstab}" + sleep 2 + fi +elif test "$action" = "remove" ; then + linkout + umount_system + while read line ; do + set -- $line + case "$1 $2 $3 $4 $5 $6" in + *:${texroot}\ *) etcfstab="${etcfstab}`echo $line`\n" ;; + *:${texvars}\ *) etcfstab="${etcfstab}`echo $line`\n" ;; + *:${texfont}\ *) etcfstab="${etcfstab}`echo $line`\n" ;; + *:${texconf}\ *) etcfstab="${etcfstab}`echo $line`\n" ;; + esac + done < /etc/fstab + if test -n "${etcfstab}" ; then + echo -e "\033[1m${we}: Please remove the following lines from /etc/fstab\033[m" 1>&2 + echo + echo -e "${etcfstab}" + sleep 2 + fi +else + echo "${we}: Ohmm ... something strange happens" 1>&2 + exit 1 +fi + +## +exit 0 --- nfs/tetex-import.8 +++ nfs/tetex-import.8 Thu Mar 2 14:31:12 2000 @@ -0,0 +1,68 @@ +.\" +.\" +.TH tetex-import 8 "October22, 1998" "Version 0.1" "Utility for teTeX" +.\" +.UC 8 +.SH NAME +.\" +tetex-import \- Utility for teTeX integration over NFS +.SH SYNOPSIS +.\" +.B tetex-import teTeX_NFS_server +.RB [\| \-i \||\| \-d ] +.RB [\| \-o " " mount_options ] +.RB [\| \-m " " machine_binary_type ] +.\" Die Beschreibung +.SH DESCRIPTION +The script +.B tetex-import +helps at the integration of a remote teTeX +system into the local system over NFS. +.\" +.SS General Options +.TP +.IR teTeX_NFS_server +This is the name or IP address of the NFS server providing +the teTeX system. +.TP +.IR \-i +Integrate the teTeX system (default). After mounting +and setting all required symbolic links upto four +lines are written to standard out. These lines should +be added to +.BR /etc/fstab . +.TP +.IR \-d +Deintegration of the teTeX system. After removing +all required symbolic links and unmounting the teTeX system +a few lines are written to standard out. These lines +should be removed from +.BR /etc/fstab . +.TP +.IR \-o\ mount_options +Use these mount options instead of the default +.IR exec,nosuid,nodev,hard,bg,intr,rsize=8192,wsize=8192 . +.TP +.IR \-m\ machine_binary_type +Use this machine binary type. Default is +.IR arch-system-libc . +Some example: i386-linux-libc5, i386-linux-glibc. +.IP +.\" +.SH EXAMPLE +.PP +.B tetex-import tex.mydomain +.\" +.SH FILES +.BR /usr/share/texmf/ , +.br +.BR /var/lib/texmf/ , +.br +.BR /var/cache/fonts/ , +.br +.BR /etc/texmf/ +.\" +.SH SEE ALSO +.BR fstab (8), +.BR mount (8), +.BR nfs (8). --- profile.d/tetex.csh +++ profile.d/tetex.csh Thu Mar 2 14:31:12 2000 @@ -0,0 +1,25 @@ +# +# /etc/profile.d/tetex.csh +# + +# +# Expand TEXINPUTS +# +if ( -d ${HOME}/TeX/ ) then + # + # Hmmm ... texmf/ should be used instead of TeX/ + # + if ( ${?TEXINPUTS} ) then + setenv TEXINPUTS ${TEXINPUTS}:${HOME}/TeX//: + else + setenv TEXINPUTS ${HOME}/TeX//: + endif +endif +if ( -d /usr/doc/.TeX/ ) then + if ( ${?TEXINPUTS} ) then + setenv TEXINPUTS ${TEXINPUTS}:/usr/doc/.TeX: + else + setenv TEXINPUTS /usr/doc/.TeX: + endif +endif + --- profile.d/tetex.sh +++ profile.d/tetex.sh Thu Mar 2 14:31:12 2000 @@ -0,0 +1,25 @@ +# +# /etc/profile.d/tetex.sh +# + +# +# Expand TEXINPUTS +# +if test -d $HOME/TeX/ ; then + # + # Hmmm ... texmf/ should be used instead of TeX/ + # + if test -n "$TEXINPUTS" ; then + TEXINPUTS="$TEXINPUTS:$HOME/TeX//:" + else + TEXINPUTS="$HOME/TeX//:" + fi +fi +if test -d /usr/doc/.TeX/ ; then + if test -n "$TEXINPUTS" ; then + TEXINPUTS="$TEXINPUTS:/usr/doc/.TeX:" + else + TEXINPUTS="/usr/doc/.TeX:" + fi +fi + --- texk/dviljk/dvi2xx.c +++ texk/dviljk/dvi2xx.c Thu Mar 2 14:31:12 2000 @@ -175,7 +175,18 @@ setbuf(ERR_STREAM, NULL); (void) strcpy(G_progname, argv[0]); #ifdef KPATHSEA - kpse_set_progname(argv[0]); +#if defined(LJ) + kpse_set_program_name (argv[0], "dvilj"); +#endif +#if defined(LJ2P) + kpse_set_program_name (argv[0], "dvilj2p"); +#endif +#if defined(LJ4) && !defined(LJ4L) + kpse_set_program_name (argv[0], "dvilj4"); +#endif +#if defined(LJ4) && defined(LJ4L) + kpse_set_program_name (argv[0], "dvilj4l"); +#endif kpse_set_program_enabled (kpse_pk_format, MAKE_TEX_PK_BY_DEFAULT, kpse_src_compile); #endif DecodeArgs(argc, argv); --- texk/kpathsea/Makefile.in +++ texk/kpathsea/Makefile.in Thu Mar 2 14:31:12 2000 @@ -128,6 +128,7 @@ | sed -e 's%\$$TEXMFMAIN%$(texmf)%g' \ -e 's%\$$TEXMF%$(texmf)%g' \ -e 's%\$$VARTEXFONTS%$(vartexfonts)%g' \ + -e 's%\$$VARTEXMF%$(vartexmf)%g' \ -e 's%\$$web2cdir%$(web2cdir)%g' \ -e 's%\$$prefix%$(prefix)%g' \ | sed -e 's%;%:%g' \ --- texk/kpathsea/c-memstr.h +++ texk/kpathsea/c-memstr.h Thu Mar 2 14:31:12 2000 @@ -35,6 +35,9 @@ /* Just to be complete, we make both the system V/ANSI and the BSD versions of the string functions available. */ + +#ifndef __GNUC__ + /* FIXME: we'll move to providing the ANSI stuff, if necessary defined in terms of the BSD functions. */ #if !defined(HAVE_INDEX) && !defined(index) @@ -78,6 +81,8 @@ #ifndef strstr extern char *strstr (); #endif + +#endif /* not __GNUC__ */ #endif #endif /* not KPATHSEA_C_MEMSTR_H */ --- texk/kpathsea/db.c +++ texk/kpathsea/db.c Thu Mar 2 14:31:12 2000 @@ -80,12 +80,21 @@ unsigned len = strlen (db_filename) - sizeof (DB_NAME) + 1; /* Keep the /. */ string top_dir = xmalloc (len + 1); string cur_dir = NULL; /* First thing in ls-R might be a filename. */ - FILE *db_file = fopen (db_filename, FOPEN_R_MODE); + struct stat statdb; + FILE *db_file; strncpy (top_dir, db_filename, len); top_dir[len] = 0; - - if (db_file) { + + if ((getenv("MKTEXLSR") == NULL) && + (stat(db_filename, &statdb) < 0 || statdb.st_size == 0)) { + char buf[PATH_MAX+1]; + snprintf(buf, PATH_MAX, "mktexlsr %s", top_dir); + xputenv("MKTEXLSR", "true"); /* fork loop detection */ + system (buf); + } + + if ((db_file = fopen (db_filename, FOPEN_R_MODE))) { while ((line = read_line (db_file)) != NULL) { len = strlen (line); --- texk/kpathsea/mktex.opt +++ texk/kpathsea/mktex.opt Thu Mar 2 14:31:12 2000 @@ -62,6 +62,11 @@ echo "$0: VARTEXFONTS is not defined. Defaulting to \`$KPSE_DOT'." >&2 MT_VARTEXFONTS='$KPSE_DOT' fi +: ${MT_VARTEXMF=`kpsewhich --expand-var='$VARTEXMF' | sed 's%^!!%%'`} +if test -z "$MT_VARTEXMF"; then + echo "$0: VARTEXMF is not defined. Defaulting to \`$KPSE_DOT'." >&2 + MT_VARTEXMF='$KPSE_DOT' +fi # The supporting scripts: : ${MT_MKTEXNAM=`kpsewhich --format='web2c files' mktexnam`} --- texk/kpathsea/mktexlsr +++ texk/kpathsea/mktexlsr Thu Mar 2 14:31:12 2000 @@ -15,6 +15,10 @@ version='$Id: teTeX-1.0.dif,v 1.3 2001/02/22 12:02:28 achim Exp $' progname=`echo $0 | sed 's%.*/%%'` + +MKTEXLSR=true; export MKTEXLSR +set -o noclobber + usage="Usage: $progname [DIRS ...] Rebuild all necessary ls-R filename databases completely. If one or @@ -62,6 +66,7 @@ test $# = 0 && { OIFS=$IFS; IFS=$SEP; set x `kpsewhich --show-path=ls-R 2>/dev/null`; shift; IFS=$OIFS } +cache="`kpsewhich --expand-var='$VARTEXFONTS'`" for TEXMFLS_R in "$@"; do # Prepend cwd if the directory was relative. case "$TEXMFLS_R" in @@ -80,12 +85,21 @@ db_dir=`echo "$db_file" | sed 's%/[^/][^/]*$%%'` # can't rely on dirname test -d "$db_dir" || continue - test -w "$db_dir" || { echo "$progname: $db_dir: directory not writable. Skipping..." >&2; continue; } + if test -w "$db_dir" ; then + # default + db_dir_tmp="$db_dir/.lsR$$.$RANDOM" + else + # Escape to writable cache directory + test -w "$cache" || { echo "$progname: $db_dir: directory not writable. Skipping..." >&2; continue; } + db_dir_tmp="$cache/.lsR$$.$RANDOM" + fi if test ! -f "$db_file"; then cp /dev/null "$db_file" # Use same permissions as parent directory, minus x,s, or t bits. chmod `kpsestat -xst "$db_dir"` "$db_file" + elif test -w $db_file -a ! -s $db_file ; then + : Is writable but empty elif test "x`sed 1q \"$db_file\"`" != "x$ls_R_magic" \ && test "x`sed 1q \"$db_file\"`" != "x$old_ls_R_magic"; then echo "$progname: $db_file lacks magic string. Skipping..." >&2 @@ -95,7 +109,6 @@ # Skip if we cannot write the file: access -w "$db_file" || { echo "$progname: $db_file: no write permission. Skipping..." >&2; continue; } - db_dir_tmp="$db_dir/lsR$$.tmp" mkdir "$db_dir_tmp" \ || { echo "$progname: could not create directory '$db_dir_tmp'. Skipping..." >&2; continue; } db_file_tmp="$db_dir_tmp/lsR$$.tmp" @@ -111,13 +124,23 @@ # names results in nothing but grief. echo "./:" >>"$db_file_tmp" (cd "$TEXMFLS_R" && \ls -LRa 2>/dev/null) | - sed 's%^[^.].*:$%./&%; /^\.$/d; /^\.\.$/d; /^lsR[0-9]*\.tmp$/d' >>"$db_file_tmp" + sed '/^\(\.\|\.\/\.\)\?lsR[0-9]\+\.\(tmp\|[0-9]\+\):\?/d + /^\.:\?$/d + /^\.\.$/d + s%^[^.].*:$%./&%' >> "$db_file_tmp" # To be really safe, a loop. until PERMS=`kpsestat = "$db_file"`; do sleep 1; done chmod $PERMS "$db_file_tmp" - rm -f "$db_file" - mv "$db_file_tmp" "$db_file" + if rm -f "$db_file" > /dev/null 2>&1 ; then + # Sticky bit is not set + mv "$db_file_tmp" "$db_file" + else + # Sticky bit is set + set +o noclobber + cat "$db_file_tmp" > "$db_file" + set -o noclobber + fi rm -rf "$db_dir_tmp" done tty -s && echo "$progname: Done." --- texk/kpathsea/texmf.in +++ texk/kpathsea/texmf.in Thu Mar 2 14:31:12 2000 @@ -58,14 +58,17 @@ TEXMFMAIN = @texmf@ % A place for local additions to a "standard" texmf tree. For example: -% TEXMFLOCAL = @texmf@.local +TEXMFLOCAL = /usr/local/share/texmf + +% Old teTeX path of SuSE. +OLDTEXMF = /usr/lib/teTeX/texmf % If defined, teTeX's texconfig stores modifications here (instead of the % TEXMFMAIN tree). -% VARTEXMF = @texmf@-var +VARTEXMF = @vartexmf@ % User texmf trees can be catered for like this... -% HOMETEXMF = $HOME/texmf +HOMETEXMF = $HOME/texmf % Now, list all the texmf trees. If you have multiple trees you can % use shell brace notation, like this: @@ -73,10 +76,11 @@ % The braces are necessary. If you set VARTEXMF, you also have to % - list $VARTEXMF in the TEXMF definition; % - make sure that $VARTEXMF precedes $TEXMFMAIN in the TEXMF definition. -TEXMF = !!$TEXMFMAIN +% Note: @texmf@/local is a sub directory of TEXMFMAIN +TEXMF = {$HOMETEXMF,!!${TEXMFLOCAL},!!$VARTEXMF,!!$TEXMFMAIN,!!$OLDTEXMF} % The system trees. These are the trees that are shared by all the users. -SYSTEXMF = $TEXMF +SYSTEXMF = ${TEXMFLOCAL};$VARTEXMF;$TEXMFMAIN;$OLDTEXMF % Where generated fonts may be written. This tree is used when the sources % were found in a system tree and either that tree wasn't writable, or the @@ -88,7 +92,7 @@ % % Remove $VARTEXFONTS from TEXMFDBS if the VARTEXFONTS directory is below % one of the TEXMF directories (avoids overlapping ls-R files). -TEXMFDBS = $TEXMF;$VARTEXFONTS +TEXMFDBS = $HOMETEXMF;${TEXMFLOCAL};$VARTEXMF;$TEXMFMAIN;$OLDTEXMF;$VARTEXFONTS % It may be convenient to define TEXMF like this: % TEXMF = {$HOMETEXMF,!!$TEXMFLOCAL,!!$TEXMFMAIN,$HOME} @@ -116,7 +120,7 @@ % WEB2C is for Web2C specific files. The current directory may not be % a good place to look for them. -WEB2C = $TEXMF/web2c +WEB2C = $VARTEXMF/web2c;$TEXMF/web2c % TEXINPUTS is for TeX input files -- i.e., anything to be found by \input % or \openin, including .sty, .eps, etc. @@ -193,12 +197,12 @@ % and string pools (.pool) for ini{tex,mf,mp}. It is silly that we have six % paths and directories here (they all resolve to a single place by default), % but historically ... -TEXFORMATS = .;$TEXMF/web2c -MFBASES = .;$TEXMF/web2c -MPMEMS = .;$TEXMF/web2c -TEXPOOL = .;$TEXMF/web2c -MFPOOL = .;$TEXMF/web2c -MPPOOL = .;$TEXMF/web2c +TEXFORMATS = .;$WEB2C +MFBASES = .;$WEB2C +MPMEMS = .;$WEB2C +TEXPOOL = .;$WEB2C +MFPOOL = .;$WEB2C +MPPOOL = .;$WEB2C % Device-independent font metric files. VFFONTS = .;$TEXMF/fonts/vf// @@ -259,12 +263,15 @@ % For xdvi to find mime.types and .mailcap, if they do not exist in % $HOME. These are single directories, not paths. % (But the default mime.types, at least, may well suffice.) -MIMELIBDIR = @prefix@/etc -MAILCAPLIBDIR = @prefix@/etc +MIMELIBDIR = /etc +MAILCAPLIBDIR = /etc % TeX documentation and source files, for use with kpsewhich. TEXDOCS = .;$TEXMF/doc// TEXSOURCES = .;$TEXMF/source// +TEXDOCSSUFFIX = .dvi;.ps;.html;.txt +TEXDOCSCOMPRESS = ;.gz;.bz2;.zip;.Z +TEXDOCEXT = {$TEXDOCSSUFFIX}{$TEXDOCSCOMPRESS} % Omega-related fonts and other files. The odd construction for OFMFONTS % makes it behave in the face of a definition of TFMFONTS. Unfortunately @@ -295,8 +302,7 @@ % % For security reasons, it is better not to have . part of the path. % -TEXMFCNF = {$SELFAUTOLOC,$SELFAUTODIR,$SELFAUTOPARENT}{,{/share,}/texmf{.local,}/web2c};$TETEXDIR;$TEXMF/web2c;@web2c@ - +TEXMFCNF = /etc/texmf:$VARTEXMF/web2c:@web2c@:/.$TETEXDIR % Part 2: Non-path options. @@ -374,7 +380,8 @@ % For the vast majority of documents, 60000 or less will do. % main_memory.context = 1100000 -main_memory = 263000 % words of inimemory available; also applies to inimf&mp +main_memory.jadetex = 499999 +main_memory = 383999 % words of inimemory available; also applies to inimf&mp extra_mem_top = 0 % extra high memory for chars, tokens, etc. extra_mem_bot = 0 % extra low memory for boxes, glue, breakpoints, etc. @@ -387,19 +394,21 @@ % Extra space for the hash table of control sequences (which allows 10K % names as distributed). hash_extra.context = 25000 -hash_extra = 0 +hash_extra.jadetex = 25000 +hash_extra = 15000 % Max number of characters in all strings, including all error messages, % help texts, font names, control sequences. These values apply to TeX and MP. pool_size.context = 750000 -pool_size = 125000 +pool_size.jadetex = 500000 +pool_size = 250000 % Minimum pool space after TeX/MP's own strings; must be at least % 25000 less than pool_size, but doesn't need to be nearly that large. string_vacancies.context = 45000 string_vacancies = 25000 % Maximum number of strings. max_strings.context = 55000 -max_strings = 15000 +max_strings = 30000 % min pool space left after loading .fmt pool_free.context = 47500 pool_free = 5000 @@ -430,6 +439,7 @@ max_in_open = 15 % simultaneous input files and error insertions param_size.context = 1500 param_size = 500 % simultaneous macro parameters +save_size.jadetex = 15000 save_size.context = 5000 save_size = 4000 % for saving values outside current group stack_size.context = 1500 --- texk/make/makevars.mk +++ texk/make/makevars.mk Thu Mar 2 14:31:12 2000 @@ -5,8 +5,9 @@ bindir=$(bindir) scriptdir=$(scriptdir) libdir=$(libdir) \ datadir=$(datadir) infodir=$(infodir) includedir=$(includedir) \ manext=$(manext) mandir=$(mandir) \ - texmf=$(texmf) web2cdir=$(web2cdir) vartexfonts=$(vartexfonts)\ - texinputdir=$(texinputdir) mfinputdir=$(mfinputdir) mpinputdir=$(mpinputdir)\ + texmf=$(texmf) web2cdir=$(web2cdir) \ + vartexmf=$(vartexmf) vartexfonts=$(vartexfonts) \ + texinputdir=$(texinputdir) mfinputdir=$(mfinputdir) mpinputdir=$(mpinputdir) \ fontdir=$(fontdir) fmtdir=$(fmtdir) basedir=$(basedir) memdir=$(memdir) \ texpooldir=$(texpooldir) mfpooldir=$(mfpooldir) mppooldir=$(mppooldir) \ dvips_plain_macrodir=$(dvips_plain_macrodir) \ --- texk/make/paths.mk +++ texk/make/paths.mk Thu Mar 2 14:31:12 2000 @@ -45,8 +45,13 @@ # The root of the main tree. texmf = @texmfmain@ -# The directory used by varfonts. -vartexfonts = /var/tmp/texfonts +# FHS-2.0 requires /var/cache/fonts, we need also a rw dir /var/lib/texmf +# for formats and other variable data. It should be possible to +# have a ro /usr/share. +## The directory used by varfonts. +## vartexfonts = /var/tmp/texfonts +vartexmf = /var/lib/texmf +vartexfonts = /var/cache/fonts # Regular input files. texinputdir = $(texmf)/tex --- texk/oxdvik/oxdvi-sh +++ texk/oxdvik/oxdvi-sh Thu Mar 2 14:31:12 2000 @@ -45,4 +45,19 @@ XFILESEARCHPATH="$xdviapppath:${XFILESEARCHPATH-%D}"; export XFILESEARCHPATH fi -exec oxdvi.bin $NAMEOPT ${1+"$@"} +uncompress= +filename="${1+"$@"}" +case "${filename}" in + *.gz) uncompress="gzip -d -c $filename" ;; + *.bz2) uncompress="bzip2 -d -c $filename" ;; +esac +if test -n "$uncompress" -a -r "$filename" ; then + filename="${filename##*/}" + tmpfile="`mktemp ${TMPDIR-/tmp}/${filename%.*}.XXXXXX`" || exit 1 + trap 'rm -f $tmpfile' 0 1 2 3 6 13 15 + $uncompress > $tmpfile + oxdvi.bin $NAMEOPT $tmpfile || exit 1 + exit 0 +else + exec oxdvi.bin $NAMEOPT ${1+"$@"} +fi --- texk/ps2pkm/pk2bm.c +++ texk/ps2pkm/pk2bm.c Thu Mar 2 14:31:12 2000 @@ -42,8 +42,7 @@ quarterword lsbf(); void dots(); chardesc cd; - char *myname = "pk2bm", *pkname; - int atoo(char *); + char *myname = "pk2bm", *pkname, *endptr; while (--argc > 0 && (*++argv)[0] == '-') { done=0; @@ -51,26 +50,36 @@ switch (c) { case 'c': if (*++argv[0] == '\0') { - argc--; argv++; + if (--argc == 0) { +err: + printf("%s: illegal value for option %c\n", myname, c); + exit(1); + } + argv++; } C = *argv[0]; done = 1; break; case 'o': if (*++argv[0] == '\0') { - argc--; ++argv; + if (--argc == 0) goto err; + ++argv; } - C = atoo(argv[0]); + C = strtol(argv[0], &endptr, 8); + if (endptr==argv[0] || *endptr) goto err; done = 1; break; case 'H': if (*++argv[0] == '\0') { - argc--; argv++; + if (--argc == 0) goto err; + argv++; } - h = atoi(argv[0]); + h = strtol(argv[0], &endptr, 10); + if (endptr==argv[0] || *endptr) goto err; done=1; break; case 'W': if (*++argv[0] == '\0') { - argc--; argv++; + if (--argc == 0) goto err; + argv++; } w = atoi(argv[0]); done=1; @@ -87,7 +96,7 @@ } } - if (argc == 0) { + if (argc != 1) { printf("Usage: %s [-bh] {-c char|-o octchar} [-W width -H height] pkfile\n", myname); exit(1); } @@ -199,8 +208,3 @@ } } -int atoo(char *oct) -{ int octal = 0; - while (*oct != '\0') octal = 8*octal + (*oct++) - '0'; - return octal & 0xff; -} --- texk/tetex/Makefile.in +++ texk/tetex/Makefile.in Thu Mar 2 14:31:12 2000 @@ -5,9 +5,14 @@ ac_include ../make/common.mk ac_include ../make/programs.mk -SCRIPTS= dvi2fax ps2frag texconfig dvired pslatex texi2html allcm allneeded fontexport fontimport kpsetool mkfontdesc MakeTeXPK fontinst rubibtex rumakeindex fmtutil texdoc texlinks texutil texexec texshow +# +# texi2html is part of the SuSE package texinfo +# +#SCRIPTS= dvi2fax ps2frag texconfig dvired pslatex texi2html allcm allneeded fontexport fontimport kpsetool mkfontdesc MakeTeXPK fontinst rubibtex rumakeindex fmtutil texdoc texlinks texutil texexec texshow +SCRIPTS= dvi2fax ps2frag texconfig dvired pslatex allcm allneeded fontexport fontimport kpsetool mkfontdesc MakeTeXPK fontinst rubibtex rumakeindex fmtutil texdoc texlinks texutil texexec texshow PDFSCRIPTS=e2pall epstopdf texi2pdf thumbpdf -manpgs=texi2html texconfig ps2frag allcm allneeded dvired fontexport fontimport allec +#manpgs=texi2html texconfig ps2frag allcm allneeded dvired fontexport fontimport allec +manpgs=texconfig ps2frag allcm allneeded dvired fontexport fontimport allec INFOFILES= latex.info latex.info-1 latex.info-2 latex.info-3 all: $(SCRIPTS) $(PDFSCRIPTS) default: all --- texk/tetex/dvi2fax +++ texk/tetex/dvi2fax Mon Jul 3 15:07:19 2000 @@ -21,10 +21,10 @@ echo "Example: $progname foo -l 2" } -dvipsconf=dfaxhigh; res=204x196 +dvipsconf=dfaxhigh; gsdev=dfaxhigh case $1 in - -hi) dvipsconf=dfaxhigh; res=204x196; shift;; - -lo) dvipsconf=dfaxlo; res=204x98; shift;; + -hi) gsdev=dfaxhigh; shift;; + -lo) gsdev=dfaxlow ; shift;; esac case $# in @@ -33,5 +33,5 @@ esac NAME=`basename $1 .dvi` -dvips "$@" -P$dvipsconf -f | - gs -q -dSAFER -sDEVICE=faxg3 -r$res -sOutputFile=$NAME-%03d.fax -sNOPAUSE - +dvips "$@" -P$dvipsconf -f | \ + gs -q -dSAFER -sDEVICE=$gsdev -sOutputFile=$NAME-%03d.fax -sNOPAUSE - --- texk/tetex/fmtutil +++ texk/tetex/fmtutil Thu Mar 2 14:31:12 2000 @@ -194,9 +194,10 @@ : ${KPSE_DOT=$thisdir} TEXINPUTS="$thisdir:$TEXINPUTS" fi - tmpdir=${TMP-/tmp}/$progname.$$ - trap 'cd /; cd "$thisdir"; rm -rf "$tmpdir"; exit 0' 0 1 2 3 7 13 15 - mkdir "$tmpdir" || abort "could not create directory \`$tmpdir'" + tmpdir=${TMPDIR-/tmp}/$progname$$.$RANDOM + trap 'cd /; cd "$thisdir"; rm -rf "$tmpdir"; exit 0' 0 + trap 'cd /; cd "$thisdir"; rm -rf "$tmpdir"; exit 1' 1 2 3 7 13 15 + mkdir -m 0700 "$tmpdir" || abort "could not create directory \`$tmpdir'" cd "$tmpdir" || exit 1 # make local paths absolute: --- texk/tetex/texconfig +++ texk/tetex/texconfig Thu Mar 2 14:31:12 2000 @@ -34,7 +34,7 @@ # You may override DIALOG_TERMINFO and DIALOG_TERM in your environment. progname=`basename $0` -tmpdir=${TMP-/tmp}/texconf$$ +tmpdir=${TMPDIR-/tmp}/texconf$$.$RANDOM tmpmenu=$tmpdir/menu.out tmpans=$tmpdir/answer.out std_pager=more @@ -139,7 +139,7 @@ { test -z "$NO_CLEAR" && clear if $own_dialog; then - $DIALOG_PROG --title "$version setup utility" "$@" + $DIALOG_PROG --backtitle "$version setup utility" --title "$version setup utility" "$@" else TERM=$DIALOG_TERM TERMINFO=$DIALOG_TERMINFO dialog --title "$version setup utility" "$@" fi @@ -1477,12 +1477,24 @@ /*) ;; *) helpindex=$doc/$helpindex;; esac - \mv -f $helpindex $helpindex.BAK + VARTEXMF=`kpsewhich --expand-var '$VARTEXMF' 2> /dev/null` + if test -n "$VARTEXMF" -a -d $VARTEXMF/doc/ + then + mv -f $helpindex $VARTEXMF/doc/helpindex.BAK + else + mv -f $helpindex $helpindex.BAK + fi + # Catch alternated screen switch, e.g. for xterm + rmcup="" + sed="" + test -n "`type -p tput`" && rmcup="`tput rmcup|sed 's@\[@\\\[@g'`" + test -n "$rmcup" && sed="| sed 's@$rmcup@@g'" # Warn the user it's going to take a while - run_dialog --infobox \ - "This could take some time, please wait." \ - 3 80 + eval run_dialog --infobox \ + \"This could take some time, please wait.\" \ + 3 80 $sed ./mkhtml > $helpindex 2>> $log + test -n "$rmcup" && { tput rmcup ; tput sgr0 ; } ) else clear @@ -1686,9 +1698,10 @@ locate_files test -d $tmpdir && { echo "$tmpdir: directory already exists."; exit; } -trap 'cd / ; rm -rf $tmpdir; trap '' 0; exit 0' 0 1 2 6 13 15 -mkdir $tmpdir || exit -cd $tmpdir || exit +trap 'cd / ; rm -rf $tmpdir; trap '' 0; exit 0' 0 +trap 'cd / ; rm -rf $tmpdir; trap '' 0; exit 1' 1 2 6 13 15 +mkdir -m 0700 $tmpdir || exit 1 +cd $tmpdir || exit 1 exist_test -d "$tmpdir" "tmpdir directory" EDIT=${VISUAL-${EDITOR-$std_editor}} @@ -1716,8 +1729,12 @@ test -f $bases/mf.base || run_config_mf +$echon "Checking for formats... " fmtutil --missing +echo "done" +$echon "Checking for program links... " texlinks ${SILENT_TEXLINKS+-s} +echo "done" check_terminal cat </dev/null` test -z "$filename" && continue @@ -64,16 +81,29 @@ if test $mode = list; then echo $filename else + dir=`echo $filename | sed 's%/[^/]*$%%'` ext=`echo $filename | sed 's%.*\.%%'` + eval uncompress="\$TEXDOCUNZIP_$ext" + if test -n "$uncompress" + then + ext=`echo $filename | sed -e "s|\\.$ext\$||" | sed 's%.*\.%%'` + fi viewer=\$"TEXDOCVIEW_$ext" - viewer=`eval echo $viewer | sed -e "s|%s|$filename|g"` + if test -n "$uncompress" + then + src=`echo "$filename" | sed -e 's%.*/%%' -e 's%\.[^.]*$%%'` + eval "$uncompress $filename > $tmpdir/$src" + filename=$tmpdir/$src + viewer=`eval echo $viewer | sed -e "s|%s|$filename;rm -f $filename;$clean|g"` + else + viewer=`eval echo $viewer | sed -e "s|%s|$filename;$clean|g"` + fi if test -z "$viewer" - then + then echo "Don't know how to view file type $ext" 1>&2 echo "(matching file was $filename)" 1>&2 - else - $verbosemode && echo $viewer - dir=`echo "$filename" | sed 's%/[^/]*$%%'` + else + $verbosemode && echo $viewer; test -n "$dir" && test -d "$dir" && cd "$dir" eval $viewer break # just stop after the first usable extension @@ -82,5 +112,8 @@ done $found || echo "Can't find documentation for \`$name'" 1>&2 + IFS=$OIFS done +sleep 2 +eval $clean exit 0 --- texk/tetex/texlinks +++ texk/tetex/texlinks Thu Mar 2 14:31:12 2000 @@ -59,16 +59,18 @@ # 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 +# 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 + + type -p $1 } @@ -142,8 +144,23 @@ upd_symlinkdir() { search_symlinkdir || return - for i in `sed 's@ .*@@' cnf_file_ln.$$`; do - install_link "$selfautoloc/$i" "$symlinkdir/$i" + set x `cat cnf_file_ln.$$` ; shift + while test $# != 0; do + fmt=$1; ini=$3; shift; 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="$@" + + kpsewhich -progname=$fmt -format=tex $ini >/dev/null 2>&1 + test $? -ne 0 && continue + + install_link "$selfautoloc/$fmt" "$symlinkdir/$fmt" + + # restore positional arguments: + set x $main_args_while; shift + done } @@ -181,13 +198,14 @@ test -z "$cnf_file" && cnf_file=`kpsewhich --format='web2c files' $cnf` test -f "$cnf_file" || abort "config file \`$cnf' not found" - tmpdir=${TMP-/tmp}/fmtutil.$$ - trap 'cd /; cd "$thisdir"; rm -rf "$tmpdir"; exit 0' 0 1 2 3 7 13 15 - mkdir "$tmpdir" || abort "could not create directory \`$tmpdir'" + tmpdir=${TMPDIR-/tmp}/texlinks$$.$RANDOM + trap 'cd /; cd "$thisdir"; rm -rf "$tmpdir"; exit 0' 0 + trap 'cd /; cd "$thisdir"; rm -rf "$tmpdir"; exit 1' 1 2 3 7 13 15 + mkdir -m 0700 "$tmpdir" || abort "could not create directory \`$tmpdir'" cd "$tmpdir" || exit 1 - sed '/^[ ]*#/d; /^[ ]*$/d' $cnf_file \ - | awk '{print $1, $2}' > cnf_file_ln.$$ + sed '/^[ ]*#/d; /^[ ]*$/d; s%\*%%' $cnf_file \ + | awk '{print $1, $2, $NF}' > cnf_file_ln.$$ if test -z "$dirs"; then if test $multiplatform = true; then @@ -208,12 +226,15 @@ # 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 + fmt=$1; engine=$2; ini=$3; shift; 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="$@" + + kpsewhich -progname=$fmt -format=tex $ini >/dev/null 2>&1 + test $? -ne 0 && continue test "x$fmt" = "x$engine" && continue if test -f "$d/$engine"; then --- texk/web2c/fmtutil.in +++ texk/web2c/fmtutil.in Thu Mar 2 14:31:12 2000 @@ -28,30 +28,30 @@ # Standard formats (plain, latex) with all engines: -tex @TEXBIN@ - tex.ini -latex @TEXBIN@ language.dat latex.ini +tex @TEXBIN@ - tex.ini +latex @TEXBIN@ language.dat latex.ini @ETEX@etex etex language.def *etex.ini @ETEX@elatex etex language.dat *elatex.ini @PTEX@pdftex pdftex language.dat pdftex.ini -@PTEX@pdflatex pdftex language.dat pdflatex.ini +@PTEX@pdflatex pdftex language.dat pdflatex.ini @PETEX@pdfetex pdfetex language.def *pdfetex.ini @PETEX@pdfelatex pdfetex language.dat *pdfelatex.ini @OMEGA@omega omega language.dat omega.ini @OMEGA@lambda omega language.dat lambda.ini # The amstex format: -# amstex @TEXBIN@ - amstex.ini +amstex @TEXBIN@ - amstex.ini # Variants of plain and amstex which allow to customize hyphenation: # bplain @TEXBIN@ language.dat bplain.ini # bamstex @TEXBIN@ language.dat bamstex.ini # Context formats: -# cont-cz pdfetex cont-usr.tex *cont-cz.ini -# cont-de pdfetex cont-usr.tex *cont-de.ini -# cont-en pdfetex cont-usr.tex *cont-en.ini -# cont-nl pdfetex cont-usr.tex *cont-nl.ini -# cont-uk pdfetex cont-usr.tex *cont-uk.ini +cont-cz pdfetex cont-usr.tex *cont-cz.ini +cont-de pdfetex cont-usr.tex *cont-de.ini +cont-en pdfetex cont-usr.tex *cont-en.ini +cont-nl pdfetex cont-usr.tex *cont-nl.ini +cont-uk pdfetex cont-usr.tex *cont-uk.ini # language-specific things: @@ -65,5 +65,13 @@ # mex tex mexconf.tex mex.ini # pdfmex pdftex mexconf.tex pdfmex.ini +# - French: +frlatex tex language.dat -mltex frlatex.ini + # Other formats: -# eplain tex language.dat eplain.ini +eplain tex language.dat eplain.ini + +# Formats not directly supported by teTeX. You need to add the necessary +# macro files and eventually run texhash before you can use the following: +jadetex tex language.dat &latex jadetex.ini +latex209 tex lhyphen.tex latex209.ini --- texk/web2c/window/x11-Xlib.c +++ texk/web2c/window/x11-Xlib.c Thu Mar 2 14:31:12 2000 @@ -73,6 +73,8 @@ #define BORDER_WIDTH 1 /* Should get this from resource. */ #define DEFAULT_X_POSITION 0 #define DEFAULT_Y_POSITION 0 +#define DEFAULT_WIDTH 450 +#define DEFAULT_DEPTH 500 /* Return 1 (i.e., true) if display opened successfully, else 0. */ @@ -99,11 +101,11 @@ sizehints.x = DEFAULT_X_POSITION; sizehints.y = DEFAULT_Y_POSITION; - sizehints.width = screenwidth; - sizehints.height = screendepth; + sizehints.width = DEFAULT_WIDTH; + sizehints.height = DEFAULT_DEPTH; sizehints.flags = PPosition|PSize; - sprintf (default_geometry, "%ux%u+%u+%u", screenwidth, screendepth, + sprintf (default_geometry, "%ux%u+%u+%u", DEFAULT_WIDTH, DEFAULT_DEPTH, DEFAULT_X_POSITION, DEFAULT_Y_POSITION); /* Look up the geometry for this window. (Section 10.2 Obtaining X --- texk/web2c/window/x11-Xt.c +++ texk/web2c/window/x11-Xt.c Thu Mar 2 14:31:12 2000 @@ -23,8 +23,8 @@ #define PLANE 0 -static unsigned int mf_defwidth = 0; -static unsigned int mf_defheight = 0; +static unsigned int mf_defwidth = 450;; +static unsigned int mf_defheight = 500; static Display *mf_display; static Window mf_window; --- texk/xdvik/xdvi-sh +++ texk/xdvik/xdvi-sh Thu Mar 2 14:31:12 2000 @@ -45,4 +45,19 @@ XFILESEARCHPATH="$xdviapppath:${XFILESEARCHPATH-%D}"; export XFILESEARCHPATH fi -exec xdvi.bin $NAMEOPT ${1+"$@"} +uncompress= +filename="${1+"$@"}" +case "${filename}" in + *.gz) uncompress="gzip -d -c $filename" ;; + *.bz2) uncompress="bzip2 -d -c $filename" ;; +esac +if test -n "$uncompress" -a -r "$filename" ; then + filename="${filename##*/}" + tmpfile="`mktemp ${TMPDIR-/tmp}/${filename%.*}.XXXXXX`" || exit 1 + trap 'rm -f $tmpfile' 0 1 2 3 6 13 15 + $uncompress > $tmpfile + xdvi.bin $NAMEOPT $tmpfile || exit 1 + exit 0 +else + exec xdvi.bin $NAMEOPT ${1+"$@"} +fi