# BASH functions

delete_line_from () {
  if ([ ! -z $1 ] || [ ! -z $2 ]); then
    ret=0
    line=`grep -n "^"$1"*" $2 | awk -F : '{ print $1 }'`
    log msg $LOG Deleting line $line from $2
    sed -i".TMP" ""$line"d" $2
    if [ $? -ne 0 ]; then
      log err $LOG Function delete_line_from could not delete $1, line $line from $2 with error: $?.
      ret=1
    fi
  else
    log err $LOG Function delete_line_from missing argument.
    ret=1
  fi
  return $ret
}

file_readable () {
  #TODO check if argument $1 exists
  file=$@
  if [ ! -e $file ]; then
    log err $LOG File non-existant: $file
    exit 1
  elif [ ! -r $file ]; then
    log err $LOG File unreadable: $file
    exit 2
  fi
  return 0
}

file_writable () {
  #TODO check if argument $1 exists
  file=$1
  if [ ! -e $file ]; then
    echo "$file: does not exist"
    exit 1
  elif [ ! -w $file ]; then
    echo "$file: unwritable"
    exit 2
  fi
  return 0
}

verify_root () {
  echo ""
  echo -n "Verifying that we are root......................................... "
  if [ `whoami` != "root" ]; then
    echo "WARNING"
    echo "You must be root to run the `basename $0` script."
    exit 1
  else
    echo "PASSED"
  fi
  echo ""
  return 0
}

fedora_version () {
  fedora_ver=`cat /etc/issue | grep Fedora | awk '{ print $2}'`
  if [ "$fedora_ver" = "Core" ]; then
    fedora_ver=`cat /etc/issue | grep Fedora | awk '{ print $4}'`
  else
    fedora_ver=`cat /etc/issue | grep Fedora | awk '{ print $3}'`
  fi
  return $fedora_ver
}

kernel_bit () {
  if uname -a|grep x86_64 &> /dev/null
  then
    kernelbit=64
  else
    kernelbit=32
  fi
  return $kernelbit
}

log () {
  #TODO check if argument $1 & $2 exists
  msg_type=$1
  logfile=$2
  shift 2
  log_message=$@
  case "$msg_type" in
    err)
      echo "`date +%F" "%T`: `basename $0`: ERROR: $log_message" >> $logfile
    ;;
    warn)
      echo "`date +%F" "%T`: `basename $0`: WARNING: $log_message" >> $logfile
    ;;
    msg)
      echo "`date +%F" "%T`: `basename $0`: $log_message" >> $logfile
    ;;
    dbg)
      echo "`date +%F" "%T`: `basename $0`: DEBUG: $log_message" >> $logfile
    ;;
    *)
      echo "`date +%F" "%T`: `basename $0`: $msg_type: $log_message" >> $logfile
    ;;
  esac
  tail -1 $logfile
}

create_backup () {
  file=$@
  ret=0
  log msg $LOG Creating backup of $@
  /bin/cp $file $file.`date +%Y%m%d-%H%M%S`.lfstg.bak
  if [ $? -ne 0 ]; then
    log err $LOG Backup of $@ failed with error: $?.
    ret=1
  fi
  return $ret
}

missing_argument () {
  print_help
  echo -e "\nMissing argument for: $1\n"
  exit 1
}

confirm () {
  confirm_msg=$@
  echo ""
  log msg $LOG "Ask user: $confirm_msg (y/n)?"
  echo ""
  echo -n "$confirm_msg (y/n)? "
  read -n 1 continue
  echo ""
  if [ "$continue" == "y" ] || [ "$continue" == "Y" ];
  then
    ret=0
  else
    ret=1
  fi
  echo ""
  log msg $LOG "User responded: $continue."
  echo ""
  return $ret
}

print_asterisks () {
  echo "************************************************************************"
  return 0
}