diff -ur tetex-src-3.0.orig06/texk/tetex/updmap tetex-src-3.0/texk/tetex/updmap --- tetex-src-3.0.orig06/texk/tetex/updmap 2005-02-26 06:25:34 +0300 +++ tetex-src-3.0/texk/tetex/updmap 2005-02-26 07:08:58 +0300 @@ -115,7 +115,7 @@ Usage: updmap [option] ... [command] Valid options: - --cnffile file specify configuration file + --cnfdir directory specify configuration files directory --dvipsoutputdir directory specify output directory (dvips syntax) --pdftexoutputdir directory specify output directory (pdftex syntax) --dvipdfmoutputdir directory specify output directory (dvipdfm syntax) @@ -198,7 +198,7 @@ ############################################################################### cfgval() { - cat "$cnfFile" | sed -n 's/^'"$1"'[ =][ =]*//p' | sed q + cat $cnfFiles | sed -n 's/^'"$1"'[ =][ =]*//p' | tail -1 } ############################################################################### @@ -208,20 +208,20 @@ setupSymlinks() { rm -f "$dvipsoutputdir/psfonts.map" - if test "x$dvipsPreferOutline" = xtrue; then + if test "x$dvipsPreferOutline" = "xtrue"; then ln -s psfonts_t1.map "$dvipsoutputdir/psfonts.map" else ln -s psfonts_pk.map "$dvipsoutputdir/psfonts.map" fi rm -f "$pdftexoutputdir/pdftex.map" - if test "x$pdftexDownloadBase14" = xtrue; then + if test "x$pdftexDownloadBase14" = "xtrue"; then ln -s pdftex_dl14.map "$pdftexoutputdir/pdftex.map" else ln -s pdftex_ndl14.map "$pdftexoutputdir/pdftex.map" fi rm -f "$dvipdfmoutputdir/dvipdfm.map" - if test "x$dvipdfmDownloadBase14" = xtrue; then + if test "x$dvipdfmDownloadBase14" = "xtrue"; then ln -s dvipdfm_dl14.map "$dvipdfmoutputdir/dvipdfm.map" else ln -s dvipdfm_ndl14.map "$dvipdfmoutputdir/dvipdfm.map" @@ -257,26 +257,32 @@ catMaps() { rm -f $catMapsFailed - egrep "$1" "$cnfFile" \ - | sed 's@#.*@@' \ + + for i in $cnfFiles ; do + egrep "$1" $i \ + | sed 's@#.*@@' \ | awk '{print $2}' \ | sort \ | uniq \ - | grep . > $tmp4 + | grep . + done > $tmp4 while read map; do - file=`locateMap "$map"` || { touch $catMapsFailed; break; } + file=`locateMap "$map"` || { if [ ! -f "$catMapsFailed" ]; then catMapsFailed=`mktemp /tmp/catMapsFailed.XXXXXXXXXXXXX`; fi; break; } # output the file; also output a newline, because the final newline # might be missing in the map file; Empty lines are filtered out later, # so it does not really hurt do do this here. test -n "$file" && { cat "$file"; echo; } + done < $tmp4 - if test -f $catMapsFailed; then + + if test -f "$catMapsFailed"; then false; return 1 else true; return 0 fi + } ############################################################################### @@ -334,7 +340,9 @@ ;; esac - configReplace "$cnfFile" "^$opt[ ]" "$opt $val" + for i in $cnfFiles ; do + configReplace "$i" "^$opt[ ]" "$opt $val" + done } ############################################################################### @@ -356,10 +364,12 @@ disableMap "$2" # now enable with the right type: - configReplace "$cnfFile" "^#![ ]*$1[ ]*$2" "$1 $2" + for i in $cnfFiles ; do + configReplace "$i" "^#![ ]*$1[ ]*$2" "$1 $2" + done } -############################################################################### +##1############################################################################# # disableMap (map) # disables map in config file (any type) ############################################################################### @@ -368,9 +378,11 @@ #mapType=`awk '($1 == "MixedMap" || $1 == "Map") && $2 == map { print $1 }' \ # map=$1 <"$cnfFile" | sort | uniq` map=$1 - mapType=`egrep "^(MixedMap|Map)[ ]*$map( | |$)" "$cnfFile" | awk '{print $1}' | sort | uniq` - for type in $mapType; do - configReplace "$cnfFile" "^$type[ ]*$1" "#! $type $1" + for i in $cnfFiles ; do + mapType=`egrep "^(MixedMap|Map)[ ]*$map( | |$)" "$i" | awk '{print $1}' | sort | uniq` + for type in $mapType; do + configReplace "$i" "^$type[ ]*$1" "#! $type $1" + done done } @@ -576,18 +588,6 @@ locateMapMigrate "$@" return $? fi - - # The old version of the code; not used at the moment. - for map - do - file=`kpsewhich --format=map "$map"` - if test -f "$file"; then - verboseMsg "$progname: using map file \`$file'" - echo "$file" - else - warn "map file \`$map' not found." - fi - done } ############################################################################### @@ -669,7 +669,9 @@ $3 Please, consider removing this file. " - touch $mapWarnCalled + if [ ! -f "$mapWarnCalled" ]; then + mapWarnCalled=`mktemp /tmp/mapWarnCalled.XXXXXXXXXXXXX` + fi ;; manualResolve) warn " @@ -684,7 +686,9 @@ content of the used map file. Additionally, consider removing the obsolete file. " - touch $mapWarnCalled + if [ ! -f "$mapWarnCalled" ]; then + mapWarnCalled=`mktemp /tmp/mapWarnCalled.XXXXXXXXXXXXX` + fi ;; badLocation) map=$2 @@ -736,8 +740,18 @@ cleanup() { rc=$? - $needsCleanup && test -n "$tmpdir" && test -d "$tmpdir" \ - && { cd / && rm -rf "$tmpdir"; } + if test -n "$needsCleanup" ; then + test -n "$tmp1" && rm -f "$tmp1" + test -n "$tmp2" && rm -f "$tmp2" + test -n "$tmp3" && rm -f "$tmp3" + test -n "$tmp4" && rm -f "$tmp4" + test -n "$tmp5" && rm -rf "$tmp5" + test -n "$tmp6" && rm -f "$tmp6" + test -n "$tmp7" && rm -f "$tmp7" + test -n "$tmp8" && rm -f "$tmp8" + test -n "$mapWarnCalled" && rm -f "$mapWarnCalled" + test -n "$catMapsFailed" && rm -f "$catMapsFailed" + fi (exit $rc); exit $rc } @@ -751,7 +765,6 @@ trap 'cleanup' 1 2 3 7 13 15 needsCleanup=true - mkdir "$tmpdir" || abort "could not create directory \`$tmpdir'" } ############################################################################### @@ -849,12 +862,30 @@ ############################################################################### setupCfgFile() { - case "$cnfFile" in - "") cnfFile=`locateWeb2c $cnfFileShort` - case "$cnfFile" in - "") abort "config file $cnfFileShort not found" - esac;; - esac + if test -z "$cnfFiles"; then + if test -z "$cnfDir" ; then + tf=`kpsewhich -expand-var='$TEXFONTSCNF'` + if test -n "${tf}.d" && test ! -f "${tf}.d/$cnfFileShort"; then + test -d "${tf}.d" || $TEXMFMAIN/web2c/mktexdir "${tf}.d" 2>/dev/null + if test -d "${tf}.d" && test -w "${tf}.d"; then + rm -f "${tf}.d/$cnfFileShort" + cp $TEXMFMAIN/web2c/$cnfFileOriginal "${tf}.d/$cnfFileShort" + $TEXMFMAIN/web2c/mktexupd "${tf}.d" "$cnfFileShort" + fi + fi + else + tf="$cnfDir" + fi + + cnfFile="${tf}.d/$cnfFileShort" + if test -n "$cnfFile"; then + verboseMsg "using config file $cnfFile" + cnfFiles=`ls -1 ${tf}.d/*.cfg` + else + abort "config file $cnfFileShort not found" + fi + fi + setupLog } @@ -868,10 +899,10 @@ case $1 in --quiet|-q) verbose=false;; - --cnffile) - cfgparam=1; cnfFile=$2; shift;; - --cnffile=*) - cfgparam=1; cnfFile=`echo "$1" | sed 's/--cnffile=//'`;; + --cnfdir) + cfgparam=1; cnfDir=$2; shift;; + --cnfdir=*) + cfgparam=1; cnfDir=`echo "$1" | sed 's/--cnfdir=//'`;; --dvipsoutputdir) dvipsoutputdirparam=1; dvipsoutputdir=$2; shift;; --dvipsoutputdir=*) @@ -963,7 +994,7 @@ do test $# -gt 0 && shift; done if test -n "$cfgparam"; then - if test -z "$cnfFile" || test ! -f "$cnfFile"; then + if test -z "$cnfDir" || test ! -d "$cnfDir"; then abort "config file \`$cnfFileShort' not found" fi fi @@ -992,7 +1023,9 @@ ############################################################################### listMaps() { - egrep '^(#! *)?(Mixed)?Map' $cnfFile + for i in $cnfFiles ; do + egrep '^(#! *)?(Mixed)?Map' $i + done } ############################################################################### @@ -1021,14 +1054,16 @@ ############################################################################### syncWithTrees() { - for i in `egrep '^(Mixed)?Map' "$cnfFile" | sed 's@.* @@'`; do - kpsewhich --format=map "$i" >/dev/null || echo "$i" - done > $tmp1 + for file in $cnfFiles; do + for i in `egrep '^(Mixed)?Map' "$file" | sed 's@.* @@'`; do + kpsewhich --format=map "$i" >/dev/null || echo "$i" + done > $tmp1 + done { sed 's@/@\\/@g; s@^@/^MixedMap[ ]*@; s@$@$/s/^/#! /@' <$tmp1 sed 's@/@\\/@g; s@^@/^Map[ ]*@; s@$@$/s/^/#! /@' <$tmp1 } > $tmp2 - sed -f $tmp2 "$cnfFile" > $tmp3 && cat $tmp3 > "$cnfFile" + sed -f $tmp2 "$cnfFiles" > $tmp3 && cat $tmp3 > "${cnfFileShort}.new" } ############################################################################### @@ -1084,7 +1119,7 @@ dvipsDownloadBase35=`cfgval dvipsDownloadBase35` pdftexDownloadBase14=`cfgval pdftexDownloadBase14` dvipdfmDownloadBase14=`cfgval dvipdfmDownloadBase14` - + # defaults test -z "$mode" && mode=URWkb test -z "$dvipsPreferOutline" && dvipsPreferOutline=true @@ -1142,7 +1177,7 @@ verboseMsg verboseMsg "$progname: Scanning for MixedMap entries:" - catMaps '^MixedMap' > $tmp1 || cleanup + catMaps '^MixedMap' > $tmp1 || { cleanup; } verboseMsg verboseMsg "$progname: Scanning for Map entries:" @@ -1160,6 +1195,7 @@ % Don't change this file directly. Edit texmf/web2c/$cnfFileShort % and run updmap to recreate this file. eof + done IFS=$OLDIFS @@ -1218,7 +1254,7 @@ | awk '{print $(NF-2), $(NF-1), $NF}' | verboseCat verboseMsg - if test -f $mapWarnCalled; then + if test -f "$mapWarnCalled"; then m=" !!! NOTICE: @@ -1246,6 +1282,7 @@ warn "$m" fi return 0 + } ############################################################################### @@ -1267,22 +1304,27 @@ verbose=true needsCleanup=false - cnfFileShort=updmap.cfg - cnfFile= - dvipsoutputdir=; pdftexoutputdir=; dvipdfmoutputdir= + cnfFileShort=00updmap.cfg + cnfFileOriginal=updmap.cfg + cnfFiles= + + tfdir=`kpsewhich -expand-var='$TEXFONTSCNF'` + dvipsoutputdir=$tfdir + pdftexoutputdir=$tfdir + dvipdfmoutputdir=$tfdir : ${TEXMFMAIN=`kpsewhich -var-value=TEXMFMAIN`} - tmpdir=${TMP-/tmp}/$progname.$$ - tmp1=$tmpdir/a - tmp2=$tmpdir/b - tmp3=$tmpdir/c - tmp4=$tmpdir/d - tmp5=$tmpdir/e - tmp6=$tmpdir/f - tmp7=$tmpdir/g - tmp8=$tmpdir/h - mapWarnCalled=$tmpdir/mapWarnCalled - catMapsFailed=$tmpdir/catMapsFailed + tmpdir="/tmp" + tmp1=`mktemp /tmp/updmap.XXXXXXXXXXXXX` + tmp2=`mktemp /tmp/updmap.XXXXXXXXXXXXX` + tmp3=`mktemp /tmp/updmap.XXXXXXXXXXXXX` + tmp4=`mktemp /tmp/updmap.XXXXXXXXXXXXX` + tmp5=`mktemp -d /tmp/updmap.XXXXXXXXXXXXX` + tmp6=`mktemp /tmp/updmap.XXXXXXXXXXXXX` + tmp7=`mktemp /tmp/updmap.XXXXXXXXXXXXX` + tmp8=`mktemp /tmp/updmap.XXXXXXXXXXXXX` + mapWarnCalled= + catMapsFailed= processOptions ${1+"$@"} @@ -1293,13 +1335,14 @@ setupCfgFile case "$cmd" in - listmaps) listMaps; (exit 0); exit;; + listmaps) listMaps; cleanup; (exit 0); exit;; listavailablemaps) listAvailableMaps; (exit 0); exit;; esac # keep a copy of config file, so that we can see if the file was modified setupTmpDir + if test -n "$cfgmaint"; then if test -z "$cfgparam"; then co=`$TEXMFMAIN/texconfig/tcfmgr --tmp $tmpdir --cmd co --file $cnfFileShort` @@ -1309,12 +1352,12 @@ verboseMsg "$progname: initial config file is \`$orig'" else verboseMsg "$progname: config file is \`$cnfFile'" - cp "$cnfFile" $tmp5 + cp "$cnfFiles" $tmp5 fi - + case "$cmd" in edit) - ${VISUAL-${EDITOR-vi}} $cnfFile;; + ${VISUAL-${EDITOR-vi}} $cnfFiles;; setoption) setOption "$setoptionOpt" "$setoptionVal";; enable) @@ -1336,8 +1379,15 @@ ;; esac else - cmp "$cnfFile" $tmp5 >/dev/null 2>&1 || unchanged=false + for i in $cnfFiles ; do + if cmp $i $tmp5/`basename $i` >/dev/null 2>&1; then + verboseMsg "$i unchanged." + else + unchanged=false + fi + done fi + case $unchanged in true) if $mkmapEnabled; then verboseMsg "$progname: configuration (updmap.cfg) unchanged. Map files will not be recreated."