#!/bin/sh

LC_NUMERIC=en_US.ISO8859-1
export LC_NUMERIC

files="None"
while [ x"$1" != x ]; do
    case $1 in
	-file)
            files="$2"
	    shift
	    shift
	    continue;;
	*)  
            break;;
    esac
done

if [ x"$1" = xgnuplot ]; then

  if [ x`which gnuplot 2>/dev/null` = x ]; then
    echo "ERROR: gnuplot not available"
    exit 1
  fi
  AWK '
  BEGIN{
    mode=1
    initparam=0
    counts=0
  }
  mode==1{
    if( initparam == 0 ){
      if( files == "None" ){
        files=""
        dofile="true"
      }
      else{
        dofile="false"
      }
      initparam=1
    }
    if( dofile == "true" && $1 == "#" && $2 == "data" && $3 == "file:" ){
      if( files != "" ) files = files ","
      files = files $4
    }
    else if( $1 == "#" && $2 == "column:" ){
      column = $3
    }
    else if( $1 == "------" ){
      head = sprintf("set nokey; set title \"funhist(%s)\"\n", files)
      head = head sprintf("set xlabel \"%s_bin\"\n", column)
      head = head sprintf("set ylabel \"value\"\n")
      head = head sprintf("plot \"-\" with boxes\n")
      mode = 2
      next
    }
  }
  mode==2{
    if( NF == 4 ){
      if( $4 > $3 ){
        data = data sprintf("%.8f %s %s\n", ($3+$4)/2, $2, ($4-$3))
      }
      else{
        data = data sprintf("%.8f %s 1\n", ($3+$4)/2, $2)
      }
      counts += $2
    }
    else{
     mode = 3
    }
  }
  END{
    if( counts == 0 ){
      exit 0
    }
    else{
      print head
      print data
    }
  }
  ' files="$files" | gnuplot -persist - 1>/dev/null 2>&1
  exit 0

elif [ x"$1" = xds9 ]; then

  AWK '
  BEGIN{
    mode=1
    initparam=0
  }
  mode==1{
    if( initparam == 0 ){
      if( files == "None" ){
        files=""
        dofile="true"
      }
      else{
        dofile="false"
      }
      initparam=1
    }
    if( dofile == "true" && $1 == "#" && $2 == "data" && $3 == "file:" ){
      if( files != "" ) files = files ","
      files = files $4
    }
    else if( $1 == "#" && $2 == "column:" ){
      column = $3
    }
    else if( $1 == "------" ){
      ds9header="'"${DS9_PLOT_HEADER}"'"
      if( ds9header != "" ) {
	  printf "%s 2\n", ds9header
      }
      else{
          printf "funhist(%s) %s_bin value 2\n", files, column
      }
      mode = 2
      next
    }
  }
  mode==2{
    if( NF == 4 ){
      printf "%.8f %s\n", ($3+$4)/2, $2
    }
    else{
      mode = 3
    }
  }
  ' files="$files"
  exit 0
else
  
  echo "ERROR: unknown argument: " $1
  echo "funhist ... | funhist.plot [ds9|gnuplot]"
  exit 1

fi
