#!/bin/sh
#
# hlambda: written by koaunghi.un@student.uni-tuebingen.de <06/30/1999>
#
# converts hexadecimal notation of TeX's output to Extended Unix Code.
#
# This script will probably not work for outputs, which contain
#	hexadecimal notations of other languages than Hangul.
# This script assumes, the following GNU tools are accessible on the system:
#	basename, test, rm, awk, mv
#

CONVERTDIR=convert.$$
IN=`basename $1`
OUT=${IN%.tex}

# This is for auctex under Mule (and/or Hanemacs).
OUT=${OUT%.tex\}}
OUT=${OUT##*\{}

trap 'test -d ${CONVERTDIR} && rm -fr ${CONVERTDIR} ; exit 0' 0 1 2 15

function hex2euc () {
awk 'BEGIN { RS=" "; FS="\^"; hex="0123456789abcdef"; }\
  { if(NR>1) printf(" "); last=""; printf("%s",$1); brk="";\
    for (i=2;i<=NF;i++) {\
      if($i=="\n") { $i=""; brk="\n"; }\
      if ($(i-1)=="" && length($i)!=0) { n=1;\
	if(substr($i,n,1)=="\n") { n++; brk="\n"; }\
	first=index(hex,substr($i,n,1))-1;\
	if(first>9) { n++;\
	  if(substr($i,n,1)=="\n") { n++; brk="\n"; }\
	  second=index(hex,substr($i,n,1))-1; n++;\
	  if(substr($i,n,1)=="\n") { n++; brk="\n"; }\
	  if(last=="") last=sprintf("%c", first*16+second);\
	  else {\
	    printf("%c%c%s%s",last,first*16+second,brk,substr($i,n));\
	    last=""; brk="";\
	  }\
	}\
	else { printf("%s%c%c%s",brk,FS,FS,$i); brk="" }\
      }\
      else printf("%s",$i);\
    }\
  fflush();\
  }' $1 ;
}

lambda $1 | hex2euc

if test $? -eq 0 ; then
test -d ${CONVERTDIR} || mkdir ${CONVERTDIR}
for i in aux toc lof lot idx glo ; do
  test -f ${OUT}.${i} && echo -n "Converting ${OUT}.${i}..." && \
  hex2euc ${OUT}.${i} > ${CONVERTDIR}/${OUT}.$i && \
  mv -f ${CONVERTDIR}/${OUT}.${i} ${OUT}.${i} && echo "done."
done
else echo
fi

exit 0
