#!/bin/sh
#
# This script is a part of ChiTeX
# By Hung-Yih Chen    
#           Last updated  Jan. 20, 2000
#
#                All rights preserved   
#
# This script is used to configure ChiTeX script files:
#     chitex, chitexdvi, chitexpsv, chilatex, chilatexb, chitran, chitranp
#     chitranu, xdvi, dvips
# or: used to make  file 'chitex.fdfile' which correponding to 'chitex.fdf' 
# and only with definion macros corr. to chineses fonts being reside
# or: used to make chinese fmt files
#
# Usage: chitexconfig -option sourcefile
#


gawkloc=`which gawk|grep ":"`
if test "$gawkloc" != ""; then
   gawkbin="awk"
else
   gawkbin="gawk"
fi

gawkbin="gawk"
export $gawkbin

SAVEPWD=`pwd`
menu () {
   clear
   echo " "; echo " "
   echo "  Usage: chitexconfig option "
   echo " "
   echo "  option are:"
   echo "  -scfile      To configure script files: chitex, chitexdvi, chitexpsv,"
   echo "               chitexpsv, chilatex, chilatexb, chitran and chitranp"
   echo "  -chitex.fdf  To update file 'chitex.fdfile' "
   echo "               'chitex.fdfile' is a chinese fonts' definition file"
   echo "               associate 'chitex.fdf'or 'chitexg.fdf' with fonts really"
   echo "               exist which are used at the time of compilation"
   echo "  -makefmt     To make chinese fmt files "
   echo " "
   exit
}

if test "$1" != "-scfile" -a "$1" != "-chitex.fdf" -a "$1" != "-makefmt"; then
   option="help"
fi

if test "$#" = "0" -o "$1" = "-help" -o "$option" = "help"; then
   menu
fi



TEXMF=`kpsexpand '$TEXMF'|cut -d! -f 3 `
VARTEXFONTS=`kpsexpand '$VARTEXFONTS' `
if test "$VARTEXFONTS" = ""; then
   VARTEXFONTS=`kpsexpand '$VARFONTS' `
   export VARTEXFONTS
else
   export VARTEXFONTS
fi
echo "yes" > tmp@

#$gawkbin -v texmfcnffile=$texmfcnffile '

texmfcnffile=`kpsexpand -w cnf texmf.cnf`
TEXMFCNF=`
$gawkbin  '
{texmfcnfloc=index(texmfcnffile,"/texmf.cnf")
 print substr(texmfcnffile,1,texmfcnfloc-1)
}' texmfcnffile=$texmfcnffile tmp@ `

echo $TEXMFCNF > tmp@
TEXMF=`
$gawkbin '
{
  inline=$0
  gsub(/web2c/,"",inline)
  inline=substr(inline,1,length(inline)-1)
  print inline
}' tmp@ `


##### find bindir #######

cd $SAVEPWD
if test -d .temp00$$;then
   rm -rf .temp00$$
fi
mkdir .temp00$$
cd .temp00$$
echo "yes" > tmp@

#$gawkbin -v latex=$latex '

latex=`which latex`
bindir=`
$gawkbin  '
BEGIN{}
{texloc=index(latex,"/latex")
 bindir=substr(latex,1,texloc-1)
 print bindir
}
END{} ' latex=$latex tmp@ `

echo "Wait!"

##### Find unix system name ######
unixname=`uname|$gawkbin '{print tolower($0)}' `
unixver=`uname -r|cut -d. -f 1`

if test "$unixname" = "sunos"; then
   if test "$unixver" = "5"; then
      unixname="solaris"
   fi
fi      


cd $SAVEPWD
/bin/rm -rf  .temp00$$


if test "$1" = "-scfile"; then
#PWDSAVE=`pwd`
mkdir temp.$$
cd temp.$$

echo "yes" > tmp@


for cmd in chitex chitexdvi chitexpsv chilatex chilatexb\
    chitran chitranp chitranu xdvi dvips
do
latexfold=`which $cmd`
latex=`basename $latexfold`
latexfoldchk=`which $cmd|grep ":"`
if test "$latexfoldchk" = ""; then
   latex=`basename $latexfold`
else
   latex=""
fi
if test "$latex" = ""; then
   latextmp=$bindir
else

#$gawkbin -v latex=$latex -v latexdir=$latexfold '

latextmp=`
$gawkbin  '
BEGIN{}
{texloc=index(latexdir,"/"latex)
 bindir=substr(latexdir,1,texloc-1)
 llen=length(bindir)
 if (substr(bindir,llen,1) == "/")
    {bindir=substr(bindir,1,llen-1)}
 print bindir
}
END{} ' latex=$latex latexdir=$latexfold tmp@ `
fi
   case "$cmd" in
   "chitex") chitexdir=$latextmp;;
   "chitexdvi") chitexdvidir=$latextmp;;
   "chitexpsv") chitexpsvdir=$latextmp;;
   "chilatex") chilatexdir=$latextmp;;
   "chilatexb") chilatexbdir=$latextmp;;
   "chitran") chitrandir=$latextmp;;
   "chitranp") chitranpdir=$latextmp;;
   "chitranu") chitranudir=$latextmp;;
   "xdvi") xdvidir=$latextmp;;
   "dvips") dvipsdir=$latextmp;;
   esac
done

echo "yes" > tmp@

for scname in $chitexdir/chitex $chitexdvidir/chitexdvi \
  $chitexpsvdir/chitexpsv $chilatexdir/chilatex \
  $chilatexbdir/chilatexb $chitrandir/chitran \
  $chitranpdir/chitranp $chitranudir/chitranu \
  $xdvidir/xdvi $dvipsdir/dvips $bindir/chitranc $bindir/chitranuc
do

#$gawkbin -v texmf=$TEXMF -v texmfcnf=$TEXMFCNF -v vartexfonts=$VARTEXFONTS \
#     -v unixname=$unixname '

scnamebase=`basename $scname`
$gawkbin '
{
 inline=$0
 gsub(" ","",inline)
 newchitranpos=index(inline,"newchitran=")
 texmfpos=index(inline,"TEXMF=")
 texmfcnfpos=index(inline,"TEXMFCNF=")
 varpos=index(inline,"VARTEXFONTS")
 searchtexmf=index(inline,"searchtexmf=")
 texmfprpos=index(inline,"TEXMF=`")
 texmfcnfprpos=index(inline,"TEXMFCNF=`")
 varprpos=index(inline,"VARTEXFONTS=`")
 exportpkinput=index(inline,"exportTTF2PKINPUTS")
 exportttfonts=index(inline,"exportTTFONTS")
 if (newchitranpos > 0 && unixname == "sunos")
    {print "#" inline > "chitex@"}

 if (texmfprpos > 0)
    {texmfpos=0}
 if (texmfcnfprpos > 0)
    {texmfcnfpos=0}

 if (varprpos > 0)
    {varpos=0}
 if (searchtexmf==0 && texmfpos !=1 && texmfcnfpos !=1 && varpos !=1 && \
                 exportttfonts!=1)
    { print $0 > "chitex@"}
 if (exportpkinput > 0)
    {print "export TTFONTS" > "chitex@"}

 if (searchtexmf > 0)
   {
    print "searchtexmf=\"n\"" > "chitex@"
    print "TEXMF=" texmf > "chitex@"
    print "VARTEXFONTS=" vartexfonts >"chitex@"
    print "TEXMFCNF=" texmfcnf > "chitex@"
   }
}' texmf=$TEXMF texmfcnf=$TEXMFCNF vartexfonts=$VARTEXFONTS \
 unixname=$unixname $scname

#echo "scname=$scname"

chmod +x chitex@
#mv -f chitex@ $scname
cp -f chitex@ $scname
/bin/rm -f chitex@


#mv -f temp.$$/chitex@ $scnamebase"@"
#mv -f chitex@ $scnamebase"@@"
done
cd $SAVEPWD


clear 
echo " "
echo " "
echo "         script files in $bindir : chitex, chitexdvi, chitexpsv,"
echo "         chilatex, xdvi, dvips "
echo "         chilatexb,chitran, chitranp, chitranu, "
echo "         chitranc, chitranuc have been configured"
echo "  "

/bin/rm -rf temp.$$
fi

if test "$1" = "-chitex.fdf"; then
##### Update chitex.fdfile #######

#chitexfdfile="chitex.fdf"
#if test -r $chitexfdfile; then
#  chitexfdf="y"
#fi


/bin/ls $TEXMF/fonts/chinese/ttf > ttffile
/bin/ls $VARTEXFONTS/ttf >> ttffile
#/bin/ls $VARTEXFONTS/type1/fonts >> ttffile

/bin/cp -f ttffile $VARTEXFONTS/ttf
chmod a+w $VARTEXFONTS/ttf/ttffile
ls -1 $VARTEXFONTS/type1/fonts > pfbfile@
/bin/rm -f ttffile

updatechitexfile () {
#pfbfiles=`ls -1 $VARTEXFONTS/type1/fonts`
#$gawkbin  '

#$gawkbin -v chitexfdf=$chitexfdf -v texmf=$TEXMF -v chitexfdfile=$chitexfdfile \
#     -v pfbfiles=$pfbfiles '

$gawkbin  '
BEGIN{
# if (chitexfdf == "y")
#    {chitexfdf=chitexfdfile}
# else
#    {chitexfdf=texmf "/tex/chinese/" chitexfdfile}
#
# while (getline inline < chitexfdf >0)
#   {++i
#    percent=index(inline,"%")
#    if (percent > 0)
#       {inline=substr(inline,1,percent-1)}
#    if (chitexfdfile=="chitex.fdf")
#       {choosepos=index(inline,"\\choosechfont")}
#    else
#       {choosepos=index(inline,"\\chooseGBfont")}
#
#    if (choosepos == 0 && inline != "")
#        {#print inline
#         wholeline[i]="@" inline}
#    else
#     {if (choosepos >0)
#      {
#       choosestr=substr(inline,choosepos,length(inline)-choosepos+1)
#       dblpos=index(choosestr,"}{")
#       remchoosestr=substr(choosestr,dblpos+2,length(choosestr)-dblpos-1)
#       br=index(remchoosestr,"}")
#       if (br >0)
#          {
#           extfile[i]=substr(remchoosestr,1,br-1)
#           pfbpos=index(extfile[i],"_pfb")
#           if (pfbpos >0)
#              {extfile[i]=substr(extfile[i],1,pfbpos-1)}
#           wholeline[i]=inline
#           print extfile[i] > "tmp@"
#          }
#      }
#     }
#   }
#  extfileno=i
#  close(chitexfdf)
#  i=0
#  while (getline infilename < "pfbfile@" >0)
#    {++i
#     cdot=index(infilename,"."); 
#     infilename=substr(infilename,1,cdot-3)
#     if (infilename != infilenamepre) 
#        {pfbfiles=pfbfiles " " infilename}
#     infilenamepre=infilename
#    }
}

{ 
if (NR==1)
{
 if (chitexfdf == "y")
    {chitexfdf=chitexfdfile}
 else
    {chitexfdf=texmf "/tex/chinese/" chitexfdfile}

 while (getline inline < chitexfdf >0)
   {++i
    percent=index(inline,"%")
    if (percent > 0)
       {inline=substr(inline,1,percent-1)}
    if (chitexfdfile=="chitex.fdf")
       {choosepos=index(inline,"\\choosechfont")}
    else
       {choosepos=index(inline,"\\chooseGBfont")}

    if (choosepos == 0 && inline != "")
        {#print inline
         wholeline[i]="@" inline}
    else
     {if (choosepos >0)
      {
       choosestr=substr(inline,choosepos,length(inline)-choosepos+1)
       dblpos=index(choosestr,"}{")
       remchoosestr=substr(choosestr,dblpos+2,length(choosestr)-dblpos-1)
       br=index(remchoosestr,"}")
       if (br >0)
          {
           extfile[i]=substr(remchoosestr,1,br-1)
           pfbpos=index(extfile[i],"_pfb")
           if (pfbpos >0)
              {extfile[i]=substr(extfile[i],1,pfbpos-1)}
           wholeline[i]=inline
           print extfile[i] > "tmp@"
          }
      }
     }
   }
  extfileno=i
  close(chitexfdf)
  i=0
  while (getline infilename < "pfbfile@" >0)
    {++i
     cdot=index(infilename,"."); 
     infilename=substr(infilename,1,cdot-3)
     if (infilename != infilenamepre) 
        {pfbfiles=pfbfiles " " infilename}
     infilenamepre=infilename
    }
} #  end of if (NR==1)



  if ($2 != "")
     { 
       reserve="n"
       atpos=index($1,"@")
       fname=substr($1,1,atpos-1)
#       if (fname=="ntukai"||fname=="ntuli"||fname=="ntufs"||fname=="ntumr" \
#           ||fname=="ntu_kai"||fname=="ntu_li"||fname=="ntu_fs" \
#           ||fname=="ntu_mr"
#           ||fname=="moesung"||fname=="moekai" \
#           ||fname=="moe_sung"||fname=="moe_kai"

        if (fname=="nuwpstj" \
           ||fname=="bsmi00lpb"||fname=="bsmi00lpi"||fname=="bsmi00lpbi" \
           ||fname=="nbkai00mp"||fname=="nbsmi00lp"||fname=="nuwcxmf" \
           ||fname=="bkai00mp"||fname=="bsmi00lp"||fname=="uwcxmf" \
           ||fname=="Cyberbit"||fname=="cyberbit" \
           ||fname=="nuwpstj"||fname=="ngkai00mp"||fname=="gkai00mp" \
           ||fname=="ngbsn00lp"||fname=="gbsn00lp"||fname=="simfang" \
           ||fname=="simhei"||fname=="simkai"||fname=="simsun" \
           ||fname=="moe_kaib"||fname=="moe_kaii"||fname=="moe_kaibi" \
           ||fname=="moe_sungb"||fname=="moe_sungi"||fname=="moe_sungbi" \
           ||fname=="bsmi00lpb"||fname=="bsmi00lpi"||fname=="bsmi00lpbi" \
           ||fname=="bkai00mpb"||fname=="bkai00mpi"||fname=="bkai00mpbi" \
           ||fname=="kaiub"||fname=="kaiui"||fname=="kaiubi" \
           ||fname=="ntuk"||fname=="ntuf"||fname=="ntul" \
           ||fname=="ntur"||fname=="moes"||fname=="moek" \
           ||fname=="mingliub"||fname=="mingliui"||fname=="mingliubi" \
           )
        {reserve="y"}

#if (fname=="moe_sungb")
#   {print "moe_sungb"}

           if (getline tmp < $2 >0||reserve=="y")
             {++k
#              atpos=index($1,"@")
#              ttfname[k]=substr($1,1,atpos-1)
              ttfname[k]=fname
              print ttfname[k] > "tmp2@"
             }
           else
             {
              filename=$1
              atpos=index(filename,"@")
              if (atpos > 0)
              {
              filename=substr(filename,1,atpos-1)"_pfb"
              if (index(pfbfiles,filename) > 0)
                {++k
                 ttfname[k]=substr(filename,1,length(filename)-4)
                 print ttfname[k] > "tmp2@"
                }
              }
             }
      ttfnameno=k
     }
}
END{i=1
   for (i;i<=extfileno;i++)
       {k=1;meet=0
        if (index(wholeline[i],"@") == 1 || index(wholeline[i],"\\input")>0)
           {outline=substr(wholeline[i],2,length(wholeline[i])-1)
            gsub("
","",outline)
            gsub(" ","",outline)
            if (outline !="")
            {if (index(outline,"\\inputchitexb.fdf")>0)
                {print "\\input chitexb.fdf" > "chitex.fdfile@"}
             else
                {print outline > "chitex.fdfile@"}
            }
            continue
           }
        for (k;k<=ttfnameno;k++)
          {
           if (extfile[i] == ttfname[k])
              {wline=wholeline[i];meet=1}
           else
              {firstch=substr(extfile[i],1,1)
               nonextfile=substr(extfile[i],2,length(extfile[i])-1)
               if (firstch=="n" && nonextfile==ttfname[k])
                  {wline=wholeline[i];meet=1}
              }
          }
          {if (meet == 1){
              gsub(" ","",wline)
              if (wline !="" && length(wline)!=0)
                 {print wline>"chitex.fdfile@"}
              }}
       }

}' chitexfdf=$chitexfdf texmf=$TEXMF chitexfdfile=$chitexfdfile pfbfiles=$pfbfiles $TEXMF/ttfonts.map

#} ' $TEXMF/ttfonts.map

#if test "$chitexfdf" != "y"; then
#   mv -f chitex.fdfile@ $TEXMF/tex/chitex/chitex.fdfile
#fi
}


chitexfdfile="chitex.fdf"
if test -s $chitexfdfile; then
  chitexfdf=`echo "y"`
fi

updatechitexfile

#fi # -scfile




if test "$chitexfdf" != "y"; then
   cp -f chitex.fdfile@ chitex.fdfile
##   if test "$LOGNAME" = "root"; then
##      mv chitex.fdfile@ $TEXMF/tex/chinese/chitex.fdfile 2> /dev/null
      cp -f chitex.fdfile@ $TEXMF/tex/chinese/chitex.fdfile 2> /dev/null
##   fi
else
   mv chitex.fdfile@ chitex.fdfile
   /bin/rm -f chitex.fdfile@
fi



chitexfdfile="chitexg.fdf"
if test -s $chitexfdfile; then
  chitexfdf=`echo "y"`
fi

updatechitexfile

if test "$chitexfdf" != "y"; then
   cp -f chitex.fdfile@ chitexg.fdfile
#   if test "$LOGNAME" = "root"; then
#      mv chitex.fdfile@ $TEXMF/tex/chinese/chitexg.fdfile 2> /dev/null
      cp -f chitex.fdfile@ $TEXMF/tex/chinese/chitexg.fdfile 2> /dev/null
#   fi
 else
   mv chitex.fdfile@ chitexg.fdfile
   /bin/rm -f chitex.fdfile@
fi


clear
echo " "
echo " "
echo "         'chitex.fdfile' in $TEXMF/tex/chinese"
echo "         or in ./ has been updated "
echo " "


fi


##### To make chinese fmt files ######
if test "$1" = "-makefmt"; then
   chmkfmtp
   chmkfmt
   chmkfmtp
   chmkfmt2

fmt=`kpsexpand '$WEB2C' `
if test "$fmt" = ""; then
   fmt=`kpsexpand '$TEXFORMATS' `
fi

#fmt=`
#   $gawkbin -v fmt=$fmt '

fmt=`
$gawkbin  '
BEGIN{}
{
 exc=index(fmt,"!!")
 if (exc > 0)
    {fmt=substr(fmt,exc+2,length(fmt)-exc-1)}
 print fmt   
}
END{} ' fmt=$fmt tmp@ `

#/bin/rm -f *@
#mv -f *.fmt $fmt
cp -f *.fmt $fmt
/bin/rm -f *.fmt


clear
echo " "
echo " "
echo "   chitex.fmt, chitexl.fmt, chitexg.fmt, chitexlg.fmt,"
echo "   pdfchitex.fmt, pdfchitexl.fmt,"
echo "   pdfchitexg.fmt, pdfchitexlg.fmt,"
echo "   have been made and put in $fmt "
echo " "

fi

/bin/rm -f tmp@
exit


