mixer revision 127043
1#!/bin/sh - 2# 3# Copyright (c) 2004 The FreeBSD Project 4# All rights reserved. 5# 6# Redistribution and use in source and binary forms, with or without 7# modification, are permitted provided that the following conditions 8# are met: 9# 1. Redistributions of source code must retain the above copyright 10# notice, this list of conditions and the following disclaimer. 11# 2. Redistributions in binary form must reproduce the above copyright 12# notice, this list of conditions and the following disclaimer in the 13# documentation and/or other materials provided with the distribution. 14# 15# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25# SUCH DAMAGE. 26# 27# $FreeBSD: head/etc/rc.d/mixer 127043 2004-03-15 23:09:17Z jhb $ 28# 29 30# PROVIDE: mixer 31# REQUIRE: LOGIN usbd 32# KEYWORD: FreeBSD 33 34. /etc/rc.subr 35 36name="mixer" 37stop_cmd="mixer_stop" 38start_cmd="mixer_start" 39reload_cmd="mixer_start" 40extra_commands="reload" 41 42# 43# List current mixer devices to stdout. 44# 45list_mixers() 46{ 47 48 ( cd /dev ; ls mixer* 2>/dev/null ) 49} 50 51# 52# Echo state file name for an individual mixer ($1) to stdout 53# 54mixer_statefile() 55{ 56 echo "/var/db/${1}-state" 57} 58 59# 60# Save state of an individual mixer specified as $1 61# 62mixer_save() 63{ 64 local file dev 65 66 dev="/dev/${1}" 67 file=`mixer_statefile $1` 68 if [ -r ${dev} ]; then 69 /usr/sbin/mixer -f ${dev} -s > ${file} 2>/dev/null 70 fi 71} 72 73# 74# Restore the state of an individual mixer specified as $1 75# 76mixer_restore() 77{ 78 local file dev 79 80 dev="/dev/${1}" 81 file=`mixer_statefile $1` 82 if [ -r ${dev} -a -r ${file} ]; then 83 /usr/sbin/mixer -f ${dev} `cat ${file}` > /dev/null 84 fi 85} 86 87# 88# Restore state of all mixers 89# 90mixer_start() 91{ 92 local mixer 93 94 for mixer in `list_mixers`; do 95 mixer_restore ${mixer} 96 done 97} 98 99# 100# Save the state of all mixers 101# 102mixer_stop() 103{ 104 local mixer 105 106 for mixer in `list_mixers`; do 107 mixer_save ${mixer} 108 done 109} 110 111load_rc_config $name 112run_rc_command "$1" 113