#! /bin/sh
#
# urandom	This script saves the random seed between reboots.
#		It is called from the boot, halt and reboot scripts.
#
# Version:	@(#)urandom  1.33  22-Jun-1998  miquels@cistron.nl
#

[ -c /dev/urandom ] || exit 0
#. /etc/default/rcS

case "$1" in
	start|"")
		if [ "$VERBOSE" != no ]
		then
			echo -n "Initializing random number generator... "
		fi
		# Load and then save 512 bytes,
		# which is the size of the entropy pool
		if [ -f /etc/random-seed ]
		then
			cat /etc/random-seed >/dev/urandom
		fi
		# check for read only file system
		if ! touch /etc/random-seed 2>/dev/null
		then
			echo "read-only file system detected...done"
			exit
		fi
		# Make non sym-linked running path avoid calling realpath.
		if [ -h /etc/random-seed ]
		then
			rm -f `realpath /etc/random-seed`
		else
			rm -f /etc/random-seed
		fi
		umask 077
		dd if=/dev/urandom of=/etc/random-seed count=1 \
			>/dev/null 2>&1 || echo "urandom start: failed."
		umask 022
		[ "$VERBOSE" != no ] && echo "done."
		;;
	stop)
		if ! touch /etc/random-seed 2>/dev/null
                then
                        exit
                fi
		# Carry a random seed from shut-down to start-up;
		# see documentation in linux/drivers/char/random.c
		[ "$VERBOSE" != no ] && echo -n "Saving random seed... "
		umask 077
		dd if=/dev/urandom of=/etc/random-seed count=1 \
			>/dev/null 2>&1 || echo "urandom stop: failed."
		[ "$VERBOSE" != no ] && echo "done."
		;;
	restart)
		stop urandom
		start urandom
		;;
	*)
		echo "Usage: urandom {start|stop|restart}" >&2
		exit 1
		;;
esac
