#! /bin/sh

alcbanner "dtx2dly" "1.00"  "Translator dtx to dly file format" "1999"

if test \( $# = 0 \)
then
  echo "dtx2dly : missing filename ................"
  echo "usage : dtx2dly dtxfile (without extension)"
  exit
fi

if test \( $# != 1 \)
then
  echo "dtx2dly : too many args ..................."
  echo "usage : dtx2dly dtxfile (without extension)"
  exit
fi

INPUT_DTXFILE=$1.dtx
OUTPUT_DLYFILE=$1.dly

if test \( -f $INPUT_DTXFILE \)
then

sed -e "s/;/ ;/g" -e "s/(/( /g" $INPUT_DTXFILE | \
gawk \
"BEGIN { \
       } \
{ \
if (\$1 == \"H\") \
  { \
  } \
else \
  { \
  if ((\$1 == \"C\") || (\$1 == \"L\") || (\$1 == \"S\") || (\$1 == \"Q\")) \
    { \
    Tab_Sig   [\$1\$3] = \$4; \
    Tab_Delay [\$1\$3] = 0; \
    Nbr_Delay [\$1\$3] = 0; \
    Max_Delay [\$1\$3] = 0; \
    Min_Delay [\$1\$3] = 0; \
    } \
  else \
    { \
    if ((\$1 == \"E\") || (\$1 == \"F\") || (\$1 == \"D\")) \
      { \
      Sig = \$4\$5; \
      } \
    else \
      { \
      if (\$1 == \"(\") \
        { \
        i = 2; \
        while (\$i != \"MAX\") \
          i ++; \
        Tab_Delay [Sig] += \$(i+1); \
        Nbr_Delay [Sig] ++; \
        if (\$(i+1) > Max_Delay [Sig]) \
          Max_Delay [Sig] = \$(i+1); \
        if ((Min_Delay [Sig] == 0) || (\$(i+1) < Min_Delay [Sig])) \
          Min_Delay [Sig] = \$(i+1); \
        } \
      } \
    } \
  } \
} \
END { \
for (i in Tab_Sig) \
  { \
  if (Nbr_Delay [i] != 0) \
    { \
    printf (\"%s : %d : %d : %d : %d\\n\", Tab_Sig [i], \
            Tab_Delay [i] / Nbr_Delay [i], Min_Delay [i], \
            Max_Delay [i], Nbr_Delay [i]); \
    } \
  else \
    { \
    printf (\"%s : %d : %d : %d : %d\\n\", Tab_Sig [i], 0, 0, 0, 0); \
    } \
  } \
}" | \
sed -e "s/\[/ /g" -e "s/\]/ /g" > $OUTPUT_DLYFILE

if test \( -f $OUTPUT_DLYFILE \)
then
  echo "dtx2dly : '$OUTPUT_DLYFILE' generated......................"
else
  echo "dtx2dly : no output file generated......................"
fi

else
  echo "dtx2dly : '$INPUT_DTXFILE' no such file or directory"
fi

