#!/bin/ksh
#set -x

#Variable to hold Program Directory
PROG_DIR=
USE_NC=0

# getdir: identify the path to the program and set
#         it as PROG_DIR
# Params: program-name and $0 from call
getdir() {
  prog="$1"
  call="$2"
  if [ -z "$prog" ]
  then
    return
  fi
  #   newdir=${0%/*}
  newdir=`echo "${call}"|sed "s/${prog}$//"`
  if [ -z "$newdir" ]
  then
    whichstr=`which ${prog}|grep -v "no ${prog}"`
    newdir=`echo "$whichstr"|sed "s/${prog}$//"`
    if [ -z "$newdir" ]
    then
      return
    fi
  fi
  if [ -d "$newdir" ]
  then
    PROG_DIR="$newdir"
  fi
}

usage () {
  echo "Usage: ddfcomp <path to the specification file> <further parameters will be ignored>"
}

if [ $# -lt 1 ]
then
 usage
 exit 1
fi

curdir=`pwd`
if [ -z "$BOOM_AGENT_PORT" ]
then
  if [ -z "$BOOM_ROOT" ]
  then
    echo "To avoid negative performance impacts please set the BOOM_ROOT variable"
    getdir ddfcomp "$0"
    if [ -z "$PROG_DIR" ]
    then
      echo "Failed to identify the path for BOOM_ROOT."
      echo "Please set the BOOM_ROOT variable to the Agent directory!"
      echo "The script continues with default values."
      PORT=23021
    else
      PORT=`cd "${PROG_DIR}"; grep "^AGENT_PORT.*" ../conf/agent.conf | cut -d"=" -f2`
    fi
  else
    PORT=`cd "${BOOM_ROOT}"; grep "^AGENT_PORT.*" ./conf/agent.conf | cut -d"=" -f2`
  fi
else
  PORT="$BOOM_AGENT_PORT"
fi

if [ -z "$PORT" ]; then
  PORT=23021
fi

if [ -f netcat.sh ]; then
 . ./netcat.sh
fi

if [ -f "${curdir}/${1}" ]; then
  SUBMITSTR="${curdir}/${1}"
else
  SUBMITSTR="${1}"
fi

if [ "$USE_NC" -eq 1 ]; then
  RETV=$(echo "O${SUBMITSTR}" | nc 127.0.0.1 ${PORT})
else
  if [ "$USE_NC" -eq 2 ]; then
    RETV=$(echo "O${SUBMITSTR}" | netcat 127.0.0.1 ${PORT})
  else
#   use telnet
#   Fetch the leading lines from telnet client and the result
#
    osname=`uname`
    case "$osname" in
      HP*)
        {   telnet 127.0.0.1 ${PORT} 2>/dev/null <<EOF
O${SUBMITSTR}\n
EOF
        } |  while read -r RETV; do echo $RETV >/dev/null;done
        ;;
      *)
        telnet 2>/dev/null |&
        print -p "o 127.0.0.1 ${PORT}"
        print -p "O${SUBMITSTR}\n"
        sleep 1
        print -p "quit" 2>/dev/null
        while read -p RETV; do
          RETVOLD=$RETV
          echo $RETV >/dev/null
        done
        ;;
    esac
  fi
fi

if [ "$RETV" != "T" -a "$RETVOLD" != "TConnection closed." ]
then
  echo "Error creating the Performance data specification"
  usage
  exit 2
else
  echo "OK"
fi
exit 0

