#!/bin/sh -e

prog="${0##*/}"
y=true

cleanup () {
  if test "$1" -ge 5 ; then
    service wtmpd stop
  fi
  if test "$1" -ge 4 ; then
    service utmpd stop
  fi
  if test "$1" -ge 3 ; then
    rc-update delete utmp-init boot
  fi
  if test "$1" -ge 2 ; then
    rc-update delete wtmpd boot
  fi
  if test "$1" -ge 1 ; then
    rc-update delete utmpd boot
  fi
}

while getopts 'yn' opt ; do
  case "$opt" in
    y) y=true ;;
    n) y=false ;;
    ?) echo "$prog: usage: $prog [ -y | -n ]" 1>&2 ; exit 100 ;;
  esac
  shift
done

if $y ; then
  rc-update add utmpd boot || { cleanup 0 ; exit 1 ; }
  rc-update add wtmpd boot || { cleanup 1 ; exit 1 ; }
  rc-update add utmp-init boot || { cleanup 2 ; exit 1 ; }
  service utmpd start || { cleanup 3 ; exit 1 ; }
  service wtmpd start || { cleanup 4 ; exit 1 ; }
  echo "$prog: utmps services are now enabled. Use $prog -n to disable them." 1>&2
  echo "$prog: note that user accounting may not be accurate until the next reboot." 1>&2
else
  cleanup 5
  echo "$prog: utmps services are disabled. Use $prog -y to reenable them." 1>&2
fi
