#!/bin/bash
#
# Wurde der Rechner per settime schlafen gelegt, muss es die Datei
# /etc/timediff geben. Zudem mssten wir uns in der Vergangenheit
# befinden, d.h. /etc/timediff ein nderungsdatum aus der Zukunft
# besitzen.

if [ -r /etc/timediff ]; then
  ModTime=$(date -r /etc/timediff +%s)
  Now=$(date +%s)
  
  if [ "${ModTime}" -gt "${Now}" ]; then
    # Die Rechner-Uhr luft in der Vergangenheit und muss um
    # die in /etc/timediff gespeicherte Zeit vorgestellt werden
    read Diff < /etc/timediff

    # Prfen, ob Diff nur aus Ziffern besteht
    if [ "${Diff}" -gt "0" ] 2>/dev/null; then
      # Systemzeit korrigieren
      date -s "+${Diff} sec" >/dev/null
      # Mainboard-RTC aktualisieren
      hwclock -w --noadjfile --utc
      echo "Correcting system time by ${Diff} seconds..."
      exit 0
    else
      echo "Wrong format of /etc/timediff. Aborting time correction."
      exit 1
    fi
  fi
fi
echo "RTC seems to be in the present, no time correction."
