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