#!/bin/bash

privconf="/etc/utcs/priv.cfg"
pciconf="/etc/utcs/pci.cfg"
usbconf="/etc/utcs/usb.cfg"
toolsdir="/etc/utcs/tools"
plugindir="/etc/utcs/plugin"

min_wildcard_len=4

version="2.0.1"

print_help()
{
	echo "utcs [-opt] [value]..."
	echo ${version}
	echo "-l, --logdir=	log directory userdefined, default: /var/log/utcs/"
	echo "-h, --help	print this message"
}

parse_input_param() {
	ARGS=$(getopt --option l:h --long installer-init,installer-target,first-boot,logdir:,help -- "$@")
	eval set -- "${ARGS}"
	while true
	do
		case "$1" in
			--installer-init|--installer-target|--first-boot)
				step=${1}
				shift 1
				;;
			-l|--logdir)
				logdir=${2}
				shift 2
				;;
			-h|--help)
				print_help
				exit
				;;
			--)
				shift
				break
				;;
		esac
	done
}

logger_start()
{
	logdir=${logdir:-"/var/log/utcs/"}
	[[ -d ${logdir} ]] || mkdir ${logdir} || exit

	logfile_1="${logdir}/utcs-callback.log"
	logfile_2="${logdir}/utcs-callback.log.old"
	resfile="${logdir}/utcs-exec-res.txt"

	[[ -f ${logfile_1} ]] && mv ${logfile_1} ${logfile_2}
	exec 9<> ${logfile_1} 2>&9 1>&9
	[[ -f ${resfile} ]] && rm ${resfile}
	exec 8<> ${resfile}
}

logger_stop()
{
	exec 8>&-
	exec 9>&-
}

logger()
{
    [[ $# -ne 2 ]] && return
    base_info=$1
    if [[ $2 -eq 0 ]]; then
        retstr="success"
    else
        retstr="failed"
    fi
    echo "[ $base_info ] return [ $retstr ]" >&8
}

if [ "$(whoami)" != "root" ]; then
    echo "You must be root to run this script.";
    exit
fi

step=""
OPWD=$(pwd)
for script in ${toolsdir}/*; do
	. $script
done

parse_input_param $@
logger_start
do_all_fix $pciconf
do_all_fix $usbconf
fix_nvidia_gpudrv "${step}"
logger_stop
cd ${OPWD}
