#!/bin/sh

echo "yes" > tmp@
rm -f tmplog@

###### Test 'gawk' ######
gawkstra=`find /usr/bin  -name 'gawk' -print`
gawkstrb=`find /bin  -name 'gawk' -print`
gawkstrc=`find /usr/local/bin -name 'gawk' -print`

if test "$gawkstra" = "" -a "$gawkstrb" = "" -a "$gawkstrc" = ""; then
   alias gawk='awk'
fi
############


gawk  -v filea=$filea '
BEGIN{FS="\\^\\^"
   chtab["80"]="5c";chtab["81"]="61";chtab["82"]="62";chtab["83"]="63";
   chtab["84"]="64";chtab["85"]="65";chtab["86"]="66";chtab["87"]="67";
   chtab["88"]="68";chtab["89"]="69"
   chtab["8a"]="6a";chtab["8b"]="6b";chtab["8c"]="6c";chtab["8d"]="6d";
   chtab["8e"]="6e";chtab["8f"]="6f";

   chtab["90"]="70";chtab["91"]="71";chtab["92"]="72";chtab["93"]="73";
   chtab["94"]="74";chtab["95"]="75";chtab["96"]="76";chtab["97"]="77";
   chtab["98"]="78";chtab["99"]="79"
   chtab["9a"]="7a";chtab["9b"]="7b";chtab["9c"]="7c";chtab["9d"]="7d"

   ctab["@"]="\\x40";ctab["A"]="\\x41";ctab["B"]="\\x42";ctab["C"]="\\x43";
   ctab["D"]="\\x44";ctab["E"]="\\x45";ctab["F"]="\\x46";ctab["G"]="\\x47";
   ctab["H"]="\\x48";ctab["I"]="\\x49";ctab["J"]="\\x4a";ctab["K"]="\\x4b";
   ctab["L"]="\\x4c";ctab["M"]="\\x4d";ctab["N"]="\\x4e";ctab["O"]="\\x4f";
   ctab["P"]="\\x50";ctab["Q"]="\\x51";ctab["R"]="\\x52";ctab["S"]="\\x53";
   ctab["T"]="\\x54"
   ctab["U"]="\\x55";ctab["V"]="\\x56";ctab["W"]="\\x57";ctab["X"]="\\x58";
   ctab["Y"]="\\x59";ctab["Z"]="\\x5a";ctab["["]="\\x5b";ctab["\\"]="\\x5c";
   ctab["]"]="\\x5d";ctab["^"]="\\x5e";ctab["_"]="\\x5f";ctab["`"]="\\x60"

  i=0
  while (getline inl < "ch@label" > 0)
        {++i
         per=index(inl,"%")
         enlabel[i]=substr(inl,1,per-1)
         chlabel[i]=substr(inl,per+1,length(inl)-per)
        }
  fileno=i
}
{

 gsub("\47","\\47",inline)
 str=""
 fnum=2
 if (NF > 1)
 {while (fnum <= NF)
       {#print "$" fnum "=" $fnum
        thr=substr($fnum,3,1)
        fou=substr($fnum,4,1)
        ftwo=substr($fnum,1,2)
        chmore=""
#        fno=fnum % 2
#        if (fno == 1)
         fremain=substr($fnum,4,length($fnum)-3)
          if (ftwo < "80" || ftwo > "9d")
             { }
          else
             {ftwo=chtab[ftwo]}

            {
             if (ftwo != "^.")
               {str=str "\\x" ftwo}
            }

          if (thr != "" && thr !=" " && thr != "^")
          {
            {if (thr < "@" || thr > "`")
                { }
             else
                {thr=ctab[thr]}
            }
            str=str thr fremain
          }

        fnum=fnum+1
       }

    outline=$1 str
 }
  else
 {#print $0 > "temp@"
  outline=$0}

{ j = 1
  for (j; j<=fileno; j++)
      {ll1=index(outline,enlabel[j])
       if (ll1 > 0)
          {gsub(enlabel[j],chlabel[j],outline)}
      }
}

  gsub("\47","\\47",outline)

   if (outlinelast == "cr")
      {if (substr(outline,1,2) == "? ")
          {outline=substr(outline,3,length(outline)-2)
           outlinelast="" 
          }
      }    

   if (outline != "" || nulline == "n")    
      {system("gawk \47 " "{print" "\"" outline "\"" "} \47 tmp@")
       system("gawk \47 " "{print" "\"" outline "\"" " >> \"tmplog@\"} \47 tmp@")
       }

   llen=length(outline)

   nulline="y"
   for (i=1; i<=llen; i++)
       {ch=substr(outline,i,1)
        if (ch != " " && i < 5 )
           {nulline="n"
            break}
        }


    if (nulline == "y")
    {
          {ch=substr(loutline,1,2)}
       if (ch != "l.")
          {nulline="n"}
     }      

   if (nulline == "y") 
      { 
       #printf "? "
          {system("gawk \47 " "{printf" "\"?"  "\"" "} \47 tmp@")}
           print "?" >> "tmplog@"
       outlinelast="cr"
       }

    
   loutline=outline   

}
END{
system("mv tmplog@ " filea".log")
}' $1

exit

