#!/bin/sh
#
# This shell script checks the X-Midas diskunx for consitency with installed driver
#
#  Usage: chkramaux pathToDiskCfg.cfg 
#
fcfg=$1
fcfgo=${fcfg}.orig
fcfgt=/tmp/autodiskunx.cfg
fdrv=/proc/driver/icepic

if [ -e $fcfg ]; then
  echo "Diskunx file=$fcfg exists. Executing autoconfig."
  rm -f $fcfgt
  while read line
  do 
    isram=`echo $line | grep -v "!" | awk '{print $2}'`
    if [ "$isram" = "RAM" ]; then
      dir=`echo $line | awk '{print $1}'`
      dev=`echo $line | awk '{print $3}'`
      ramst=`echo $line | awk '{print $4}' | sed s/M//`
      ramsz=`echo $line | awk '{print $5}' | sed s/M//`
      isrn=`echo $dev | grep "iceram[0-9]"`
      if [ "$isrn" != "" ]; then
        devno=`echo -n $dev | tail -c 1`
	rnode=`cat $fdrv | grep Node#$devno`
        rs=`echo $rnode | awk '{print $5}' | sed s/RS=//`
        rd=`echo $rnode | awk '{print $6}' | sed s/RD=//`
      else
        rs=`cat $fdrv | grep RamStart | awk '{print $3}'`
        rd=`cat $fdrv | grep RamDisk  | awk '{print $3}'`
      fi
      #echo "Change $dir on $dev from $ramst:$ramsz to $rs:$rd"
      line="$dir RAM $dev ${rs}M ${rd}M"
    fi
    echo $line >> $fcfgt
  done < $fcfg
  differ=`diff -qBw $fcfg $fcfgt`
  if [ "$differ" != "" ]; then
    echo "Diskunx file=$fcfg differs from driver"
    ra=`cat $fdrv | grep RamAlloc | awk '{print $3}'`
    if [ $ra != 0 ]; then
      if [ ! -f $fcfgo ]; then 
        echo "Copying $fcfg to $fcfgo"
        cp $fcfg $fcfgo
      fi
      echo "Modifying $fcfg for ram allocation mode=$ra"
      cp -f $fcfgt $fcfg
    fi
  fi
  rm -f $fcfgt
else
  echo "Diskunx file=$fcfg does not exist. Skipping autoconfig."
fi

exit 0
