#!/bin/sh
# Author: B. Alcock <alcockba@boat.bt.com>

getnum(){
	echo "$1: \c"
	read TMP_STR
	export TMP_STR
	if [ "$TMP_STR" = "" ] ; then
		false
	else
		true
	fi
}

chk_size(){
	LEN=`echo "$1\c" | cksum | cut -f2"`
	if [ "$LEN" = "1" ] ; then
		echo "0$1"
	elif [ "$LEN" = "2" ] ; then
		echo "$1"
	else
		echo "$2 is invalid" >&2
		ERRORS=1
		export ERRORS
	fi
}

echo "Current system date: `date`"
echo ""

DAY=`date +%d`
MONTH=`date +%m`
YEAR=`date +%Y`
HOUR=`date +%H`
MIN=`date +%M`

# Get user responses
if getnum "Enter new day [$DAY]" ; then
	DAY=$TMP_STR
fi

if getnum "Enter new month [$MONTH]" ; then
	MONTH=$TMP_STR
fi

if getnum "Enter new year [$YEAR]" ; then
	YEAR=`echo "$TMP_STR" | tail -3c`
else
	YEAR=`date +%y`
fi

if getnum "Enter new time [$HOUR:$MIN]" ; then
	HOUR=`echo $TMP_STR | cut -d: -f1`
	MIN=`echo $TMP_STR | cut -d: -f2`
fi

DAY=`chk_size $DAY "Day"`
MONTH=`chk_size $MONTH "Month"`
YEAR=`chk_size $YEAR "Year"`
HOUR=`chk_size $HOUR "Hour"`
MIN=`chk_size $MIN "Minute"`

if [ "$ERRORS" = "1" ] ; then
    echo "Errors occured, no date changes made"
    exit 1
else
    echo "Issuing command: date $MONTH$DAY$HOUR$MIN$YEAR"
    date $MONTH$DAY$HOUR$MIN$YEAR
    echo "New date set to: `date`"
fi
