#!/usr/sbin/openrc-run

description="Save and restore brightness level between restarts."

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

readonly SAVEFILE_PREFIX=/var/lib/initscripts/brightness
. /lib/init/vars.sh

do_status() {
	local label=$1 knob=$2 max=$3 file=$SAVEFILE_PREFIX${1:+.$1}
	test -e "$knob" || return 0
	MSG="Current${label:+ $label} brightness level is $(cat "$knob")"
	if test -f "$file"; then
		einfo "${MSG}, saved value is $(cat "$file")"
		return 0
	fi
	eerror "${MSG}, there is no saved value"
	return 4
}

do_start_one() {
	local label=$1 knob=$2 max=$3 file=$SAVEFILE_PREFIX${1:+.$1}
	test -e "$knob" || return 0
	test x"$VERBOSE" = x"no" || ebegin "Initialising $label brightness level"
	if test -f "$file"; then cat "$file" >"$knob"; else cat "$max" >"$knob"; fi
	local rv=$?
	test x"$VERBOSE" = x"no" || eend $rv
	return $rv
}

do_stop_one() {
	local label=$1 knob=$2 max=$3 file=$SAVEFILE_PREFIX${1:+.$1}
	test -e "$knob" || return 0
	test "$(cat $knob)" -eq 0 && return 0
	test x"$VERBOSE" = x"no" || ebegin "Saving $label brightness level"
	cat "$knob" >"$file"
	local rv=$?
	test x"$VERBOSE" = x"no" || eend $rv
	return $rv
}

do_invoke() {
	local rv=0 rc
	do_${1}_one '' /sys/class/backlight/acpi_video0/brightness /sys/class/backlight/acpi_video0/max_brightness; rc=$?; test $rc -lt $rv || rv=$rc
	do_${1}_one intel /sys/class/backlight/intel_backlight/brightness /sys/class/backlight/intel_backlight/max_brightness; rc=$?; test $rc -lt $rv || rv=$rc
	return $rv
}

start() { do_invoke start; return $?; }
stop() { do_invoke stop; return $?; }
reload() { start; return $?; }
