#!/bin/bash

# Der Wakeup-Zeitpunkt im BIOS muss auf den 1. des Monats um 00:00:00 Uhr
# eingestellt werden
BiosWakeup="2004-05-31 23:59:59"

# Aufwachzeit in Sekunden seit Epoch umrechnen
Wakeup=`date -d "$1" +%s`

if [ "$?" -eq "1" ]; then
  echo "No date or wrong date format."
  echo "Syntax:"
  echo "  settime \"YYYY-MM-DD hh:mm:ss\""
  exit 1
fi

Now=`date +%s`
Bios=`date -u -d "${BiosWakeup}" +%s`

if [ "${Wakeup}" -lt "${Now}" ]; then
  echo "Wakup Time is in past."
  exit 1
fi

# Zeitdifferenz zwischen Wakeup und aktueller Zeit in Sekunden ausrechnen
Diff=$[${Wakeup}-${Now}]

# Zeitdifferenz zwischen RTC und jetzt in Sekunden in Datei speichern
echo "$[${Now}-${Bios}+${Diff}]" > /etc/timediff

# Uhr zurück stellen
date -u -s "${BiosWakeup} ${Diff} seconds ago" >/dev/null

if [ "$?" -gt "0" ]; then
  echo "Can't change system date, not running as root?"
  exit 1
fi

# CMOS-Uhr aktualisieren
hwclock -w --utc
