#!/bin/ksh
#begin
#
# odbclean removes all non-associated files from database directory
#
# odbclean [-f]   : force to clean objects, .c, .h-files etc., but retain .sql
#          [-F]   ; the same as -f
#          [-i]   : ask before removing anything (the default)
#          [-c]   : retain other files like .c, .h, .jpg, .rpt, .ddl_, .info etc. (by default: also removed)
#          [file(s)]
#
# Author: Sami Saarinen, ECMWF, 03-Jan-2006 : Initial version
#
#end
#-----------------------------------------------------------------------

set +xv
set -eu

cmd=$(\cd $(dirname $0); echo $(pwd))/$(basename $0)

FLAGS=cfFi

enforce=0
retain=0

abort=no
while getopts ${FLAGS} i
do
  case $i in
  c)	retain=1;;
  f|F)	enforce=1;;
  i)	enforce=0;;
  *)	abort=yes; break;;
  esac
done

if [[ $abort = yes ]] ; then
  awk '/#begin/,/#end/' $cmd | egrep -v '#(begin|end)' | sed 's/^#//' >&2
  exit 1
fi

shift $(expr $OPTIND - 1)

if [[ $# -gt 0 ]] ; then
  files=$*
else
  files=""
fi

if [[ $enforce -eq 1 ]] ; then
  alias rmfile='\rm -f'
else
  alias rmfile='\rm -i'
fi

for f in $(ls -C1 *.o *.a *.so *.x *.lst fort.0 *~ core core.* */core */core.* $files 2>/dev/null || :)
do
  rmfile $f 2>/dev/null </dev/null || :
done

if [[ $retain -eq 0 ]] ; then
  for f in $(ls -C1 *.h *.c *.rpt *.jpg *.png *.obs *.obs.gz *.ps *.ddl_ *.info 2>/dev/null || :)
  do
    rmfile $f 2>/dev/null </dev/null || :
  done
fi


