#!/bin/bash
#
# VERSION=1
# CHANGES="prettier printout"

function log () {
	echo "[init_randomseed] ${1}"
}

[ -c /dev/urandom ] || exit 0

case "${1}" in
	start)
		# Load and then save 512 bytes,
		# which is the size of the entropy pool
		if [ -f /usr/conf/random-seed ]; then
			cat /usr/conf/random-seed > /dev/urandom
		fi
		rm -f /usr/conf/random-seed
		umask 077
		dd if=/dev/urandom of=/usr/conf/random-seed count=1 > /dev/null 2>&1
		res=${?}
		umask 022
		if [ ${res} -ne 0 ]; then
			log "Initializing random number generator: Failed."
			exit 1
		fi
		log "Initializing random number generator: Done."
		;;
	stop)
		# Carry a random seed from shut-down to start-up;
		# see documentation in linux/drivers/char/random.c
		umask 077
		dd if=/dev/urandom of=/usr/conf/random-seed count=1 > /dev/null 2>&1
		res=${?}
		umask 022
		if [ ${res} -ne 0 ]; then
			log "Saving random-seed: Failed."
			exit 1
		fi
		log "Saving random-seed: Done."
		;;
	restart)
		${0} stop
		${1} start
		;;
	*)
		echo "Usage: urandom {start|stop|restart}" >&2
		exit 1
		;;
esac
