#!/usr/sbin/openrc-run

description="Save and restore random seed between restarts."

depend()
{
	need mountall-bootclean.sh hwclock.sh
	provide urandom
}

SAVEDFILE=/var/lib/urandom/random-seed
[ -c /dev/urandom ] || exit 0

if ! POOLBYTES=$((
  ($(cat /proc/sys/kernel/random/poolsize 2>/dev/null) + 7) / 8
)); then
  POOLBYTES=512
fi
. /lib/init/vars.sh

start()
{
	[ "$VERBOSE" = no ] || ebegin "Initializing random number generator"
	(
	  date +%s.%N
	  if [ -f "$SAVEDFILE" ]; then
		  cat "$SAVEDFILE"
	  fi
	) >/dev/urandom
	umask 077
	dd if=/dev/urandom of=$SAVEDFILE bs=$POOLBYTES count=1 >/dev/null 2>&1
	ES=$?
	umask 022
	[ "$VERBOSE" = no ] || eend $ES
	return 0
}

stop()
{
	[ "$VERBOSE" = no ] || ebegin "Saving random seed"
	umask 077
	dd if=/dev/urandom of=$SAVEDFILE bs=$POOLBYTES count=1 >/dev/null 2>&1
	ES=$?
	[ "$VERBOSE" = no ] || eend $ES
	return 0
}
