#!/bin/sh
# Preserve console attributes around suspend/resume.
# suspend,resume: 01,99

CHVT="$(type -p chvt)"
FGCONSOLE="$(type -p fgconsole)"

[ -n "$CHVT" -a -n "$FGCONSOLE" ] || exit 0

lock=/var/run/apm/fgconsole
changeto=12

changevt()
{
	local to="$1"
	shift
	"$CHVT" "$to" &
	local pid="$!"
	local delay=200000
	local times=25
	local i
	for i in `seq 1 $times`; do
		kill -0 "$pid" 2>/dev/null || break
		usleep $delay
	done
	kill "$pid" 2>/dev/null
}

case "$1,$2" in
	suspend,*)
		"$FGCONSOLE" >"$lock"
		[ -s "$lock" ] &&
			changevt $changeto
		;;
	resume,suspend)
		[ -f /var/lock/subsys/consolesaver ] &&
			service consolesaver start
		[ -s "$lock" ] &&
			changevt `cat "$lock"`
		rm -f "$lock"
esac

exit 0
