#!/bin/sh
#Copyright: 2026 Aitor <aitor@genuen.org>
#License: CC0-1.0
#Comment: oneshot; invoke with: sv once urandom

exec 2>&1

ebegin() { [ "${VERBOSE:-}" = no ] || echo "$@"; }
eend() { r=${1:-0}; shift || true; [ "$r" -eq 0 ] || [ "${VERBOSE:-}" = no ] || echo "$*" >&2; return "$r"; }
einfo() { [ "${VERBOSE:-}" = no ] || echo "$@"; }
ewarn() { echo "$@" >&2; }
eerror() { echo "$@" >&2; }

/usr/lib/runit-services/stage1/sv once mountall-bootclean.sh || exit 1
/usr/lib/runit-services/stage1/sv once hwclock.sh || exit 1

[ -c /dev/urandom ] || exit 0
SAVEDFILE=/var/lib/urandom/random-seed
if ! POOLBYTES=$((
  ($(cat /proc/sys/kernel/random/poolsize 2>/dev/null) + 7) / 8
)); then
  POOLBYTES=512
fi
. /lib/init/vars.sh

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
eend $ES
exit 0
