1166060Smarius#!/bin/sh -
2166060Smarius#
3166060Smarius# Copyright (c) 2004  The FreeBSD Project
4166060Smarius# All rights reserved.
5166060Smarius#
6166060Smarius# Redistribution and use in source and binary forms, with or without
7166060Smarius# modification, are permitted provided that the following conditions
8166060Smarius# are met:
9166060Smarius# 1. Redistributions of source code must retain the above copyright
10166060Smarius#    notice, this list of conditions and the following disclaimer.
11166060Smarius# 2. Redistributions in binary form must reproduce the above copyright
12166060Smarius#    notice, this list of conditions and the following disclaimer in the
13166060Smarius#    documentation and/or other materials provided with the distribution.
14166060Smarius#
15166060Smarius# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16166060Smarius# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17166060Smarius# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18166060Smarius# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19166060Smarius# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20166060Smarius# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21166060Smarius# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22166060Smarius# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23166060Smarius# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24166060Smarius# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25166060Smarius# SUCH DAMAGE.
26166060Smarius#
27166060Smarius# $FreeBSD$
28166060Smarius#
29166060Smarius
30166060Smarius# PROVIDE: mixer
31166060Smarius# REQUIRE: FILESYSTEMS
32166060Smarius# KEYWORD: nojail shutdown
33166060Smarius
34166060Smarius. /etc/rc.subr
35166060Smarius
36166060Smariusname="mixer"
37166060Smariusrcvar="mixer_enable"
38166060Smariusstop_cmd="mixer_stop"
39166060Smariusstart_cmd="mixer_start"
40166060Smariusreload_cmd="mixer_start"
41166060Smariusextra_commands="reload"
42166060Smarius
43166060Smarius#
44178858Smarius# List current mixer devices to stdout.
45166060Smarius#
46166060Smariuslist_mixers()
47166060Smarius{
48166060Smarius	( cd /dev ; ls mixer* 2>/dev/null )
49166060Smarius}
50166060Smarius
51166060Smarius#
52166060Smarius# Save state of an individual mixer specified as $1
53166060Smarius#
54166060Smariusmixer_save()
55166060Smarius{
56166060Smarius	local dev
57166060Smarius
58166060Smarius	dev="/dev/${1}"
59166060Smarius	if [ -r ${dev} ]; then
60166060Smarius		/usr/sbin/mixer -f ${dev} -s > /var/db/${1}-state 2>/dev/null
61166060Smarius	fi
62166060Smarius}
63166060Smarius
64166060Smarius#
65166060Smarius# Restore the state of an individual mixer specified as $1
66172066Smarius#
67166060Smariusmixer_restore()
68166060Smarius{
69166060Smarius	local file dev
70166060Smarius
71166060Smarius	dev="/dev/${1}"
72166060Smarius	file="/var/db/${1}-state"
73166060Smarius	if [ -r ${dev} -a -r ${file} ]; then
74166060Smarius		/usr/sbin/mixer -f ${dev} `cat ${file}` > /dev/null
75166060Smarius	fi
76166060Smarius}
77166060Smarius
78166060Smarius#
79166060Smarius# Restore state of all mixers
80166060Smarius#
81166060Smariusmixer_start()
82166060Smarius{
83166060Smarius	local mixer
84166060Smarius
85166060Smarius	for mixer in `list_mixers`; do
86166060Smarius		mixer_restore ${mixer}
87166060Smarius	done
88166060Smarius}
89166060Smarius
90166060Smarius#
91166060Smarius# Save the state of all mixers
92166060Smarius#
93166060Smariusmixer_stop()
94166060Smarius{
95166060Smarius	local mixer
96166060Smarius
97166060Smarius	for mixer in `list_mixers`; do
98166060Smarius		mixer_save ${mixer}
99166060Smarius	done
100166060Smarius}
101166060Smarius
102225931Smariusload_rc_config $name
103225931Smariusrun_rc_command "$1"
104166060Smarius