Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:15.1
texlive-filesystem
update.texlive
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File update.texlive of Package texlive-filesystem
#!/bin/bash # # $TEXMFMAIN/texconfig/update Update the TeXLive system depending on # the marks found below /var/run/texlive # and also tries do determine the required printer setup like the page size # layout, printer resolution and printer blackening. # # This script is based on the old SuSEconfig.texlive or SuSEconfig.tetex # script used before for this job. # # Copyright (c) 1997-2001 SuSE Gmbh Nuernberg, Germany. All rights reserved. # Copyright (c) 2004 SuSE LINUX AG, Germany. All rights reserved. # Copyright (c) 2007-2009 SuSE LINUX Products GmbH, Nuernberg, Germany. # Copyright (c) 2011-2012 SuSE LINUX Products GmbH, Nuernberg, Germany. # Copyright (c) 2016 SUSE Linux GmbH, Nuernberg, Germany. # # Please submit bugfixes or comments via http://bugs.opensuse.org/ # # Author: Werner Fink, 1997-2012,2016 # if test -n "$1" -a "$1" = force; then mkdir -p /var/run/texlive for tag in run-mktexlsr run-hyphen \ run-fmtutil.language run-fmtutil \ run-fmtutil.refresh run-update do > /var/run/texlive/$tag done fi # Empty directory means nothing todo test -d /var/run/texlive || exit 0 typeset -r OLDIFS="$IFS" typeset -i rc=0 typeset -i nl=0 : ${VERBOSE=true} umask 022 # # We need a check for an already modified texlive configuration: # therefore we use md5 check sums. # LIBDIR=/var/lib/texmf MD5DIR=$LIBDIR/md5 OLDMD5DIR=/var/adm/SuSEconfig/md5 mkdir -p $MD5DIR || exit 0 unset ${!LC_*} LANG=POSIX MKTEXLSR=true export LANG MKTEXLSR # # Sanity check # size=$(find /etc/texmf/ls-R -follow -printf '%s') test $size -lt 80 && > /var/run/texlive/run-mktexlsr rotator () { local -i i=0 n=0 local -a elements=('|' '/' '-' '\') while read -s -n 1 ; do printf "\r[${elements[((i++%4))]}]" let n=1 done ((n > 0)) && echo } atexit() { exec 4>&- # Empty directory means nothing todo rm -r /var/run/texlive || : } if test $VERBOSE = true ; then exec 4> >(rotator) elif test $VERBOSE = debug ; then log=$(mktemp --tmpdir=/tmp update.XXXXXXXX) || exit 1 exec 4> >(tee $log) else exec 4> /dev/null fi trap atexit EXIT type -p mktexlsr &> /dev/null || { echo "${0##*/}: No mktexlsr in PATH ... skipping" 1>&2; exit 0 ; } # # Straightforward ... here we go # for run in /var/run/texlive/run-mktexlsr* ; do test -e $run || break test $VERBOSE = true && { echo -en "\r[ ]Updating TeX hash data base."; let nl++; } mktexlsr < /dev/null 1>&4 2>&4 let rc+=$? rm -f /var/run/texlive/run-mktexlsr* > /var/run/texlive/sync-updmap done ((nl == 0)) || { echo; let nl=0; } type -p kpsewhich &> /dev/null || { echo "${0##*/}: No kpsewhich in PATH ... skipping" 1>&2; exit 0 ; } type -p md5sum &> /dev/null || { echo "${0##*/}: No md5sum in PATH ... skipping" 1>&2; exit 0 ; } type -p readlink &> /dev/null || { echo "${0##*/}: No readlink in PATH ... skipping" 1>&2; exit 0 ; } type -p find &> /dev/null || { echo "${0##*/}: No find in PATH ... skipping" 1>&2; exit 0 ; } type -p sort &> /dev/null || { echo "${0##*/}: No sort in PATH ... skipping" 1>&2; exit 0 ; } type -p env &> /dev/null || { echo "${0##*/}: No env in PATH ... skipping" 1>&2; exit 0 ; } type -p sed &> /dev/null || { echo "${0##*/}: No sed in PATH ... skipping" 1>&2; exit 0 ; } type -p tr &> /dev/null || { echo "${0##*/}: No tr in PATH ... skipping" 1>&2; exit 0 ; } type -p grep &> /dev/null || { echo "${0##*/}: No grep in PATH ... skipping" 1>&2; exit 0 ; } type -p ed &> /dev/null || { echo "${0##*/}: No ed in PATH ... skipping" 1>&2; exit 0 ; } # Be sure that configuring in /etc/texmf will work even if # there are files relative to /etc/texmf ... unset KPSE_DOT || true : ${TEXMFMAIN:=$(kpsewhich --expand-path='$TEXMFMAIN' 2> /dev/null)} : ${TEXMFDIST:=$(kpsewhich --expand-path='$TEXMFDIST' 2> /dev/null)} : ${TEXMFVAR:=$(kpsewhich --var-value=TEXMFVAR 2> /dev/null)} : ${TEXMFCNFFILE:=$(kpsewhich texmf.cnf 2> /dev/null)} : ${TEXMFSYSCONFIG:=$(kpsewhich --expand-path='$TEXMFSYSCONFIG' 2> /dev/null)} : ${TEXMFLSR:=$(kpsewhich --show-path=ls-R 2> /dev/null)} : ${WEB2C:=$TEXMFVAR/web2c} test -L "$TEXMFCNFFILE" && TEXMFCNFFILE="$(readlink -f "$TEXMFCNFFILE" 2> /dev/null)" # # Configuration broken # if test ! -e "$TEXMFCNFFILE" ; then echo "${0##*/}: Configuration of texlive installation not found." 1>&2 exit 0 fi # # Language and hyphenation setup # cnf_ldat=$(TEXMF=$TEXMFSYSCONFIG kpsewhich language.dat 2> /dev/null) cnf_ldef=$(TEXMF=$TEXMFSYSCONFIG kpsewhich language.def 2> /dev/null) cnf_llua=$(TEXMF=$TEXMFSYSCONFIG kpsewhich language.dat.lua 2> /dev/null) cnf_fmtu=$(TEXMF=$TEXMFSYSCONFIG kpsewhich fmtutil.cnf 2> /dev/null) cnf_umap=$(TEXMF=$TEXMFSYSCONFIG kpsewhich updmap.cfg 2> /dev/null) if test -z "$cnf_llua" ; then # # RPM has trouble with symbolic links instead of files # old=$(TEXMF=$TEXMFDIST kpsewhich language.dat.lua 2> /dev/null) if test -n "$old" -a -e "$old" -a ! -L "$old" ; then base="${old##*/}" path="${old%/*}" if test -d ${TEXMFSYSCONFIG}${path#$TEXMFDIST}; then if test -e "$cnf_llua" ; then rm -f "$old" else mv "$old" "$cnf_llua" fi ln -sf "$cnf_llua" "$old" fi fi mktexlsr $TEXMFSYSCONFIG < /dev/null 1>&4 2>&4 cnf_llua=$(TEXMF=$TEXMFSYSCONFIG kpsewhich language.dat.lua 2> /dev/null) fi # # Do some sanity checks as well # for hyp in ${TEXMFDIST}/tex/generic/config/language.splits/hyphen* do test -e "$hyp" || continue suffix=${hyp##*/} suffix=${suffix#*.} case "$suffix" in dat.lua) test "$hyp" -nt "$cnf_llua" ;; dat) test "$hyp" -nt "$cnf_ldat" ;; def) test "$hyp" -nt "$cnf_ldef" ;; esac && { > /var/run/texlive/run-hyphen > /var/run/texlive/run-fmtutil.language } done unset hyp suffix init=false while read format engine language rest do line=($rest) last=${line[-1]} inifile=${last#\*} case "$engine" in mpost) fmt="$format.mem"; kpse=mpost; engine=metapost ;; mf|mfw|mf-nowin) fmt="$format.base"; kpse=mf; engine=metafont ;; *) fmt="$format.fmt"; kpse=tex; engine=$engine ;; esac test -d ${WEB2C}/$engine || mkdir -p ${WEB2C}/$engine fmt="${WEB2C}/$engine/$fmt" if test ! -e "$fmt" then # init=true # > /var/run/texlive/run-fmtutil continue fi test "$fmt" -nt "$TEXMFCNFFILE" || init=true inifile=$(kpsewhich -progname=$format -format=$kpse $inifile 2>/dev/null) || continue test "$fmt" -nt "$inifile" && continue case "$engine" in mpost) fmtutil-sys --byfmt "$egine" < /dev/null 1>&4 2>&4 ;; mf|mfw|mf-nowin) fmtutil-sys --byfmt "$egine" < /dev/null 1>&4 2>&4 ;; *) > /var/run/texlive/run-fmtutil.refresh esac done < <(sed -r "/^(\#.*|[[:blank:]]*)$/d" "$cnf_fmtu") unset format engine language rest line last inifile fmt kpse engine if test -n "${cnf_ldat}" -a -n "${cnf_ldef}" -a -n "${cnf_llua}" ; then for cfg in ${cnf_ldat} ${cnf_ldef} ${cnf_llua} ; do test -s ${OLDMD5DIR}${cfg} || continue if test -e ${MD5DIR}${cfg} ; then if test ${MD5DIR}${cfg} -nt ${OLDMD5DIR}${cfg} ; then rm -f ${OLDMD5DIR}${cfg} continue fi else mkdir -p ${MD5DIR}${cfg%/*} fi mv -f ${OLDMD5DIR}${cfg} ${MD5DIR}${cfg} done md5_ldat=${MD5DIR}${cnf_ldat} md5_ldef=${MD5DIR}${cnf_ldef} md5_llua=${MD5DIR}${cnf_llua} # # Handle hyphens # typeset -i refresh=0 for run in /var/run/texlive/run-hyphen* ; do test -e "$run" || break tmp=${cnf_ldat}.$RANDOM set -C echo "% Generated by ${TEXMFDIST}/texconfig/update on $(date)" > $tmp cat ${TEXMFDIST}/tex/generic/config/language.us >> $tmp for dat in ${TEXMFDIST}/tex/generic/config/language.splits/*.dat ; do test -e "$dat" || break cat "$dat" done >> $tmp mv -f $tmp ${cnf_ldat} let refresh++ # tmp=${cnf_ldef}.$RANDOM cat ${TEXMFDIST}/tex/generic/config/language.us.def >> $tmp for def in ${TEXMFDIST}/tex/generic/config/language.splits/*.def ; do test -e "$def" || break cat "$def" done >> $tmp echo '%%% No changes may be made beyond this point.' >> $tmp echo >> $tmp echo '\uselanguage {USenglish} %%% This MUST be the last line of the file.' >> $tmp mv -f $tmp ${cnf_ldef} let refresh++ # tmp=${cnf_llua}.$RANDOM echo "-- Generated by ${TEXMFDIST}/texconfig/update on $(date)" > $tmp cat ${TEXMFDIST}/tex/generic/config/language.us.lua >> $tmp for lua in ${TEXMFDIST}/tex/generic/config/language.splits/*.dat.lua ; do test -e "$lua" || break cat "$lua" done >> $tmp # Silent editor { echo '}' >> $tmp mv -f $tmp ${cnf_llua} let refresh++ set +C rm -f /var/run/texlive/run-hyphen* done if ((refresh > 0)) then # # New md5 sums # md5_ldat=${MD5DIR}${cnf_ldat} md5_ldef=${MD5DIR}${cnf_ldef} md5_llua=${MD5DIR}${cnf_llua} set -- $(md5sum < ${cnf_ldat}) ; md5ldat="$1" set -- $(md5sum < ${cnf_ldef}) ; md5ldef="$1" set -- $(md5sum < ${cnf_llua}) ; md5llua="$1" # # Previous md5 sums # omd5ldat=0 omd5ldef=0 omd5llua=0 if test -e ${md5_ldat} -a -r ${md5_ldat} ; then set -- $(cat ${md5_ldat}) ; omd5ldat="$1" elif test ! -d ${md5_ldat%/*} ; then mkdir -p ${md5_ldat%/*} fi echo "$md5ldat" > $md5_ldat if test -e ${md5_ldef} -a -r ${md5_ldef} ; then set -- $(cat ${md5_ldef}) ; omd5ldef="$1" elif test ! -d ${md5_ldef%/*} ; then mkdir -p ${md5_ldef%/*} fi echo "$md5ldef" > $md5_ldef if test -e ${md5_llua} -a -r ${md5_llua} ; then set -- $(cat ${md5_llua}) ; omd5llua="$1" elif test ! -d ${md5_llua%/*} ; then mkdir -p ${md5_llua%/*} fi echo "$md5llua" > $md5_llua # # Refresh formats for new language.dat and/or language.def if needed # while read format engine language rest do line=($rest) last=${line[-1]} inifile=${last#\*} case "$engine" in mpost) continue ;; mf|mfw|mf-nowin) continue ;; *) fmt="$format.fmt"; kpse=tex; engine=$engine ;; esac test -d ${WEB2C}/$engine || mkdir -p ${WEB2C}/$engine fmt="${WEB2C}/$engine/$fmt" test -e "$fmt" || continue inifile=$(kpsewhich -progname=$format -format=$kpse $inifile 2>/dev/null) || continue for lang in ${language//,/ } do for cfg in ${cnf_ldat} ${cnf_ldef} ${cnf_llua} do test $lang = "${cfg##*/}" || continue test $fmt -nt $cfg && continue > /var/run/texlive/run-fmtutil.language break 3 done done done < <(sed -r "/^(\#.*|[[:blank:]]*)$/d" "$cnf_fmtu") unset format engine language lang rest line last inifile fmt kpse engine fi fi tcfmgr () { ${TEXMFMAIN}/texconfig/tcfmgr ${1+"$@"} 2> /dev/null } enablemaps () { local -i rc=0 local -i hash=0 local -a maps=($(sed -rn "s@^(\#\![[= =]]+)(Mixed|Kanji)?Map[[:blank:]]*@@gp" < $cnf_umap | \ xargs -r kpsewhich --format=map 2> /dev/null | \ sed -r "s@.*/([^/]*)@\1@g")) local line emap ((${#maps} == 0)) && return $rc for line in ${maps[@]} ; do let hash++ emap=$(sed -rn "s/^\#\![[= =]]+((Mixed|Kanji)?Map)[[:blank:]]*(${line})/\1=\3/p" $cnf_umap) updmap-sys --cnffile $cnf_umap --nohash --nomkmap --enable $emap let rc+=$? done ((hash > 0)) && > /var/run/texlive/run-mktexlsr return $rc } has_formats() { local hyphen format=tex local OIFS="$IFS" local IFS=$'\n' test -e "$cnf_fmtu" || return 1 local -a list=($(sed -r "/^(\#.*|[[:blank:]]*)$/d" "$cnf_fmtu")) local -a line IFS="$OIFS" local -i count=${#list[@]} local -i last case "$1" in *.lua) format=lua esac while ((count-- > 0)) ; do line=(${list[count]}) test ${line[2]} = "-" && continue let last=${#line[@]} let last-- hyphen=$(kpsewhich -progname=${line[0]} -format=$format ${line[2]} 2>/dev/null) || continue test -n "$hyphen" -a -e "$hyphen" -a "${hyphen##*/}" = "${1##*/}" || continue return 0 done return 1 } # # Go further # for run in /var/run/texlive/run-fmtutil.* /var/run/texlive/run-fmtutil ; do test -e "$run" || break type -p fmtutil-sys &> /dev/null || { echo "${0##*/}: No fmtutil-sys in PATH ... skipping" 1>&2; break; } option="" test $VERBOSE = true || option="--quiet" case "${run#*fmtutil.}" in language) if test -n "${cnf_ldat}" ; then set -- $(md5sum < ${cnf_ldat}) echo $1 > ${md5_ldat} if has_formats ${cnf_ldat} ; then test $VERBOSE = true && { echo -en "\r[ ]Handle language.dat setups."; let nl++; } fmtutil-sys ${option:+$option} --byhyphen ${cnf_ldat} --no-strict < /dev/null 1>&4 2>&4 let rc+=$? ((nl == 0)) || { echo; let nl=0; } fi fi if test -n "${cnf_ldef}" ; then set -- $(md5sum < ${cnf_ldef}) echo $1 > ${md5_ldef} if has_formats ${cnf_ldef} ; then test $VERBOSE = true && { echo -en "\r[ ]Handle language.def setups."; let nl++; } fmtutil-sys ${option:+$option} --byhyphen ${cnf_ldef} --no-strict < /dev/null 1>&4 2>&4 let rc+=$? ((nl == 0)) || { echo; let nl=0; } fi fi if test -n "${cnf_llua}" ; then set -- $(md5sum < ${cnf_llua}) echo $1 > ${md5_llua} if has_formats ${cnf_llua} ; then test $VERBOSE = true && { echo -en "\r[ ]Handle language.dat.lua setups."; let nl++; } fmtutil-sys ${option:+$option} --byhyphen ${cnf_llua} --no-strict < /dev/null 1>&4 2>&4 let rc+=$? ((nl == 0)) || { echo; let nl=0; } fi fi ((rc != 0)) || rm -f /var/run/texlive/run-fmtutil.language ;; refresh) test $VERBOSE = true && { echo -en "\r[ ]Refresh TeX formats."; let nl++; } fmtutil-sys ${option:+$option} --refresh --no-strict < /dev/null 1>&4 2>&4 let rc+=$? ((nl == 0)) || { echo; let nl=0; } ((rc != 0)) || rm -f /var/run/texlive/run-fmtutil.refresh ;; "/var/run/texlive/run-fmtutil") test $VERBOSE = true && { echo -en "\r[ ]Missing TeX formats."; let nl++; } fmtutil-sys ${option:+$option} --missing --no-strict < /dev/null 1>&4 2>&4 let rc+=$? ((nl == 0)) || { echo; let nl=0; } ((rc != 0)) || rm -f /var/run/texlive/run-fmtutil ;; *) test $VERBOSE = true && { echo -en "\r[ ]Updating TeX format ${run#*fmtutil.}."; let nl++; } fmtutil-sys ${option:+$option} --byfmt "${run#*fmtutil.}" < /dev/null 1>&4 2>&4 let rc+=$? ((nl == 0)) || { echo; let nl=0; } ((rc != 0)) || rm -f "${run}" esac done for run in /var/run/texlive/run-updmap* ; do test -e "$run" || break type -p updmap-sys &> /dev/null || { echo "${0##*/}: No updmap-sys in PATH ... skipping" 1>&2; break; } test -e "$cnf_umap" || break test $VERBOSE = true && { echo -en "\r[ ]Updating TeX font mappings."; let nl++; } while read type map; do case "$type" in [Aa]dd*) type=${type#[Aa]dd} if grep -qsE "${type}[[:blank:]]+${map}" $cnf_umap ; then sed -ri "s/^\#\![[= =]]+(${type}[[:blank:]]+${map})/\1/" $cnf_umap else echo "${type} ${map}" >> $cnf_umap fi ;; [Dd]elete*) type=${type#[Dd]elete} sed -ri "s/^(${type}[[:blank:]]+${map})/\#\! \1/" $cnf_umap ;; *) ;; esac done < $run updmap-sys --cnffile $cnf_umap --nohash --nomkmap --syncwithtrees < /dev/null 1>&4 2>&4 let rc+=$? enablemaps $cnf_umap < /dev/null 1>&4 2>&4 let rc+=$? if test -e /var/run/texlive/run-mktexlsr ; then updmap-sys --cnffile $cnf_umap < /dev/null 1>&4 2>&4 let rc+=$? else updmap-sys --cnffile $cnf_umap --nohash < /dev/null 1>&4 2>&4 let rc+=$? fi ((rc == 0)) || continue rm -f /var/run/texlive/run-updmap* rm -f /var/run/texlive/sync-updmap* rm -f /var/run/texlive/run-mktexlsr* done ((nl == 0)) || { echo; let nl=0; } for run in /var/run/texlive/sync-updmap* ; do test -e "$run" || break type -p updmap-sys &> /dev/null || break test -e "$cnf_umap" || break test $VERBOSE = true && { echo -en "\r[ ]Updating TeX font mappings."; let nl++; } updmap-sys --cnffile $cnf_umap --nohash --nomkmap --syncwithtrees < /dev/null 1>&4 2>&4 let rc+=$? enablemaps $cnf_umap < /dev/null 1>&4 2>&4 let rc+=$? if test -e /var/run/texlive/run-mktexlsr ; then updmap-sys --cnffile $cnf_umap < /dev/null 1>&4 2>&4 let rc+=$? rm -f /var/run/texlive/run-mktexlsr* else updmap-sys --cnffile $cnf_umap --nohash < /dev/null 1>&4 2>&4 let rc+=$? fi ((rc == 0)) || continue rm -f /var/run/texlive/sync-updmap* rm -f /var/run/texlive/run-mktexlsr* done ((nl == 0)) || { echo; let nl=0; } if test -x /usr/bin/mtxrun ; then test $VERBOSE = true && { echo -en "\r[ ]Generate file database."; let nl++; } TEXMF=${TEXMFDIST} \ TEXMFCACHE=${TEXMFVAR} \ TEXMFCNF=${TEXMFCNFFILE%/*} \ /usr/bin/mtxrun --generate < /dev/null 1>&4 2>&4 let rc+=$? if test -x /usr/bin/luatools ; then TEXMF=${TEXMFDIST} \ TEXMFCACHE=${TEXMFVAR} \ TEXMFCNF=${TEXMFCNFFILE%/*} \ LUAINPUTS="$(kpsewhich --var-value=LUAINPUTS)" \ /usr/bin/luatools --generate < /dev/null 1>&4 2>&4 let rc+=$? fi if test -x /usr/bin/luaotfload-tool ; then TEXMF=${TEXMFDIST} \ TEXMFCACHE=${TEXMFVAR} \ TEXMFCNF=${TEXMFCNFFILE%/*} \ LUAINPUTS="$(kpsewhich --var-value=LUAINPUTS)" \ /usr/bin/luaotfload-tool --update --prefer-texmf --formats=+afm --log=stdout < /dev/null 1>&4 2>&4 fi fi ((nl == 0)) || { echo; let nl=0; } # # If texmf.cnf has changed it may contain changed memory sizes # of various programs. # type -p texconfig-sys &> /dev/null || exit 0 if test $init = true ; then test $VERBOSE = true && { echo -en "\r[ ]Initialize TeX configuration and font mappings."; let nl++; } updmap-sys --cnffile $cnf_umap --syncwithtrees < /dev/null 1>&4 2>&4 let rc+=$? texconfig-sys init < /dev/null 1>&4 2>&4 let rc+=$? ((nl == 0)) || { echo; let nl=0; } fi # # The main configuration files of TeXLive. # cnf_mfont=$(tcfmgr --cmd find --file mktex.cnf) cnf_xdvi=$(tcfmgr --cmd find --file XDvi) cnf_dvips=$(tcfmgr --cmd find --file config.ps) test -n "${cnf_mfont}" || exit 0 test -n "${cnf_xdvi}" || exit 0 test -n "${cnf_dvips}" || exit 0 for cfg in ${cnf_mfont} ${cnf_xdvi} ${cnf_dvips} cups ; do test -s ${OLDMD5DIR}${cfg} || continue if test -e ${MD5DIR}${cfg} ; then if test ${MD5DIR}${cfg} -nt ${OLDMD5DIR}${cfg} ; then rm -f ${OLDMD5DIR}${cfg} continue fi else mkdir -p ${MD5DIR}${cfg%/*} fi mv -f ${OLDMD5DIR}${cfg} ${MD5DIR}${cfg} done md5_mfont=${MD5DIR}${cnf_mfont} md5_xdvi=${MD5DIR}${cnf_xdvi} md5_dvips=${MD5DIR}${cnf_dvips} md5_cups=${MD5DIR}/cups # # Is this a full TeXLive 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 # # Current MD5 sums # set -- $(md5sum < ${cnf_mfont}) ; md5modes="$1" set -- $(md5sum < ${cnf_xdvi} ) ; md5xdvi="$1" set -- $(md5sum < ${cnf_dvips}) ; md5dvips="$1" # # The main system printer. # lp="" if type -p lpoptions &>/dev/null && lpstat -r &>/dev/null ; then dev=PS size=a4 dpi=600 color=mono IFS=$'\n' IFS="$OLDIFS" shopt -s extglob while read line ; do case "$line" in PageSize*) set -- $line shift while test -n "$1" ; do case "$1" in \**) size="${1:1}"; break esac shift done ;; CN_DPI*|Resolution*) set -- $line shift cur=0 reg='?(\*)@(+([0-9])|+([0-9])x+([0-9]))dpi' while test -n "$1" ; do case "$1" in ${reg}) cur=${1%%+([[:alpha:]])} esac cur="${cur#\*}" case "$1" in *Color*) color=color esac shift test "${cur%x*}" -gt "${dpi%x*}" && dpi=$cur done ;; ColorCorrection*) set -- $line shift while test -n "$1" ; do case "$1" in \*RGB|\*CMYK) color=color; break esac shift done ;; esac done < <(lpoptions -l < /dev/null 2> /dev/null) shopt -u extglob lp="lp|${dev}-$(echo ${size}-auto-${color}-${dpi}|tr '[:upper:]' '[:lower:]')" elif test -r /etc/printcap -a -d /var/lib/apsfilter/ ; then lp=$(grep -E '^lp\|' /etc/printcap) elif test -r /etc/printcap -a -x /usr/lib/lpdfilter/bin/readpc ; then lp=$(/usr/lib/lpdfilter/bin/readpc lp || true) fi test -n "$lp" || exit 0 # No (configured) filter system: nothing to do if type -p lpoptions &>/dev/null && lpstat -r &>/dev/null ; then omd5cups=0 if test -r ${md5_cups} ; then set -- $(cat ${md5_cups}) ; omd5cups=$1 elif test ! -d ${md5_cups%/*} ; then mkdir -p ${md5_cups%/*} fi set -- $(lpoptions -l 2> /dev/null | md5sum) ; md5cups=$1 if test ${omd5cups} != ${md5cups} ; then prtcap_nt_mfont="yes" prtcap_nt_xdvi="yes" prtcap_nt_dvips="yes" echo ${md5cups} > ${md5_cups} fi else 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" fi # # Previous md5 sums # omd5modes=0 omd5xdvi=0 omd5dvips=0 if test -e ${md5_mfont} -a -r ${md5_mfont} ; then test ${md5_mfont} -nt ${cnf_mfont} && md5_nt_mfont="yes" set -- $(cat ${md5_mfont}) ; omd5modes="$1" elif test ! -d ${md5_mfont%/*} ; then mkdir -p ${md5_mfont%/*} fi if test -e ${md5_xdvi} -a -r ${md5_xdvi} ; then test ${md5_xdvi} -nt ${cnf_xdvi} && md5_nt_xdvi="yes" set -- $(cat ${md5_xdvi}) ; omd5xdvi="$1" elif test ! -d ${md5_xdvi%/*} ; then mkdir -p ${md5_xdvi%/*} fi if test -e ${md5_dvips} -a -r ${md5_dvips} ; then test ${md5_dvips} -nt ${cnf_dvips} && md5_nt_dvips="yes" set -- $(cat ${md5_dvips}) ; omd5dvips="$1" elif test ! -d ${md5_dvips%/*} ; then mkdir -p ${md5_dvips%/*} fi # # Convert YaST2 configured printer for apsfilter or lpdfilter # case "$lp" in *\|*.upp--*) lp="" upp=${lp##*|} IFS="-$IFS" for upp in $upp ; do break; done IFS="$OLDIFS" if test -s /etc/gs.upp/$upp ; then while read line ; do case "$line" in -sDEVICE=*) dev="${line#*=}" ;; @*.upp) dev="${line#@}" ;; -r*) dpi="${line#-r}" ;; -sPAPERSIZE=*) psz="${line#*=}" ;; -sCOLOR=*) col="${line#*=}" ;; *) ;; esac done < /etc/gs.upp/$upp lp="lp|${dev}-${psz}-auto-${col}-${dpi}" fi ;; *:cm=lpdfilter*:) entry="$lp" lp="" IFS=":" for e in $entry ; do case "$e" in cm=lpdfilter*) eval "${e#cm=lpdfilter}" ;; esac done IFS="$OLDIFS" if test "$drv" = "upp" -a -s /etc/lpdfilter/lp/upp ; then while read line ; do case "$line" in -sDEVICE=*) drv="${line#*=}" ;; # Overwrite driver! -r*) dpi="${line#-r}" ;; -dDEVICEXRESOLUTION=*) xres="${line#*=}" ;; -dDEVICEYRESOLUTION=*) yres="${line#*=}" ;; -sPAPERSIZE=*) size="${line#*=}" ;; -sCOLOR=*) color="${line#*=}" ;; -sPOSTFILTER=\"*\") eval post="${line#*=}" ;; @*) upp="${line#@}" ;; esac done < /etc/lpdfilter/lp/upp fi if test -n "$upp" && type -p gs &> /dev/null ; then drv=${upp##*/} upp=$(echo "($upp) findlibfile { pop print } { pop } ifelse" | \ gs -sDEVICE=nullpage -q -dNOPAUSE - -c quit) fi if test -r "$upp" ; then while read line ; do case "$line" in -r*) dpi="${line#-r}" ;; esac done < $upp fi if test -z "$dpi" ; then test -n "$xres" && dpi=$xres test -n "$yres" && dpi=${dpi+"${dpi}x"}$yres fi lp="lp|${drv}-${size}-${method}-${color}-${dpi}" ;; esac # # Parse the configured system main printer # Ghostscript/PS <-> Metafont mode and paper size # UNTESTED, Sorry I've *not* enough printers around # function get_paper () { ( . /etc/sysconfig/language &> /dev/null h=($(LANG=$RC_LANG locale -k LC_PAPER)) case "${h[0]}" in height=297) echo a4 ;; *) echo letter ;; esac ) } 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 ;; *) case "$(get_paper)" in a4) XDVISIZE=a4 ; DVIPSSIZE=a4 ;; *) XDVISIZE=us ; DVIPSSIZE=letter ;; esac ;; 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 prtcap_nt_dvips="manual" ;; esac # # Run texconfig if no one has update the TeXLive system # or parts of it. # if test $omd5modes = 0 -o \ \( $md5modes = $omd5modes -a "$prtcap_nt_mfont" = "yes" -a "$md5_nt_mfont" = "yes" \) then test $VERBOSE = true && { echo -en "\r[ ]Set MetaFont mode."; let nl++; } env -i MKTEXLSR=true PATH=$PATH LANG=$LANG texconfig-sys mode $PRINTER < /dev/null 1>&4 2>&4 let rc+=$? set -- $(md5sum < ${cnf_mfont}) echo $1 > ${md5_mfont} ((nl == 0)) || { echo; let nl=0; } fi if test $omd5xdvi = 0 -o \ \( $md5xdvi = $omd5xdvi -a "$prtcap_nt_xdvi" = "yes" -a "$md5_nt_xdvi" = "yes" \) then test $VERBOSE = true && { echo -en "\r[ ]Set XDvi paper size."; let nl++; } env -i MKTEXLSR=true PATH=$PATH LANG=$LANG texconfig-sys xdvi paper $XDVISIZE < /dev/null 1>&4 2>&4 let rc+=$? set -- $(md5sum < ${cnf_xdvi}) echo $1 > ${md5_xdvi} ((nl == 0)) || { echo; let nl=0; } fi if test $omd5dvips = 0 -o \ \( $md5dvips = $omd5dvips -a "$prtcap_nt_dvips" = "yes" -a "$md5_nt_dvips" = "yes" \) then test $VERBOSE = true && { echo -en "\r[ ]Set dvips mode and paper size."; let nl++; } env -i MKTEXLSR=true PATH=$PATH LANG=$LANG texconfig-sys dvips mode $PRINTER < /dev/null 1>&4 2>&4 let rc+=$? env -i MKTEXLSR=true PATH=$PATH LANG=$LANG texconfig-sys dvips paper $DVIPSSIZE < /dev/null 1>&4 2>&4 let rc+=$? set -- $(md5sum < ${cnf_dvips}) echo $1 > ${md5_dvips} ((nl == 0)) || { echo; let nl=0; } fi if test "$prtcap_nt_dvips" = "manual" -a \ \( $md5dvips = $omd5dvips -o $omd5dvips = 0 \) then echo -e "\n${0##*/}: Unknown default printer, use texconfig to setup dvips manually." if test -n "$MAIL_REPORTS_TO" ; then echo "${0##*/}: Unknown default printer, use texconfig to setup dvips manually." | \ mail -s "${0##*/}" $MAIL_REPORTS_TO fi fi ## exit $rc
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor